請問小幫手,我想要知道我設定的分K頻率,例如設定兩分K,但是我要怎麼判斷目前這跟K棒已經完成開始進行下一根?
怎麼判斷K棒已經結束
- 486
- 最後發表 HAO123 2022 五月 25
Hello HAO123,
如果您是使用非逐筆洗價的話,那麼一根Bar只會計算一次。
若是非逐筆洗價的話,您可以使用 intrabarpersist 的變數來記錄time,接著再與下次的time比較。
舉例來說:
var: intrabarpersist _next_bar(0);
condition1 = _next_bar <> 0 and _next_bar <> time; //如果time不相同的話,代表換bar了
if _next_bar <> time then _next_bar = time; //換bar的話就更新time
condition1 就會是這次洗價是否有換Bar。
你好,因為我是盤中使用自動交易,但是我有需求是只有當下的K棒發生相應的條件,才會觸發進出場,想請教逐筆洗價的話,應該要怎麼判斷呢
我能想到的就是用 CurrentTime 去趨近(判斷到秒數), 這個邏輯在流動性差的商品裡, 很可能會失效
Hello HAO123,
您沒辦法預知該筆洗價(交易)是否會是該分鐘最後一筆交易,所以沒辦法在該筆洗價當下就知道該根Bar結束。
一定是要到下一根Bar開始後,您才能夠確認前一根Bar已經結束。
所以小幫手上面的寫法才會是當time變動時判斷前根Bar剛結束。
需注意time代表的是該根Bar開始的時間 (有變就代表換Bar),和currenttime是當下的本機時間不同。
感謝 貓老大 的熱心回覆。
但是我想知道的是 "逐筆洗價" 的狀況下,我要怎麼知道已經是下一根bar了呢
Hello HAO123,
如同小幫手上面寫的範例:
ar: intrabarpersist _next_bar(0);
condition1 = _next_bar <> 0 and _next_bar <> time; //如果time不相同的話,代表換bar了
if _next_bar <> time then _next_bar = time; //換bar的話就更新time
如果 condition1 為 True 的話就是換Bar,condition1 為 False 的話就是同一根Bar。
您可以在執行時將condition1 print出來即可了解。
需注意XQ 的 time 是 Bar 的開始時間,所以在同一根Bar內的時候都會是相同數字。
舉例來說,1分鐘逐筆的狀況下,只要是成交在 09:00 ~ 09:01 這段時間的交易,time回傳的數字都會是090000。
謝謝小幫手回復
7 評論