这个策略是因为刚开始他命名的变量是系统自带的函数input:period(70,5,90,5);其中
period 为系统返回值范围为0-19,分别表示
0:分笔成交、1:1分钟、2:5分钟、3:15分钟、4:30分钟、5:60分钟、
6:日、7:周、8:月、9:年、10:多日、11:多小时、12:季度
现在这个函数金字塔的内部函数系统用: DATATYPE 函数代替了 period
改成这样就能通过了:
//声明变量
runmode:0;
input:period123(70,5,90,5);
input:initialstop(2,0,3,1),coststop(2,1,3,1),trailingstop(3,1,6,1);
input:money(0,0,10,1);
input:slippage(1,0,1,1);
input:debug(1,0,1,1);
variable:myasset=500000;
variable:costprice=0,stopline=0;
//准备需要计算的变量
begin
if stricmp(marketlabel,'sh')=0 then begin
commission:=0.001;
stamptax:=0.001;
transferfee:=0.001;
end
if stricmp(marketlabel,'sz')=0 then begin
commission:=0.001;
stamptax:=0.001;
transferfee:=0;
end
ma1:ma(close,60);
buycond:=ref(cross(close,ma1),1);
topband:=ref(hhv(high,period123),1)+mindiff;
atr:=ref(ma(tr,10),1);
initialstopnum:=trimprice(initialstop*atr);
coststopnum:=trimprice(coststop*atr);
trailingstopnum:=trimprice(trailingstop*atr);
slippagenum:=slippage*mindiff;
end
if holding=0 then begin
price:=0;
lots:=0;
if barpos>=period123 and buycond then
price:=close+slippagenum;
if price>0 then begin
mycash:=cash(0);
lots1:=intpart(mycash/(price*volunit))*volunit;
if money=0 then begin
lots:=lots1;
end else begin
lots2:=intpart(mycash*0.01*money/(initialstopnum*volunit))*volunit;
lots:=min(lots1,lots2);
end
end
if lots>=1 then begin
buy(1,lots,limitr,price);
if workmode=1 then
tbuy(1,lots,limitr,price);
end
end
if holding>0 then begin
price:=0;
lots:=holding;
if initialstop>0 then begin
if stopline>0 and low<=stopline then
price:=close-slippagenum;
if stopline=0 then begin
costprice:=trimprice((enterprice*(1+commission)+2*transferfee)/(1-commission-stamptax))+mindiff;
stopline:=costprice-initialstopnum;
end
if stopline<costprice and high-coststopnum>=costprice then
stopline:=costprice;
if stopline>=costprice and high-trailingstopnum>stopline then
stopline:=high-trailingstopnum;
end
if price>0 then begin
sell(1,lots,limitr,price);
costprice:=0;
stopline:=0;
myasset:=asset;
if workmode=1 then
tsell(1,lots,limitr,price);
end
end
partline(debug=1 and holding=0,topband,colorred,1);
if initialstop>0 then begin
if holding>0 then begin
drawicon(stopline<costprice,stopline,11);
drawicon(stopline=costprice,stopline,12);
drawicon(stopline>costprice,stopline,10);
end
end
if debug=1 then begin
盈亏:myasset,noaxis,colormagenta;
收益:(myasset-500000)/500000,linethick0;
次数:totaltrade,linethick0;
胜率:percentwin,linethick0;
连亏:maxseqloss,linethick0;
连赢:maxseqwin,linethick0;
end
{
KD:=; //开多条件
PD:=; //平多条件
KK:=; //开空条件
PK:=; //平空条件
平空:SELLSHORT(PK,1,THISCLOSE); //平空信号
开多:BUY(KD AND HOLDING=0,1,THISCLOSE); //开多信号
平多:SELL(PD,1,THISCLOSE); //平多信号
开空:BUYSHORT(KK AND HOLDING=0,1,THISCLOSE); //开空信号
}
{
信号语句排列规则——先平后开
“费率设置”按钮——用于合理设置模型“费率”,以便在图形上正确输出如下帐户信息:
持仓:holding,linethick0;
资产:asset,noaxis;
可用现金:cash(0),linethick0;
}