台指期符合出場條件後延後1分鐘出場

  •   280 
  • 最後發表   TaylorYue  2024 五月 09
TaylorYue 發文於   2023/12/04

想問一下小幫手,在5min的策略中我想要在符合condition1[1]時(逐筆洗價下),延遲1min市價出場

可以怎麼處理?

舉例在11:45:00收K時,原本符合條件市價出場,我想改成在11:46:00時市價出場。(希望在不調整時間架構的情況下)

謝謝小幫手~

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

Hello TaylorYue,

 

如果您是逐筆洗價的話有辦法做到,只要使用 intrabarpersist 的變數紀錄符合條件的時間,並搭配 TimeDiffTimeAdd 來設定條件。

舉例來說:

var: intrabarpersist _time(0);

 

condition1 = 進場條件;

 

if condition1 and _time = 0 then _time = currenttime;

 

if AbsValue(timediff(currenttime, _time, "M")) >= 1 and position = 0 and filled = 0 then setposition(1, market);

 

  • 按讚來自於
  • kelvin85520
散散惹人愛 發文於   2024/05/08

 同問 延伸

 AbsValue(timediff(currenttime, _time, "M")) >= 1 

這部分 是指 無論如何 當 condition1 = 進場條件,成立後, 過1 分鐘 必然 setposition(1, market)?


請問 如果想 過一分鐘 或者經過數分鐘? 依然 成就 condition1 ,始觸發條件 setposition(1, market)? 

問2:原先condition1 條件之中不能 設置 currenttime>091000 之類的,會是這個原因?

回測幾次改過幾個描述都難以達成 ,再請小幫手進一步解答

XS小編 發文於   2024/05/09

 Hello 散散惹人愛,

 

上面的範例中是當 condition1 第一次成立時保存當下的currenttime,然後在沒有部位庫存,且距離保存的時間超過1分鐘以上的話就執行setposition(1, market)。

由於 _time 已經保存了成立當下的 currenttime,所以不論條件成立持續成立多久,或是馬上就轉向不成立了,進場判斷都不會受condition1變化影響,除非 _time 再度歸0。

而 timediff 會計算兩個時間的差值,加上 absvalue 是為了避免換日的狀況。

 

要使用的話需要考量到策略是如何運作的並作對應的修改。

舉例來說即時的狀況下,若在資料讀取筆數運算時條件就符合的話會保存當下的時間,故應該要避開在資料讀取筆數時運作。

且出場後應該要重置 _time 為0讓其可以在下次條件符合後再度進場。

 

建議您可以將相關數值print出檢查,會比較容易知道遇到的狀況。

若還是有問題的話,麻煩您提供腳本、回測的設定(截圖或回測報告皆可) 並告知有問題的部分讓小編確認。

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

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

感謝。

發表回覆
Close