請問交易腳本順序問題

  •   424 
  • 最後發表   orange_trade  2 週前
orange_trade 發文於   2021/11/20

 

腳本A:

if time>=090000 then setposition(-1,market);

if time>=093000 then setposition(0,market);

//////////////////////////////

腳本B:

if time>=093000 then setposition(0,market);

if time>=090000 then setposition(-1,market);

 

想請問上述腳本A與腳本B為什麼回測出來結果不同?想請問執行腳本的順序是每一根K棒都會直接完全部在換下一根嗎?

排序方式: 標準 | 最新
XQ小幫手 發文於   2021/11/23

Hello orange_trade,

 

您可以參考 SetPosition 的說明。

目前XS自動交易的執行方式是只執行第一個交易指令,忽略之後的交易指令。

所以腳本A只會執行 setposition(-1,market),而腳本B當時間到了 09:30 以後只會執行 setposition(0,market),在那之前則是 setposition(-1,market)。

小幫手看不懂您關於腳本順序的問題,不過如果是逐筆洗價的話是每次洗價腳本就會運行一次,而未逐筆洗價的話則是該根Bar完成後運算。

orange_trade 發文於   2021/11/23

謝謝小幫手回答:

意思是說A腳本再執行回測的時候 

if time>=090000 then setposition(-1,market);  執行完之後自動忽略下一行

if time>=093000 then setposition(0,market);  (所以這一行不會被執行到)

那我的問題是如果照這個邏輯來說

B腳本應該也要只會執行到第一行後面忽略 所以下一行的

"if time>=090000 then setposition(-1,market); "

不會被執行到這樣對嗎?

 

if time>=093000 then setposition(0,market); 執行完之後忽略下一行

if time>=090000 then setposition(-1,market); (不會執行)

 

但結果會是B腳本也會執行到第2行  想請問的部分是這邊

XQ小幫手 發文於   2021/11/25

Hello orange_trade,

 

執行完並不是忽略下一行,而是當有一個交易指令執行後,後面的交易指令都會被忽略。

策略A的狀況因為第一行條件是時間要大於九點,第二行條件是時間要大於九點半,所以第二行符合時第一行一定也會符合。

因此第一行的交易指令先執行了,第二行的交易指令就被忽略了。

策略B的狀況則是相反,第一行的條件是要時間大於九點半,第二行的條件是時間大於九點,所以會發生第二行符合第一行不符合的狀況 (當時間位於九點到九點半之間)。

此時第一行交易指令因為條件不符合所以不會執行,那麼第二行交易指令就不會被忽略,判斷條件符合的話就會執行。

 

您可以參考官網上的教學區,裡面有XS語法的基礎與應用。

orange_trade 發文於   2021/11/25

謝謝小幫手我理解了

發表回覆
Close