• 6月期货各品种平仓须知
  • 交易学院

    汇聚金融精英,交易达人,资深专家,打造以交易为中心的投资人生态圈

    收盤價一直在變動

    Zb263 2021年09月16日 交易学院 400 0

    因爲盤中的收盤價一直在變動,剛好收盤價正在跨越5均線 的時候,從下方向上跨越時出現買進訊號是正常的,但是在同一 根K線價格又從5均線的上方往下跨越,這又形成賣出訊號, 對程式來說,這都是對的事情,但是這可不是我們要的。我把程 式加入一行指令如下:

    Parameters: Length(5)

    VARS:均線(0);

    均線=MA(CZ5)

    IF CLOSE > 均線 THEN

    BUY ("買 ”)THIS BAR AT MARKET

    END IF

    IF CLOSE < 均線 THEN

    SELL ("賣 “)THIS BAR AT MARKET

    END IF

    PRINT (CDATE (date) ,CTIME(TIME) ,C,"=收盤",均線,

    "=5均線")

    這一行粗體的PRINT指令是硏發程式過程中,相當好用的除 錯工具,用來顯示每一根K線當時的數値,這一行指令會產生如 下的效果,這樣可清楚看到某日期、某時間的K線,其當時的數 値


    接下來才是重點-請再看看這張圖我加上框線處,然後跟上 面的圖做一下比較。發現了嗎? 一樣的2007/02/13                               11 : 30

    的K線,收盤價是不一樣的,甚至5均線也是不一樣的!原因 就是在上面的圖執行時,其實是在過了 11 : 25但是還未到11 : 30的時候執行,也就是說這一根K線是「正在形成中」的,而 下面的圖執行的時間已經過了 11 : 30 >所以11 : 30的資料已經 是固定的。當然'讀者可以推測得到'下面圖中11: 35的數値,

    国际期貨操作不靠內線

    想必如果再執行一張圖出來,就又是不同的數値了。

    以這樣的實際執行,就可以看出使用當下K線的資料有多 大的陷阱在,但這絕對不是請你就不要利用當下K線的資料, 只是一方面想讓您知道,使用這樣的資料必須有多謹慎,另一方 面,當您聽到市場上一些好像很妙的操作言論時,請在您心中悄 悄地做些嚴謹的定義與思考,畢竟市場上很多雜七雜八的消息, 別太容易被騙了。

    剛剛這兩張圖我們還看到連5均價的數値都會變,爲什麼? 聰明如您的讀者應該已經想到了。既然當下的收盤價,也就是最 新的收盤這個數字會變化,那麼採用了最近的5個收盤價去計算 的5均價,自然是把最新的收盤價包含進去加以計算了,那麼這

    魔鬼在細節

    個5均價的數値自然是會變化的,這樣的數値會隨著採樣的範圍 越大變化越小、範圍越小變化越大,是一種反比的狀況,對程式 的運作不見得會產生很大的BUG,但是常常會在致命的時候產 生致命的錯誤。

    接著我們繼續修改這個程式。既然是收盤價會變動,導致當 下觸發買賣訊號的機制會出現反覆交易,那麼有兩個解決 *** , 一個是不要用當下的收盤價,一個是把交易的動作往後移。我依 序把這兩種方式都寫出程式碼給讀者體會。

    這是不使用當下收盤價的方式(5均線當然也就使用到前一 根K線,不採用當下的),我使用前一根的收盤價來決定是否現 在要買賣。程式碼中一倂加入PRINT來檢視效果:

    Parameters:

       

    Length(5)

       

    VARS:均線(0)

       

    均線=MA(C,5)

       

    IF CLOSE[1]

       

    > 均線[1] THEN

       

    BUY ("買")

       

    THIS BAR AT MARKET

       

    END IF

       

    IF CLOSE[1]

       

    < 均線[1] THEN

       

    SELL ("賣 ”)THIS BAR AT MARKET

    END IF

    PRINT (    CDATE (date) , CTIME (TIME) , C [ 1], ” =收盤",

    均線[1] , " = 5均線")

    PRINT ("現”,CDATE (date) , CTIME (TIME) , C,"=收盤", 均線,” =5均線")

    国际期貨操作不靠內線

    我們看看數値的變化 > 讓一個使用當下的資料與一個使用前 一根K線的資料並列,就可以比對出有什麼不同。這的確是需 要一些想像力的,請讀者盡力,因爲這樣的觀念很重要,所以我 用了相當多的篇幅來詮釋。

    這樣的程式碼在流程上,因爲是使用已經固定的K線的收 盤價來決定現在是否做買賣的動作,所以理論上應該是要成交在 現在K線的「開盤價」,而不是收盤價,注意一下時間的推進觀 念,當前一根K線結束才產生了不再變化的收盤價,而當這個 數字產生的時候,交易的時間最快也只能在現在的開盤價,對不 對?所以我們這個程式碼,就不應該用在市價成交的指令,因爲 前篇的例子「突破5日高低」已經解釋了市價兩個字紀錄成收盤 價,所以這個程式,必須再修改如下就0K 了 :


     

    Parameters: Length(5)

    VARS:均線(0);

    均線=MA(C, 5)

    IF CLOSE [1] > 均線[1] THEN

    BUY ("買 1") THIS BAR AT OPEN OR HIGHER

    BUY ("買 2") THIS BAR AT OPEN OR LOWER

    END IF

    IF CLOSE [1] < 均線[1] THEN

    SELL ("賣 1") THIS BAR AT OPEN OR HIGHER

    SELL (”賣 2") THIS BAR AT OPEN OR LOWER

    END IF

    接著再看另外一種的處理方式:把交易的動作往後移。就是 仍然引用現在正在變化的收盤價與5均線,但是不做任何動作, 把動作後推到下一根K線出現時才發出訊號。程式碼如下:

    Parameters: Length(5)

    VARS:均線(0);

    均線=MA(C, 5)

    IF CLOSE > 均線 THEN

    BUY ("買")NEXT BAR AT MARKET

    END IF

    IF CLOSE < 均線 THEN

    SELL ("賣 ”)NEXT BAR AT MARKET

    END IF


     

    很清楚的看到跟原本程式的差別只是從This Bar變成 Next Bar,也就是買賣指令一律在下一根K線才出現。現在發 揮一下您的想像力,我們來看看這樣的程式碼的流程,因爲盤中 的收盤價與5均線依然是一直在變化的,也就是說,其實這一塊 的指令,是一直在發出買進訊號的,只是在介面上(也就是K 線圖)上看不到。

    IF CLOSE > 均線 THEN

    BUY ("買 “)NEXT BAR AT MARKET

    END IF

    可以感覺到差別嗎? HTS是把這個買進訊號與賣出訊號一 直憋住,它有觸發買進動作與賣出動作,只是沒有說出來,而上 一個修改方案的使用上一根的資料則是不會觸發訊號,請讀者要 仔細分辨其中的差別,雖然這兩個方式最後的結果會是一樣,都 不會出現反覆買進又賣出的狀況,但是本質上是不同的,這樣的 思考與分辨對這個case來說不會有什麼影響,但是對建立自己 的系統化思考與邏輯能力就很重要,您讀這本書真正應該學習的 是建立在自身邏輯推演與系統化思考的能力。

    image.png

    image.png

    image.png


    猜你喜欢

    发表评论

    发表评论: