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


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

   

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


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

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

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


加好友 发短信
等级:小飞侠 帖子:1882 积分:3310 威望:0 精华:15 注册:2010/3/15 13:11:56
[交易系统]MA策略  发帖心情 Post By:2011/4/12 9:00:12 [只看该作者]

图片点击可在新窗口打开查看

 

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 
 
 ma1:ma(close,60); 
 
 buycond:=ref(cross(close,ma1),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:02编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
a7777
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:40 积分:154 威望:0 精华:0 注册:2013/1/29 21:12:59
  发帖心情 Post By:2013/1/29 21:14:43 [只看该作者]

图片点击可在新窗口打开查看

 回到顶部
帅哥哟,离线,有人找我吗?
散兵
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:21 积分:29 威望:0 精华:0 注册:2012/2/13 18:22:20
  发帖心情 Post By:2013/2/20 22:57:03 [只看该作者]

测试没通过


 回到顶部
帅哥哟,离线,有人找我吗?
jyqh
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:10 积分:45 威望:0 精华:0 注册:2013/2/5 11:09:19
  发帖心情 Post By:2013/2/21 15:57:05 [只看该作者]

真是源代码啊 有待考察


 回到顶部
帅哥哟,离线,有人找我吗?
chinacc
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:86 积分:167 威望:0 精华:0 注册:2012/9/5 21:00:26
  发帖心情 Post By:2013/2/28 0:41:58 [只看该作者]

似乎不绩效不怎么样

 回到顶部
帅哥哟,离线,有人找我吗?
chinacc
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:86 积分:167 威望:0 精华:0 注册:2012/9/5 21:00:26
  发帖心情 Post By:2013/3/2 10:46:36 [只看该作者]

图片点击可在新窗口打开查看

 回到顶部
帅哥哟,离线,有人找我吗?
a1121648703
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:28 积分:84 威望:0 精华:0 注册:2013/4/30 9:37:50
  发帖心情 Post By:2013/5/16 7:47:50 [只看该作者]

骗子没法测试

 


 回到顶部
帅哥哟,离线,有人找我吗?
散兵
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:21 积分:29 威望:0 精华:0 注册:2012/2/13 18:22:20
语句编写  发帖心情 Post By:2013/6/18 16:02:12 [只看该作者]

没通过测试,哪位高手改下。。。。。。。。

 回到顶部
帅哥哟,离线,有人找我吗?
武田晴信
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | 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;
}


 回到顶部