quant002 发表于 2020-3-8 07:18:30

【金字塔策略源码】突破策略

runmode:0;

input:period(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(0,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

topband:=ref(hhv(high,period),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>=period and high>=topband 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

页: [1]
查看完整版本: 【金字塔策略源码】突破策略