範例中的改價交易腳本

  •   203 
  • 最後發表   XQYi  2024 二月 01
XQYi 發文於   2023/12/11

範例腳本如下

其中 if Position = 1 and TrueAll(Position <> Filled, 3) ...;代表著連續三根K棒都沒有成交
此K棒在日逐筆交易中,也可指3筆Tick ,或者需要改其他函數?

 

 

value1 = Average(Close, 5);

value2 = Average(Close, 20);

long_condition = value1 cross over value2;

exit_long_condition = value1 cross under value2;

 

if Position = 0 and long_condition then begin

SetPosition(1, value1); { 以5日均線的價格買進 }

end;

 

if Position = 1 and exit_long_condition then begin

SetPosition(0); { 多單全部平倉 }

end else if Position = 1 and TrueAll(Position <> Filled, 3) then begin

送出買進委託後, Position = 1, 如果成交了, Filled = 1,

Position <> Filled 在這裡則代表著委託已經送出, 可是還沒有成交,

 

Position, Filled, 跟value1, value2, Close一樣, 都是一個"序列",

 

所以Position[1]是上一根K棒最後的Position, Filled[1]是上一根K棒最後的Filled,

 

所以TrueAll(Position <> Filled, 3) 代表著連續三根K棒都沒有成交

}

SetPosition(1, Close); { 修改委託價格為目前成交價 }

end;

XQ小幫手 發文於   2024/02/01

Hello, xqyi.

 

在逐筆交易中仍是代表依您自動交易設定分K的狀態,

假設腳本是跑在一分K上,而現在是13:11:04,TrueAll(Position <> Filled, 3)系統會去確認13:09 以及 13:10是否有符合Position <> Filled,

也就是說Position[2] <> Filled[2] and Position[1] <> Filled[1],才會開始跑13:11:04,

13:11:05時,同樣去確認13:09 以及 13:10 是否符合才確認13:11:05這筆,並非 確認13:10:51 13:11:04 13:11:05這三筆,

 

Position 以及 Filled 是一個intrabarpersist的數值序列,

您可以參考這篇文章,

https://www.xq.com.tw/lesson/xspractice/%E8%B3%87%E6%96%99%E8%AE%80%E5%8F%96%E7%AF%84%E5%9C%8D%E8%88%87%E8%85%B3%E6%9C%AC%E5%9F%B7%E8%A1%8C%E7%9A%84%E9%97%9C%E4%BF%82/

至於您想要三次逐筆洗價未成交,您可以宣告一個變數來計算,或者設定時間超過N秒沒成交改價,

 

謝謝。

發表回覆
Close