要怎麼控制幾點幾分進出場?

  •   421 
  • 最後發表   Albert3919  2025 四月 07
Albert3919 發文於   2025/03/30

本人剛接觸程式碼,還不是很了解,想請問如果我想要9:05進場,並且在13:20出場完成當沖,要怎麼寫才對,感謝大家

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

若你的頻率是1分K或5分K,

if time=090500 and position=0 then setposition(1,market);

if time=132000 and position>0 then setposition(0,market);

Albert3919 發文於   2025/03/30

input: entry_time(090500, "進場時間(HHMMSS)"); // 預設開盤後5分鐘進場

input: exit_time(132000, "出場時間(HHMMSS)"); // 預設收盤前10分鐘出場

 

// 策略執行

if time = entry_time and position = 0 then begin

    // 開盤做空

    setposition(-1, market);

    print("開盤做空進場,時間:", time);

end;

 

if time = exit_time and position < 0 then begin

    // 尾盤平倉

    setposition(0, market);

    print("尾盤平倉出場,時間:", time);

end;

以上是我的程式碼,但是回測後,卻沒有任何進場紀錄(過去5年交易次數為0),想請教您這是哪邊出了問題,非常感謝您願意回答我

虎科大許教授 發文於   2025/03/30

你的策略,回測是OK的。要注意的是,選擇的頻率只能是1分鐘或5分鐘。

Albert3919 發文於   2025/03/31

但如果想要用日K來回側有辦法嗎? 該怎麼改寫比較好?

虎科大許教授 發文於   2025/03/31

日頻率之下,Time永遠為0,必須改用currentTime,但currentTime=090500,必須分秒不差才會符合條件,所以最好改成一段期間,例如,if currentTime>=090500 and currentTime<091000 then ...

XS小編 發文於   2025/04/07

Hello Albert3919,

 

小編補充,可以使用跨頻率的Time來當作條件,例如 GetField("Time", "1") 就會是對應的1分鐘Bar的Time。

另外需注意XQ K棒上標示的時間是K棒開始的時間,所以1分鐘頻率下 090500 會是在 09:05 ~ 09:06 之間。

發表回覆
Close