XS語法在不同時段執行不同交易策略

  •   157 
  • 最後發表   幽靈股堡  2023 十月 24
幽靈股堡 發文於   2023/10/09

我想要讓程式交易在9點到22點在出現做多做空訊號時 不斷買賣交易,但到了22點後 就不交易 且24點一定要平倉空手

但我回測結果 他還是不斷在22點過後一直買賣,是哪裡出了錯誤嗎??

if time>=090000 and time<220000 then  

 

begin 

 var:  

long_condition(false), { 是否做多 } 

exit_long_condition(false), { 是否多單出場 } 

short_condition(false), { 是否做空 } 

exit_short_condition(false); { 是否空單出場 } 

 

if Position <> 1 and long_condition then begin 

{ 如果符合做多情境(long_condition), 則把部位變成1 (可能是0->1 or -1->1) } 

SetPosition(1); 

 

end else if Position <> -1 and short_condition then begin 

{ 如果符合做空情境(short_condition), 則把部位變成-1 (可能是0->-1 or 1->1) } 

SetPosition(-1); 

 

end else if Position = 1 and exit_long_condition then begin 

{ 如果已經做多, 且發生多方出場情形時(exit_long_condition), 則把部位變成0 } 

SetPosition(0); 

 

end else if Position = -1 and exit_short_condition then begin 

{ 如果已經做空, 且發生空方出場情形時(exit_short_condition), 則把部位變成0 } 

SetPosition(0); 

end; 

end 

 

else if time>=220000 and time<240000 then 

 

begin 

 if Position = 1 and exit_long_condition then begin 

{ 如果已經做多, 且發生多方出場情形時(exit_long_condition), 則把部位變成0 } 

SetPosition(0); 

 

end else if Position = -1 and exit_short_condition then begin 

{ 如果已經做空, 且發生空方出場情形時(exit_short_condition), 則把部位變成0 } 

SetPosition(0); 

end; 

end 

 

else if time=240000 then  

   

begin 

 if Position > 0 and exit_long_condition then begin 

SetPosition(0); { 多單全部出場: 把Position調成0, 使用預設賣出價格 } 

 

end else if Position < 0 and exit_short_condition then begin 

SetPosition(0); { 空單全部回補: 把Position調成0, 使用預設買進價格 } 

end; 

end;

排序方式: 標準 | 最新
XQ小幫手 發文於   2023/10/17

 Hello 幽靈股堡,

 

小幫手這邊使用腳本簡單回測測試沒有發生您所說的狀況。(參考附圖)

麻煩您提供 交易腳本、回測的設定(截圖或回測報告皆可)、 XQ Log 讓相關人員確認。

Log資料夾(預設路徑:C:\SysJust\XQLite\LOG)直接壓縮後提供即可。

您可以直接將檔案上傳,如果檔案過大的話也可以保存到雲端後將連結Mail至客服信箱 XQservice@XQ.com.tw 且務必附上 討論文章連結網址(小幫手才能盡早處理)。

感謝。

附加文件

幽靈股堡 發文於   2023/10/17

假設我使用符合做多做空的條件如件,是不是我不應該在符合做多做空的then後面寫setposition(1,market),這樣會導致她優先讀取成交條件才不斷執行買賣 無法讓他在22點過後不動作? 那我符合做多做空的條件該怎麼寫呢??

XQ小幫手 發文於   2023/10/24

 Hello 幽靈股堡,

 

您可以用條件來限制交易。

舉例來說:

if position < 0 and open cross above sarValue then setposition(1, market);

這樣就只有在空方的時候條件符合才會執行,減少交易指令撞到的機會。

可參考 自動交易語法介紹

 

另外如果有想要優先執行的交易指令,可以依順序撰寫腳本。

舉例來說,若希望確保停損停利一定要執行的話,可以先撰寫停損停利出場的部分,再撰寫條件決定進場的部分。

發表回覆
Close