台指期自動交易"依策略執行" 遇結算是否就終止了? 譬如結算前有部位.結算後部位歸零.策略也隨即終止?
如果是這樣.(交易近月標的)"依策略"回測超過一個月的期間.因為有跨月(部位歸零). 結果是否就不準了?系統回測的機制有考慮
結算部位歸零的變數嗎?
台指期自動交易"依策略執行" 遇結算是否就終止了? 譬如結算前有部位.結算後部位歸零.策略也隨即終止?
如果是這樣.(交易近月標的)"依策略"回測超過一個月的期間.因為有跨月(部位歸零). 結果是否就不準了?系統回測的機制有考慮
結算部位歸零的變數嗎?
因為交易標的多.做不到手動調整.可否教我上述"策略腳本中加上換月轉倉的邏輯"? 非常感謝!
Hello winton,
舉例來說,您可以使用 DayOfWeek 搭配 WeekOfMonth 來判斷台指期商品是否為當月的第三個星期三。
類似功能的函數有 DaysToExpiration ,不過需注意這種作法無法對應到當因為放假導致到期日變動的狀況。
所以若該月的到期日並不是第三個星期三的話就需要另外處理。
是的.我的意思是當使用上述函數告訴系統因為商品到期.如何讓系統"自動"轉倉?
Hello winton,
系統不會自動轉倉,要您自行撰寫邏輯判斷今日是否為到期日並交易。
舉例來說:
var: intrabarpersist _switch(0);
if NthDayofMonth(EncodeDate(year(date),month(date), 1),3,3) = date and currenttime >= 130000 and currenttime < 134500 and filled <> 0 then begin
_switch = filled;
setposition(0, market);
end
else if currenttime >= 150000 and _switch <> 0 then begin
setposition(_switch, market);
_switch = 0;
end;
這樣就會在每個月的第三個禮拜三的 130000 以後出場,並在同天下午的150000以後再度進場。
NthDayofMonth(EncodeDate(year(date),month(date), 1),3,3) 會計算出當月的第三個星期三,但須注意並不包含該日為假日的情況。
若是運作在即時的狀態下,可以使用 GetSymbolInfo("到期日") 或是 GetQuote("到期日") 來判斷當跟Bar的日期是否為到期日 (不會有假日的情況)。
非常感謝.很有幫助^^
可以小聲問一下.上面_switch=0 的作用/意思是甚麼呀? 又setposition(_switch, market);是把結算平倉的filled總數再建立以便持續原來的策略嗎?
Hello winton,
是的,_switch 是在若有庫存要轉倉時,用來保存當下庫存的變數。
所以上面的範例中若在13點以後有庫存的話,會用 _switch 保存庫存數量並出場,在下午15點以後再依 _switch 保存的數值進場並將 _switch 歸0。
7 評論