版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
网格交易法策略本策略代码实现了一种网格交易法,通过在预设的网格参数下,根据市场价格的变动自动进行买卖操作。策略主要包含初始化函数`init()`和主函数`start()`,其中`init()`用于设置初始参数,`start()`则负责执行网格交易逻辑。1.**初始化函数**:在`init()`函数中,首先设置了DTS值,然后定义了魔术编号Magic,将网格参数转换为点数,获取市场的止损级别,并初始化成功返回0。2.**主函数**:`start()`函数是策略的核心部分,它首先计算当前价格与网格对齐的价格,然后分别进行下网格和上网格的布网操作。-**下网格布网**:从PivotPr开始向下布网,遍历所有订单,统计特定魔术编号和开仓价格的买入和卖出订单数量。如果没有买入订单,则根据条件发送买入限价订单或买入操作;如果没有卖出订单,则发送卖出止损订单或卖出操作。-**上网格布网**:从PivotPr开始向上布网,同样遍历所有订单,统计特定魔术编号和开仓价格的买入和卖出订单数量。如果没有买入订单,则根据条件发送买入止损订单或买入操作;如果没有卖出订单,则发送卖出限价订单或卖出操作。3.**订单操作**:在每次发送订单后,如果订单成功,会弹出提示信息并等待10秒;如果订单失败,则会提示错误信息。4.**策略执行完毕**:`start()`函数执行完毕后返回0,表示策略执行完成。5.**注释和调试信息**:代码中包含了一些注释和调试信息,如检查Multiple的值是否为0,以及开仓成功的提示信息。6.**策略逻辑**:整体而言,该策略通过在价格波动的上下限设置买卖订单,实现了在价格波动中进行多次买卖的目的,以期获得利润。7.**注意事项**:在实际应用中,需要根据市场情况调整网格参数,如GridStep和GridLength,以及考虑交易成本和滑点等因素对策略性能的影响。8.**策略适用性**:该策略适用于有一定波动性的市场,对于趋势明显或者波动性极低的市场,可能不会产生预期的效果。9.**风险管理**:策略中没有明确的风险管理措施,如设置止损点,因此在实际应用中需要结合其他风险管理工具使用。一个基于网格交易法的自动化交易策略实现,通过编程实现自动化的买卖操作,旨在利用市场的价格波动来获取利润。代码说明://脚本属性#propertycopy*"Copy*顺势加码2006"#propertylink"bonnyshi@"//包含标准库#include<stdlib.mqh>//外部变量定义externdoubleGridStep=50;//每个网格的价格间隔externdoubleGridLength=100;//网格的总长度doublePivotPr,Multiple,i,Lots=0.1,STOPLEVEL,TP,ST;stringText="Grid";intMagic,j,BuyCount,SellCount,DTS,Ticket;//+------------------------------------------------------------------+//初始化函数intinit(){//初始化DTS值if(DTS==4)DTS=2;elseDTS=0;//设置魔术编号Magic=105;//转换网格参数为点数GridStep=GridStep*Point;GridLength=GridLength*Point;//获取市场的止损级别STOPLEVEL=MarketInfo(Symbol(),MODE_STOPLEVEL)*Point;//初始化成功return(0);}//+------------------------------------------------------------------+//主函数intstart(){//计算当前价格与网格对齐的价格Multiple=NormalizeDouble((Bid-NormalizeDouble(Bid,DTS))/GridStep,0);PivotPr=NormalizeDouble(Bid,DTS)+GridStep*Multiple;//下网格布网for(i=PivotPr;i>=PivotPr-GridLength;i=i-GridStep){//初始化计数器BuyCount=0;SellCount=0;//遍历所有订单for(j=0;j<OrdersTotal();j++){//选择订单if(OrderSelect(j,SELECT_BY_POS)==false)return(0);//检查订单的魔术编号和开仓价格if(OrderMagicNumber()==Magic&&NormalizeDouble(OrderOpenPrice(),DTS)==NormalizeDouble(i,DTS)){//根据订单类型增加计数if(OrderType()==OP_BUY||OrderType()==OP_BUYLIMIT)BuyCount++;if(OrderType()==OP_SELL||OrderType()==OP_SELLSTOP)SellCount++;}}//如果没有买入订单,则发送买入限价订单if(BuyCount==0){TP=i+GridStep;ST=0;if(Ask-i>=STOPLEVEL){Ticket=OrderSend(Symbol(),OP_BUYLIMIT,Lots,i,0,ST,TP,"Grid-BuyLimit",Magic,0,0);if(Ticket>0)Alert(Symbol(),"",Ticket,"Grid-BuyLimit=",i,"开仓成功");elseAlert(Symbol(),"Grid-BuyLimit=",i,"开仓失败:",ErrorDescription(GetLastError()));Sleep(10000);}if(Ask==i){Ticket=OrderSend(Symbol(),OP_BUY,Lots,i,0,ST,TP,"Grid-Buy",Magic,0,0);if(Ticket>0)Alert(Symbol(),"",Ticket,"Grid-Buy=",i,"开仓成功");elseAlert(Symbol(),"Grid-Buy=",i,"开仓失败:",ErrorDescription(GetLastError()));Sleep(10000);}}//如果没有卖出订单,则发送卖出止损订单if(SellCount==0){TP=i-GridStep;ST=0;if(Bid-i>=STOPLEVEL){Ticket=OrderSend(Symbol(),OP_SELLSTOP,Lots,i,0,ST,TP,"Grid-SellStop",Magic,0,0);if(Ticket>0)Alert(Symbol(),"",Ticket,"Grid-SellStop=",i,"开仓成功");elseAlert(Symbol(),"Grid-SellStop=",i,"开仓失败:",ErrorDescription(GetLastError()));Sleep(10000);}if(Bid==i){Ticket=OrderSend(Symbol(),OP_SELL,Lots,i,0,ST,TP,"Grid-Sell",Magic,0,0);if(Ticket>0)Alert(Symbol(),"",//如果没有卖出订单,则发送卖出止损订单if(SellCount==0){TP=i-GridStep;ST=0;if(Bid-i>=STOPLEVEL){Ticket=OrderSend(Symbol(),OP_SELLSTOP,Lots,i,0,ST,TP,"Grid-SellStop",Magic,0,0);if(Ticket>0)Alert(Symbol(),"",Ticket,"Grid-SellStop=",i,"开仓成功");elseAlert(Symbol(),"Grid-SellStop=",i,"开仓失败:",ErrorDescription(GetLastError()));Sleep(10000);//等待10秒}if(Bid==i){Ticket=OrderSend(Symbol(),OP_SELL,Lots,i,0,ST,TP,"Grid-Sell",Magic,0,0);if(Ticket>0)Alert(Symbol(),"",Ticket,"Grid-Sell=",i,"开仓成功");elseAlert(Symbol(),"Grid-Sell=",i,"开仓失败:",ErrorDescription(GetLastError()));Sleep(10000);//等待10秒}}}}//上网格布网for(i=PivotPr+GridStep;i<=PivotPr+GridLength;i=i+GridStep){//初始化计数器BuyCount=0;SellCount=0;//遍历所有订单for(j=0;j<OrdersTotal();j++){//选择订单if(OrderSelect(j,SELECT_BY_POS)==false)return(0);//检查订单的魔术编号和开仓价格if(OrderMagicNumber()==Magic&&NormalizeDouble(OrderOpenPrice(),DTS)==NormalizeDouble(i,DTS)){//根据订单类型增加计数if(OrderType()==OP_BUY||OrderType()==OP_BUYSTOP)BuyCount++;if(OrderType()==OP_SELL||OrderType()==OP_SELLLIMIT)SellCount++;}}//如果没有买入订单,则发送买入止损订单if(BuyCount==0){TP=i+GridStep;ST=0;if(i-Ask>=STOPLEVEL){Ticket=OrderSend(Symbol(),OP_BUYSTOP,Lots,i,0,ST,TP,"Grid+BuyStop",Magic,0,0);if(Ticket>0)Alert(Symbol(),"",Ticket,"Grid+BuyStop=",i,"开仓成功");elseAlert(Symbol(),"Grid+BuyStop=",i,"开仓失败:",ErrorDescription(GetLastError()));Sleep(10000);//等待10秒}if(i==Ask){Ticket=OrderSend(Symbol(),OP_BUY,Lots,i,0,ST,TP,"Grid+Buy",Magic,0,0);if(Ticket>0)Alert(Symbol(),"",Ticket,"Grid+Buy=",i,"开仓成功");elseAlert(Symbol(),"Grid+Buy=",i,"开仓失败:",ErrorDescription(GetLastError()));Sleep(10000);//等待10秒}}//如果没有卖出订单,则发送卖出限价订单if(SellCount==0){TP=i-GridStep;ST=0;if(i-Bid>=STOPLEVEL){Ticket=OrderSend(Symbol(),OP_SELLLIMIT,Lots,i,0,ST,TP,"Grid+SellLimit",Magic,0,0);if(Ticket>0)Alert(Symbol(),"",Ticket,"Grid+SellLimit=",i,"开仓成功");elseAlert(Symbol(),"Grid+SellLimit=",i,"开仓失败:",ErrorDescription(GetLastError()));Sleep(10000);//等待10秒}if(i==Bid){Ticket=OrderSend(Symbol(),OP_SELL,Lots,i,0,ST,TP,"Grid+Sell",Magic,0,0);if(Ticket>0)Alert(Symbol(),"",Ticket,"Grid+Sell=",i,"开仓成功");elseAlert(Symbol(),"Grid+Sell=",i,"开仓失败:",ErrorDescription(GetLastError()));Sleep(10000);//等待10秒}}}//策略执行完毕return(0);}策略代码#propertycopy*"Copy*顺势加码2006"#propertylink"bonnyshi@"//包含标准库#include<stdlib.mqh>externdoubleGridStep=50;//格幅externdoubleGridLength=100;//格长doublePivotPr,Multiple,i,Lots=0.1,STOPLEVEL,TP,ST;stringText="Grid";intMagic,j,BuyCount,SellCount,DTS,Ticket;intinit()if(DTS==4)DTS=2;elseDTS=0;Magic=105;GridStep=GridStep*Point;GridLength=GridLength*Point;STOPLEVEL=MarketInfo(Symbol(),MODE_STOPLEVEL)*Point;return(0);intstart(){Multiple=NormalizeDouble((Bid-NormalizeDouble(Bid,DTS))/GridStep,0);//评rint检查这地方出值为0PivotPr=NormalizeDouble(Bid,DTS)+GridStep*Multiple;//下网格布网for(i=PivotPr;i>=PivotPr-GridLength;i=i-GridStep){BuyCount=0;SellCount=0;for(j=0;j<OrdersTotal();j++){if(OrderSelect(j,SELECT_BY_POS)==false)return(0);if(OrderMagicNumber()==Magic&&NormalizeDouble(OrderOpenPr(),DTS)==NormalizeDouble(i,DTS)){if(OrderType()==OP_BUY||OrderType()==OP_BUYLIMIT)BuyCount++;if(OrderType()==OP_SELL||OrderType()==OP_SELLSTOP)SellCount++;}}if(BuyCount==0){TP=i+GridStep;ST=0;if(Ask-i>=STOPLEVEL){Ticket=OrderSend(Symbol(),OP_BUYLIMIT,Lots,i,0,ST,TP,"Grid-BuyLimit",Magic,0,0);if(Ticket>0)Alert(Symbol(),"",Ticket,"Grid-BuyLimit=",i,"开仓成功");elseAlert(Symbol(),"Grid-BuyLimit=",i,"开仓失败:",ErrorDescription(GetLastError()));Sleep(10000);}if(Ask==i){Ticket=OrderSend(Symbol(),OP_BUY,Lots,i,0,ST,TP,"Grid-Buy",Magic,0,0);if(Ticket>0)Alert(Symbol(),"",Ticket,"Grid-Buy=",i,"开仓成功");elseAlert(Symbol(),"Grid-Buy=",i,"开仓失败:",ErrorDescription(GetLastError()));Sleep(10000);}}if(SellCount==0){TP=i-GridStep;ST=0;if(Bid-i>=STOPLEVEL){Ticket=OrderSend(Symbol(),OP_SELLSTOP,Lots,i,0,ST,TP,"Grid-SellStop",Magic,0,0);if(Ticket>0)Alert(Symbol(),"",Ticket,"Grid-SellStop=",i,"开仓成功");elseAlert(Symbol(),"Grid-SellStop=",i,"开仓失败:",ErrorDescription(GetLastError()));Sleep(10000);}if(Bid==i){Ticket=OrderSend(Symbol(),OP_SELL,Lots,i,0,ST,TP,"Grid-Sell",Magic,0,0);if(Ticket>0)Alert(Symbol(),"",Ticket,"Grid-BuyLimit=",i,"开仓成功");elseAlert(Symbol(),"Grid-BuyLimit=",i,"开仓失败:",ErrorDescription(GetLastError()));Sleep(10000);}}}//上网格布网for(i=PivotPr+GridStep;i<=PivotPr+GridLength;i=i+GridStep){BuyCount=0;SellCount=0;for(j=0;j<OrdersTotal();j++){if(OrderSelect(j,SELECT_BY_POS)==false)return(0);if(OrderMagicNumber()==Magic&&NormalizeDouble(OrderOpenPrice(),DTS)==NormalizeDouble(i,DTS)){if(OrderType()==OP_BUY||OrderType()==OP_BUYSTOP)BuyCount++;if(OrderType()==OP_SELL||OrderType()==OP_SELLLIMIT)SellCount++;}}if(BuyCount==0){TP=i+GridStep;ST=0;if(i-Ask>=STOPLEVEL){Ticket=OrderSend(Symbol(),OP_BUYSTOP,Lots,i,0,ST,TP,"Grid+BuyStop",Magic,0,0);if(Ticket>0)Alert(Symbol(),"",Ticket,"Grid+BuyStop=",i,"开仓成功");elseAlert(Symbol(),"Grid+BuyStop=",i,"开仓失败:",ErrorDescription(GetLastError()));Sleep(10000)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 教育培训机构校长合同3篇
- 旅游代理加盟合同3篇
- 安装工程合同的工程结算报告3篇
- 方程式赛车教练劳动合同范本3篇
- 工业门安装工程合同书3篇
- 教育培训机构入职劳动合同3篇
- 摩托车租赁合同范文简版3篇
- 数据库安全防护与信息服务3篇
- 工业设备购销协议3篇
- 教育机构合作协议范文3篇
- 压缩机检修方案
- 新药品推广策划方案
- 神经性梅毒的护理查房课件
- 地面深井泵房管理制度
- 2024年度中国低空经济报告
- 供电公司变电运维QC小组缩短变电站母排型接地线装设时间成果汇报书
- 四川省达州市2023年八年级上学期期末数学试题 附答案
- 消化内镜室(中心)的布局和配置
- 微习惯:自我管理法则
- 楼梯栏杆制作安装合同范本
- 2022年佛山市教育局教学研究室招聘教研员笔试试题及答案
评论
0/150
提交评论