想問一下小幫手,在5min的策略中我想要在符合condition1[1]時(逐筆洗價下),延遲1min市價出場
可以怎麼處理?
舉例在11:45:00收K時,原本符合條件市價出場,我想改成在11:46:00時市價出場。(希望在不調整時間架構的情況下)
謝謝小幫手~
 
        
        想問一下小幫手,在5min的策略中我想要在符合condition1[1]時(逐筆洗價下),延遲1min市價出場
可以怎麼處理?
舉例在11:45:00收K時,原本符合條件市價出場,我想改成在11:46:00時市價出場。(希望在不調整時間架構的情況下)
謝謝小幫手~
Hello TaylorYue,
如果您是逐筆洗價的話有辦法做到,只要使用 intrabarpersist 的變數紀錄符合條件的時間,並搭配 TimeDiff 或 TimeAdd 來設定條件。
舉例來說:
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);
同問 延伸
AbsValue(timediff(currenttime, _time, "M")) >= 1
這部分 是指 無論如何 當 condition1 = 進場條件,成立後, 過1 分鐘 必然 setposition(1, market)?
請問 如果想 過一分鐘 或者經過數分鐘? 依然 成就 condition1 ,始觸發條件 setposition(1, market)?
問2:原先condition1 條件之中不能 設置 currenttime>091000 之類的,會是這個原因?
回測幾次改過幾個描述都難以達成 ,再請小幫手進一步解答
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 且務必附上 討論文章連結網址(小編才能盡早處理)。
感謝。
3 評論