有關指定時間強制平倉語法

  •   428 
  • 最後發表   大A  2025 四月 30
大A 發文於   2025/04/18

可以請問以下有關當日13點強制平倉的語法那邊有問題,因為今日沒有觸發強制平倉的訊號,(自動交易中心的策略部位是選自動執行有部位商品及庫存異動時自動同步數值),主頻率為1分K,標的為昨日由選股中心選出後執行策略進場。 

var: hasPosition(false) ,x(0);

hasPosition = position <> 0 and filled <> 0 and filledAvgPrice > 0;

if time >= 090000 and time < 093000 then x = getField("Low","D");

if currentTime >=090500 and currentTime<=091000 then begin

if position=0 and filled=0 and condition1  

and (condition3 or condition4) 

then begin setposition(1,market);

end;

end;

if position>0 and filled>0 then begin 

if close>=value3*D2 then begin setposition(0,market);  //value3為當日開盤價,D2為停利1.02%

end else if close<=filledAvgPrice*0.99 then begin setposition(0,market);

end else if time >= 093100 and close cross Under x  then begin setposition(0,market);

end else if hasPosition and (time = 130000 or currentTime = 130000) then begin setPosition(0, market);

end;

end;

end;

排序方式: 標準 | 最新
虎科大許教授 發文於   2025/04/18

你的主頻率是1分鐘。若130000那根K棒沒有Tick發生,則不會執行平倉的交易指令。

大A 發文於   2025/04/18

目前知道的情況是在策略中已先有使用過 if time......的語法,之前要再用 if time....來強制平倉,用condition=if time...來處理就行,回測後的確就都有在指定時間平倉

XS小編 發文於   2025/04/23

Hello 大A,

 

指定時間強制平倉的語法有一個要注意的點,就是策略是否有洗價。

若策略設定為逐筆洗價或是定時洗價,但商品在條件時間內沒有發生交易的話,那麼策略沒有洗價運算自然不會觸發。

建議可以將策略的自動洗價也勾選,確保策略在一定間隔內都會運算。

 

另外,currentTime = 130000 會觸發的可能性相對較低 (要策略剛好在本機時間 13:00:00 時運算)。

如果要使用 currenttime 的話,最好用包含一段區間的方式,例如 currenttime >= 130000 and currenttime <= 130100。

大A 發文於   2025/04/23

是的,我是改成time>=130000,再請問一下,若是主頻率是日K,要怎麼寫每日13點平倉的語法,因為我用分K的寫法,在主頻率是日K的時候,是不會平倉的?

虎科大許教授 發文於   2025/04/23

 主頻率是日K時,要改成 currenttime >= 130000

XS小編 發文於   2025/04/30

Hello 大A,

 

小編補充,time 在日頻率的狀況下會回0。

如果您是用 time>=130000 來做判斷的話會出錯。

發表回覆
Close