欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件交易策略发布专区 → [交易系统]MA策略

   

欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。    


  共有16191人关注过本帖树形打印复制链接

主题:[交易系统]MA策略

帅哥哟,离线,有人找我吗?
武田晴信
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 大佐
等级:论坛游侠 帖子:239 积分:0 威望:0 精华:0 注册:2013/7/8 16:40:03
  发帖心情 Post By:2013/9/17 11:04:52 [显示全部帖子]

这个策略是因为刚开始他命名的变量是系统自带的函数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;
}


 回到顶部