這篇文章是我在FB社團文章的延伸(文章留言也記得看看,很棒的討論),更深入的去說明幾種進場寫法在XQ的執行上所產生的差異,及對後續策略執行的影響,我覺得是還滿重要的,搞清楚可以避免在交易時發生一些奇奇怪怪的問題
寫法1: 所有判斷式都寫在一起
這是最糟糕的狀況,因為XQ會一直執行這個進場的判斷,如果符合,就會要執行setposition,就會出現無效交易指令的訊息,而出現這個無效交易指令訊息最大的問題在哪呢? 那就是會中斷了後面的出場計算,就是說只要進場一直出現無效交易指令,那策略就永遠不會出場了
像是下面的寫法,都是會一直出現無效交易,一定要避免
寫法2: 把邏輯判斷分成主要+次要
將邏輯分成主要跟次要,要先符合主要邏輯然後在執行次要邏輯,這樣的寫法基本上對了,但還是有可能出現無效交易指令的訊息,如下面範例的寫法,即使開了逐筆洗價,這些函數的最小時間單位似乎為1秒,所以就算進場後馬上成交,但如果那一秒還沒結束,而價格仍然在變動,在逐筆洗價的狀況就會出現出現無效交易指令的訊息,如下圖,09:00:00.187 雖然成交了,但後面成繼續出現無效交易指令的訊息
範例1
if currenttime=090000 then begin
if 進場邏輯 then setposition(1);
end;
範例2
if date<>date[1] then begin
if 進場邏輯 then setposition(1);
end;
寫法3: 主要邏輯判斷為position+次要邏輯
把主要邏輯放上position,會是最好的做法,因為position是採用了intrabarpersist的計算方式,只要position一變動,數值馬上變動,不符合就不會執行次要邏輯,自然就不會出現無效交易指令的訊息
if position=0 then begin
if 進場邏輯 then setposition(0);
end;
小結
交易算是新的功能,很多時候也不知寫法上在哪裡要注意的,這篇希望能幫助大家少走一點冤枉路喔~~
如果您願意支持A+策略網繼續提供優質好文,歡迎使用我們的XQ推薦碼@VIP999訂閱模組,只要您持續訂閱XQ模組,就可以是我們的VIP會員,閱讀VIP文章喔,詳細說明,請看這邊
Image by Freepik
發佈留言
很抱歉,必須登入網站才能發佈留言。