|
本帖最後由 dickens0818 於 17-8-2 21:49 編輯
市場上很難有一個交易訊號長期回測下來表現都是好的,即使開發出一個十年長期期望值都正的訊號,
亦很難避免這十年間訊號有不穩定的時候,
怎麼在訊號表現好時自動下較多的單,表現不好時下較少的單,
在此小弟摸索出一套方法,歡迎大家討論:
vars:進場口數(0);
if 訊號期望值>0
then begin 進場口數=5;
end else
進場口數=1;
if 訊號條件成立
then buy 進場口數 next bar at market;
arrays:訊號賺錢[](0),訊號賠錢[](0);
vars:賺錢次數(0),賠錢次數(0),訊號期望值(0);
if entryname(1)="訊號"
and positionprofit(1)>0
and barssinceexit(1)=0
and PosTradeSize(1,0)=5
then begin
賺錢次數=賺錢次數+1;
訊號賺錢[賺錢次數]=positionprofit(1);
end;
if entryname(1)="訊號"
and positionprofit(1)>0
and barssinceexit(1)=0
and PosTradeSize(1,0)=1
then begin
賺錢次數=賺錢次數+1;
訊號賺錢[賺錢次數]=5*positionprofit(1);
end;
if entryname(1)="訊號"
and positionprofit(1)<0
and barssinceexit(1)=0
and PosTradeSize(1,0)=5
then begin
賠錢次數=賠錢次數+1;
訊號賠錢[賠錢次數]=positionprofit(1);
end;
if entryname(1)="訊號"
and positionprofit(1)<0
and barssinceexit(1)=0
and PosTradeSize(1,0)=1
then begin
賠錢次數=賠錢次數+1;
訊號賠錢[賠錢次數]=5*positionprofit(1);
end;
訊號期望值=
賺錢次數/(賺錢次數+賠錢次數)*(Array_sum(訊號賺錢[賺錢次數],1, 賺錢次數)/賺錢次數)
+賠錢次數/(賺錢次數+賠錢次數)*(Array_sum(訊號賠錢[賠錢次數],1, 賠錢次數)/賠錢次數);
以上寫法可實現:
(1)當訊號期望值為正值時下5口單
(2)當訊號期望值為負值時下1口單
經過多次測試,大部分訊號在經過此優化後,回測10年以上獲利都會提升,
持續表現好之訊號會持續下5口單,
持續表現差之訊號會持續只下1口單,
歡迎大家測試後來討論 :)
|
評分
-
查看全部評分
|