相关标签:惠比特交易和配种专区,梦三国交易专区,梦三国交易专区速秒,灵缇格力交易专区,中京交易市场下载专区,古币银元交易专区,长毛德牧交易专区,梦三国交易专区在哪里,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.fxjgsw.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>=extgbdat