交易進場寫法在執行上的差異比較

1Shares
Image
這篇文章是我在FB社團文章的延伸(文章留言也記得看看,很棒的討論),更深入的去說明幾種進場寫法在XQ的執行上所產生的差異,及對後續策略執行的影響,我覺得是還滿重要的,搞清楚可以避免在交易時發生一些奇奇怪怪的問題
寫法1: 所有判斷式都寫在一起
這是最糟糕的狀況,因為XQ會一直執行這個進場的判斷,如果符合,就會要執行setposition,就會出現無效交易指令的訊息,而出現這個無效交易指令訊息最大的問題在哪呢? 那就是會中斷了後面的出場計算,就是說只要進場一直出現無效交易指令,那策略就永遠不會出場了
像是下面的寫法,都是會一直出現無效交易,一定要避免
  • if position=0 and  進場邏輯 then setposition(1);
  • if date<>date[1] and  進場邏輯 then setposition(1);
  • if date<>date[1] and  進場邏輯 then setposition(1) else setposition(-1);
  • if date<>date[1] and currenttime=090000 and 進場邏輯 then setposition(1);
寫法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

1Shares


發佈留言

在〈交易進場寫法在執行上的差異比較〉中有 2 則留言

  1. 「Reki」的個人頭像
    Reki

    要克服逐筆洗價交易失敗,只要下單的判斷加上”是否為同一根 bar”的條件就行,同一根 bar就不執行 SetPosition

    1. 「查理哥」的個人頭像

      感謝,這個辦法好

相關文章

[VIP] 當沖交易如何做到收K進場即時出場2

上一篇文章大概說明了如何在逐筆中運用condition[1]做到收K進場,即時出場,不過,這樣的運用還有些需要注意的細節,將會在本篇文章說明,不過寫的有點複雜,請耐心閱讀,對你的回測一定會有幫助的。

當沖交易如何做到收K進場即時出場1

想要讓回測績效貼近實單績效,你一定要知道如何做到收K進場即時出場,本文將不同的回測設定與程式碼撰寫方式做了比較,證明在逐筆回測中是可以收K後進場的,而且這樣的作法,自動交易也可以執行,不需要向過往把進場跟出場分開寫,更容易維護策略。

20250322[貓老大][XQ週末特訓班][講義下載]飆股的起點

貓老大「飆股的起點」講座資料,需要的請註冊後到最下方點下載,包含有講義跟XQ 雷達檔

[VIP] XQ自動交易不採坑: 交易進場日跟選股一致了嗎? (月、季、年資料)

上一篇跟大家分享了把日資料選股條件寫成自動交易腳本的正確方式,這篇文章將要繼續來分享月、季、年資料選股條件在自動交易內的正確撰寫方式。

最近發文

加入我們

Categories

最新留言