--  作者:z7c9 
        --  发布时间:2011/4/12 8:52:58 
        
        --  [交易系统]MACD策略 
         
  
	  
	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(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     diff:=ema(close,12)-ema(close,26);  dea:=ema(diff,9);  macd:=2*(diff-dea);    buycond:=ref(cross(dea,diff),1); 
	 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 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 
	[此贴子已经被作者于2011-10-3 11:22:12编辑过] 
         
       |