|
var:LastTradingDay(false);
if DAYofMonth(Date) > 14 and DAYofMonth(Date) < 22 and DAYofWeek(Date)=3 then begin
LastTradingDay=True;
end else begin
LastTradingDay=False;
end;
結算日換到下月倉繼續(不處理結算日)
程式碼:(無)需在MC下單機設定換倉或是自行手動換倉
優點:
1.策略有延續性與合理性,不會影響後面策略的出手
2.對於一年出手次數很少的策略會有幫助
缺點:
1.需要另外設定或是手動換倉
2.在歷史績效的結果會多算績效,也就是實際會比歷史績效少, why?因為有除權息的關係,主要都來自結算日留空單被多算了績效,舉個例: 程式空 9100,結算價9000,此時次月因為除權息,所以換倉價位只有8850,假設結算日後出場價為8800,歷史績效的算法就是9100-8800=300,但是你實際上是(9100-9000結算日出場價)+(8850-8800)=150,因此歷史績效足足多算了150點,加上台股長期次月價都比本月價低,因此長期下來會被多計算績效,造成嚴重誤差,但相反的,如果是多單留倉,就會變成少算積效,因此一增一減不會差很多,但是長期來說會有相當程度多算績效
結算日一律出場
程式碼:
if LastTradingDay then setexitonclose;
缺點:
1.切斷策略延續性,結算日完從頭開始
2.回測績效可能會少一些,但至少正確
優點:
1.歷史績效計算正確
2.免除換倉麻煩
3.結算日沒倉,可好好睡一覺管它美股漲跌
結算日出場,隔天開盤依照結算日收盤前倉位再進場
程式碼:
if LastTradingDay then begin
if sessionlastbar then begin
if marketposition>0 then buy next bar at market;
if marketposition<0 then sellshort next bar at market;
end;
setexitonclose;
end;
缺點:
1.隔天在進場時,停損利出場位置會歸0重新計算
優點:
1.歷史績效計算正確
2.策略具有延續性
結算日空單出場,多單轉倉(不處理)
程式碼:
if LastTradingDay then begin
if marketposition<0 then setexitonclose;
end;
缺點:
1.多單要記得設定或手動換倉
優點:
1.只有多單要換倉,空單結算,少一半換倉的動作
2.歷史績效只會被少算不會多算,也就是實際獲利會比較多不會比較少
3.至少有一半以上的延續性
以上方法哪種方式才好,見仁見智,重點是套入你的程式,看看會怎樣再做決定,我個人偏向結算日一律出場,因為不管哪種方式,差異都不會太大(除非你一年出手很少),而且結算日沒倉我可以好好睡一覺,管它美股漲跌,給自己喘口氣
|
評分
-
查看全部評分
|