模型策略源码:// Dual Thrust
//这个系统是 Michael Chalek 在80 年代开发的 Dual Thrust。
//1. 在今天的收盘,计算两个值: 最高价-收盘价, 和 收盘价-最低价。然后取这两个值较大的那个,乘以k值0.7。把结果称为 触发值。
//2. 在明天的开盘,记录开盘价,然后在价格超过(开盘+触发值)时马上买入,或者价格低于(开盘-触发值)时马上卖空。
input:K1(0.5,0,2,0.1);
//多头突破波动比例
input:K2(0.5,0,2,0.1);
//多头突破波动比例
input:Mday(1,0,9,1);
//M日期最大价差
input:Nday(1,0,9,1);
//N日前最大价差
input:LOTS(1,0,9,1);
//
HighD:=callstock(stklabel,vthigh,6,-1);
LowD:=callstock(stklabel,vtlow,6,-1);
CloseD:=callstock(stklabel,vtclose,6,-1);
CYC:=barslast(dateref(date,1))+1;
OpenD:=valuewhen(cyc=1,open);
HH:= HHV(HighD,Mday);
HC:= HHV(CloseD,Mday);
LL:= LLV(LowD,Mday);
LC:= LLV(CloseD,Mday);
SellRange:=Max(HH - LC,HC - LL);
HH:=HHV(HighD,Nday);
HC:=HHV(CloseD,Nday);
LL:=LLV(LowD,Nday);
LC:=LLV(CloseD,Nday);
BuyRange:=Max(HH - LC,HC - LL);
UpperBand: OpenD + K1*BuyRange;
LowerBand: OpenD - K2*SellRange;
If(HOLDING=0) THEN BEGIN
If(High>=UpperBand) THEN
Buy(HOLDING=0,lots,LIMITR,Max(Open,UpperBand));
If(Low=UpperBand) THEN BEGIN
SELLSHORT(HOLDING0) THEN BEGIN
If(Low0,lots,limitr,Min(Open,LowerBand));
BuyShort(holding=0,lots,limitr,Min(Open,LowerBand));
END
END
持仓:holding,noaxis ,linethick0 ;
盈亏:asset-1000000,noaxis,coloryellow,linethick2;