相关标签:惠比特交易和配种专区,梦三国交易专区,梦三国交易专区速秒,灵缇格力交易专区,中京交易市场下载专区,古币银元交易专区,长毛德牧交易专区,梦三国交易专区在哪里,qq交易专区,
金字塔公式 金字塔模型策略源码:
runmode:1;
input:unitoftime(15,5,15,5),length(4,1,6,1);
input:initialstop(2,2,6,1),trailingstop(4,2,6,1);
input:startdate(1110104,1,9999999,1),intraday(1,0,1,1);
input:money(0,0,10,1);{www.88gs.com}
input:slippage(0,0,1,1);
input:debug(0,0,2,1);
strategyname:=\'fs1\';
prefix:=\'ac1_\'+stklabel+\'_\'+strategyname+\'_\';
costprice:=prefix+\'cost\';
stopline:=prefix+\'stop\';
myaccount:=\'888888\';
if initialstop>trailingstop then exit;
if startdate>1 and date<startdate then exit;
begin
if stricmp(marketlabel,\'sq\')=0 then
label:=strleft(stklabel,2);
if stricmp(marketlabel,\'dq\')=0 then
label:=strleft(stklabel,1);
if stricmp(marketlabel,\'zq\')=0 then
label:=strleft(stklabel,2);
if stricmp(marketlabel,\'zj\')=0 then
label:=strleft(stklabel,2);
if stricmp(label,\'cf\')=0 then begin
marginratio:=0.17;
commission:=12;
tradeable:=true;
end
if stricmp(label,\'sr\')=0 then begin
marginratio:=0.16;
commission:=6;
tradeable:=true;
end
//if not(tradeable) then exit;
end
begin
entertime1:=t0totime(timetot0(opentime(1))+60*(unitoftime+2));
entertime2:=t0totime(timetot0(closetime(0))-60);
exittime1:=t0totime(timetot0(closetime(0)));
entertime:=time>=entertime1 and time<=entertime2;
exittime:=time>=exittime1;
cond:=day<>ref(day,1) or barpos=1;
n:=barpos-valuewhen(cond,barpos)+1;
settlementprice:=trimprice(sum(amount,n)/sum(vol,n)/multiplier);
period:=unitoftime*length;
topband:=ref(hhv(high,period),1)+mindiff;
botband:=ref(llv(low,period),1)-mindiff;
atr:=trimprice(ref(ma(tr,unitoftime),1)+mindiff);
initialstopnum:=atr*initialstop;
trailingstopnum:=atr*trailingstop;
slippagenum:=slippage*mindiff;
longcond:=barpos>=period and entertime and high>=topband and topband<dynainfo(54);
longprice:=close;
shortcond:=barpos>=period and entertime and low<=botband and botband>dynainfo(55);
shortprice:=close;
end
if workmode=1 then begin
if tbuyholdingex(myaccount,stklabel,1)=0 and tsellholdingex(myaccount,stklabel,1)=0 then begin
extgbdataset(costprice,0);
extgbdataset(stopline,0);
end
if tbuyholdingex(myaccount,stklabel,1)=0 then begin
price:=0;
lots:=0;
if longcond then
price:=longprice;
if price>0 then begin
mycash:=taccount2(19,myaccount);
lots1:=intpart(mycash/(price*multiplier*marginratio));
if money=0 then begin
lots:=lots1;
end else begin
lots2:=intpart(mycash*0.01*money/(initialstopnum*multiplier));
lots:=min(lots1,lots2);
end
end
if lots>=1 then
tbuy(1,lots,lmt,price+slippagenum,0,myaccount,stklabel);
end
if tsellholdingex(myaccount,stklabel,1)=0 then begin
price:=0;
lots:=0;
if shortcond then
price:=shortprice;
if price>0 then begin
mycash:=taccount2(19,myaccount);
lots1:=intpart(mycash/(price*multiplier*marginratio));
if money=0 then begin
lots:=lots1;
end else begin
lots2:=intpart(mycash*0.01*money/(initialstopnum*multiplier));
lots:=min(lots1,lots2);
end
end
if lots>=1 then
tbuyshort(1,lots,lmt,price-slippagenum,0,myaccount,stklabel);
end
if tbuyholdingex(myaccount,stklabel,1)>0 then begin
price:=0;
lots:=tbuyholdingex(myaccount,stklabel,1);
if close=dynainfo(54) then
price:=close;
if exittime then begin
if intraday=0 then begin
price:=close;
end else begin
if costprice<settlementprice and settlementprice<stopline then
exit;
else
price:=close;
end
end
begin
if extgbdata(stopline)>0 and close<=extgbdata(stopline) then
price:=close;
if extgbdata(stopline)=0 then begin
if commission>1 then
extgbdataset(costprice,trimprice(tavgenterpriceex2(myaccount,stklabel,0)+2*commission/multiplier)+mindiff);
else
extgbdataset(costprice,trimprice(tavgenterpriceex2(myaccount,stklabel,0)*(1+commission)/(1-commission))+mindiff);
extgbdataset(stopline,extgbdata(costprice)-initialstopnum);
end
if extgbdata(stopline)<extgbdata(costprice) and high-initialstopnum>=extgbdata(costprice) then
extgbdataset(stopline,extgbdata(costprice));
if extgbdata(stopline)>=extgbdata(costprice) and high-trailingstopnum>extgbdata(stopline) then
extgbdataset(stopline,high-trailingstopnum);
end
if price>0 then
tsell(1,lots,lmt,price-slippagenum,0,myaccount,stklabel);
end
if tsellholdingex(myaccount,stklabel,1)>0 then begin
price:=0;
lots:=tsellholdingex(myaccount,stklabel,1);
if close=dynainfo(55) then
price:=close;
if exittime then begin
if intraday=0 then begin
price:=close;
end else begin
if costprice>settlementprice and settlementprice>stopline then
exit;
else
price:=close;
end
end
begin
if extgbdata(stopline)>0 and close>=extgbdata(stopline) then
price:=close;
if extgbdata(stopline)=0 then begin
if commission>1 then
extgbdataset(costprice,trimprice(tavgenterpriceex2(myaccount,stklabel,1)-2*commission/multiplier)-mindiff);
else
extgbdataset(costprice,trimprice(tavgenterpriceex2(myaccount,stklabel,1)*(1-commission)/(1+commission))-mindiff);
extgbdataset(stopline,extgbdata(costprice)+initialstopnum);
end
if extgbdata(stopline)>extgbdata(costprice) and low+initialstopnum<=extgbdata(costprice) then
extgbdataset(stopline,extgbdata(costprice));
if extgbdata(stopline)<=extgbdata(costprice) and low+trailingstopnum<extgbdata(stopline) then
extgbdataset(stopline,low+trailingstopnum);
end
if price>0 then
tsellshort(1,lots,lmt,price+slippagenum,0,myaccount,stklabel);
end
end
if workmode=0 then begin
margin:close*multiplier*marginratio,linethick0;
ss:settlementprice,colorwhite,linethick2;
if tbuyholdingex(myaccount,stklabel,1)=0 and tsellholdingex(myaccount,stklabel,1)=0 then begin
tb:topband,linethick0;
bb:botband,linethick0;
drawicon(entertime and islastbar and topband<dynainfo(54),topband,10);
drawicon(entertime and islastbar and botband>dynainfo(55),botband,11);
end
if tbuyholdingex(myaccount,stklabel,1)>0 or tsellholdingex(myaccount,stklabel,1)>0 then begin
cp:extgbdata(costprice),linethick0;
sl:extgbdata(stopline),linethick0;
wl:if(tbuyholdingex(myaccount,stklabel,1)>0,(sl-cp)*multiplier*tbuyholdingex(myaccount,stklabel,1),(cp-sl)*multiplier*tsellholdingex(myaccount,stklabel,1)),linethick0;
end
if tbuyholdingex(myaccount,stklabel,1)>0 then begin
drawicon(islastbar and extgbdata(stopline)<extgbdata(costprice),extgbdata(stopline),11);
drawicon(islastbar and extgbdata(stopline)=extgbdata(costprice),extgbdata(stopline),12);
drawicon(islastbar and extgbdata(stopline)>extgbdata(costprice),extgbdata(stopline),10);
end
if tsellholdingex(myaccount,stklabel,1)>0 then begin
drawicon(islastbar and extgbdata(stopline)>extgbdata(costprice),extgbdata(stopline),11);
drawicon(islastbar and extgbdata(stopline)=extgbdata(costprice),extgbdata(stopline),12);
drawicon(islastbar and extgbdata(stopline)<extgbdata(costprice),extgbdata(stopline),10);
end
end