2010年7月2日 星期五

回測時把結算日平倉寫進去

一般情況

我們在設計自己的交易策略時

回測所使用的資料都是連續的

在轉倉的時候

兩合約的價差是無法估計的~

若是要保持回測正確性~

必須要把結算日平倉的指令寫進去~

以下為結算日平倉的程式碼~

vars:CDC(0);

if date[0] < > date[1] then begin
CDC=0;
if (date=1100616 or date=1100519 or date=1100421 or date=1100317 or date=1100222 or date=1100120) and CDC=0 then CDC=CDC+1;
if (date=1091216 or date=1091118 or date=1091021 or date=1090916 or date=1090819 or date=1090715) and CDC=0 then CDC=CDC+1;
if (date=1090617 or date=1090520 or date=1090415 or date=1090318 or date=1090218 or date=1090121) and CDC=0 then CDC=CDC+1;
if (date=1081217 or date=1081119 or date=1081015 or date=1080917 or date=1080820 or date=1080716) and CDC=0 then CDC=CDC+1;
if (date=1080618 or date=1080521 or date=1080416 or date=1080319 or date=1080220 or date=1080116) and CDC=0 then CDC=CDC+1;
if (date=1071219 or date=1071121 or date=1071017 or date=1070919 or date=1070815 or date=1070718) and CDC=0 then CDC=CDC+1;
if (date=1070620 or date=1070516 or date=1070418 or date=1070321 or date=1070226 or date=1070117) and CDC=0 then CDC=CDC+1;
if (date=1061220 or date=1061115 or date=1061018 or date=1060920 or date=1060816 or date=1060719) and CDC=0 then CDC=CDC+1;
if (date=1060621 or date=1060517 or date=1060419 or date=1060315 or date=1060215 or date=1060118) and CDC=0 then CDC=CDC+1;
if (date=1051221 or date=1051116 or date=1051019 or date=1050921 or date=1050817 or date=1050720) and CDC=0 then CDC=CDC+1;
if (date=1050615 or date=1050518 or date=1050420 or date=1050316 or date=1050216 or date=1050119) and CDC=0 then CDC=CDC+1;
if (date=1041215 or date=1041117 or date=1041020 or date=1040915 or date=1040818 or date=1040721) and CDC=0 then CDC=CDC+1;
if (date=1040616 or date=1040519 or date=1040421 or date=1040317 or date=1040218 or date=1040127) and CDC=0 then CDC=CDC+1;
if (date=1031217 or date=1031119 or date=1031015 or date=1030917 or date=1030820 or date=1030716) and CDC=0 then CDC=CDC+1;
if (date=1030618 or date=1030521 or date=1030416 or date=1030319 or date=1030219 or date=1030115) and CDC=0 then CDC=CDC+1;
if (date=1021218 or date=1021120 or date=1021016 or date=1020918 or date=1020821 or date=1020717) and CDC=0 then CDC=CDC+1;
if (date=1020619 or date=1020515 or date=1020417 or date=1020320 or date=1020220 or date=1020116) and CDC=0 then CDC=CDC+1;
end;

if CDC > 0 and time=XXXX then begin
exitlong next bar at market;
exitshort next bar at market;
end;


那個程式碼中的XXXX就自己設定吧~

雖然說這是很久以前就知道的事情~

不過沒有非常在意~

現在會拿訊號回測選擇權~

所以開始很認真的看待這樣的問題~
HEMiDEMi Technorati Del.icio.us MyShare?犖?貊惜 Yahoo