ImageVerifierCode 换一换
格式:DOCX , 页数:14 ,大小:50.91KB ,
资源ID:27517932      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/27517932.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(mt4创建智能交易系统步骤.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

mt4创建智能交易系统步骤.docx

1、mt4创建智能交易系统步骤以 MQL4语言程序为原理展示一个以标准MACD 指标为基础简单的智能交易系统的创建。 在这个智能交易中,我们将看到一些特性的示例,像赢利水平的设定,追踪止损的设置等等。在我们的范例中,通过开仓和管理仓位来完成交易。交易原理: Long (BUY) entry MACD指标在零以下, 从下至上并且穿过低端的信号线。 Short (SELL) entry MACD 指标在零以上,从上至下并且穿过顶端的信号线。 Long exit 赢利上限的执行,追踪止损的执行或当穿过 MACD 的信号线 (MACD 指标在零以上,从上至下并且穿过顶端的信号线)。 Short exit

2、赢利上限的执行,追踪止损的执行或当穿过 MACD 的信号线 (MACD指标在零以下, 从下至上并且穿过低端的信号线)。重要提示:从我们的分析上排除一些 MACD 指标微不足道的变化 (图表上的小 山丘),我们介绍一种补充检测山丘大小的办法如下:指标的大小应该在最低价的最后5个单元(5*Point,对于 USD/CHF = 0.0005 和 USD/JPY = 0.05).步骤 1 编写智能交易的描述在智能交易的导航窗口处,点击鼠标右键并且选择在菜单中的“创建新智能交易”。创建智能交易的初始提醒将会询问你进入数据中心。在显示窗口,填写智能交易的名称(名称) - MACD Sample,作者(作者

3、) -指出你的名字, 链接 (连接) -你网页的链接,注解 (注解) - MACD-基本智能交易的测试范例。步骤 2 创建程序的基本结构测试智能交易的源代码将只占据一点位置,但是还是有些量经常很难抓住,特别是我们不是专业的编成工作者 - 另外,我们不需要这些描述,不是吗? :)一个标准智能交易的结构构想,让我们看看以下部分的描述:1. 初始变量2. 初始数据检测o 检测图表,图表中的柱数o 检测外部变量值:标准手, S/L, T/P, T/S3. 对于快速数据通道设置内部变量4. 检测交易终端 是无效的吗?如果是:o 检测: 账户上的可用保证金.o 可能是看涨仓位 (BUY)? 开设看涨仓位并

4、退出5. 可能是卖空仓位 (SELL)?o 开设卖空仓位并退出退出智能交易. 周期循环检验先前开仓o 如果是看涨仓位 应该平仓? 应该重新设定追踪止损? 如果是卖空仓位o 应该平仓?o 应该重新设定追踪止损?返回的结果很简单,只有4种。现在让我们尝试一步一步地区完成列出的计划:1. 初始变量所有使用在智能交易程序中的变量必须按照 MetaQuotes Language 4 要求的指定。这就是为什么我们在程序的开始插入初始变量的原因extern double TakeProfit = 50;extern double Lots = 0.1;extern double TrailingStop =

5、 30;extern double MACDOpenLevel=3;extern double MACDCloseLevel=2;extern double MATrendPeriod=26;MetaQuotes语言4 是需要“外部变量”辅助的。外部变量可以从外部设定,在智能交易程序源代码设定之后不可以修改。提供一个额外的灵活性。在我们的程序中,MATrendPeriod 变量作为外部变量指定。 在程序开始我们插入这个变量。extern double MATrendPeriod=26;2. 检测初始数据该代码部分通常使用在所有的智能交易中。因为是一个标准的检测:/ 初始数据检测/ 确认智能交易

6、运行正常非常重要/图表和用户设置不能出现任何错误 / 变量(Lots, StopLoss, TakeProfit, / TrailingStop) 我们的情况需要检测TakeProfit/ 图表中少于100 柱 if(Bars100) Print(少于 100柱); return(0); if(TakeProfit10) Print(赢利少于10); return(0); / 检测TakeProfit 3. 对于数据的快速通道设置内部变量在源代码中经常需要注意指标值或计算值。简化代码和数据放置在内部变量中。4. int start()5. 6. double MacdCurrent, Macd

7、Previous, SignalCurrent;7. double SignalPrevious, MaCurrent, MaPrevious;8. int cnt, ticket, total;9. 10. / 简化代码11. /数据放置在内部变量中12. MacdCurrent=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,0);13. MacdPrevious=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,1);14. SignalCurrent=iMACD(NULL,0,12,26,9,PRICE_CLOS

8、E,MODE_SIGNAL,0);15. SignalPrevious=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,1);16. MaCurrent=iMA(NULL,0,MATrendPeriod,0,MODE_EMA,PRICE_CLOSE,0); MaPrevious=iMA(NULL,0,MATrendPeriod,0,MODE_EMA,PRICE_CLOSE,1);现在,用 iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,0)代替,您可以在源代码中使用 MacdCurrent。17. 检测交易终端 是

9、空的吗?如果是:在我们的智能交易中,我们仅使用开单和操作挂单。不过,使更安全,我们来认识一种 对于先前定单交易终端检测:total=OrdersTotal(); if(total1) o 检测: 账户上的可用保证金.在分析市场状况之前,检测你的账户上可用的自由保证金可以开仓。if(AccountFreeMargin()(1000*Lots) Print(没有资金.自由保证金 = , AccountFreeMargin(); return(0); o 可能是看涨仓位 (BUY)? 进入看涨仓位的条件: MACD 低于零, 向上并且穿过信号线向下。这就是我们在 MQL4中描述的 (注意我们在指标上

10、的业务值保存在先前的变量中):/ 尽可能检测看涨仓位 (BUY) if(MacdCurrentSignalCurrent & MacdPrevious MathAbs(MacdCurrent)(MACDOpenLevel*Point) & MaCurrentMaPrevious) ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point, macd sample,16384,0,Green); if(ticket0) if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)

11、 Print(BUY 开单 : ,OrderOpenPrice(); else Print(错误 opening BUY order : ,GetLastError(); return(0); 附加的检验山丘的大小上面已经给出了描述。 MACDOpenLevel变量是一个用户指定变量,它不可能改变程序文本,但是却有很大的灵活性。在程序开始我们插入这个变量的描述。o 能交易示范 22010年02月18日 星期四 10:15 可能是卖空仓位(SELL)? 进入卖空仓位的条件: MACD高于零,向上并且穿过信号线向下。注解如下:/ 尽可能的检测卖空仓位(SELL) if(MacdCurrent0 &

12、 MacdCurrentSignalPrevious & MacdCurrent(MACDOpenLevel*Point) & MaCurrent ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,Bid-TakeProfit*Point, macd sample,16384,0,Red); if(ticket0) if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES) Print(SELL 开单 : ,OrderOpenPrice(); else Print(错误SELL定单开仓 : ,GetLast

13、Error(); return(0); return(0); 周期循环检验先前开仓/进入市场的正确性非常重要 / 但是更重要的是安全退出. for(cnt=0;cnt OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES); if(OrderType()0 & MacdCurrentSignalPrevious & MacdCurrent(MACDCloseLevel*Point) OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); /平仓 return(0); /退出 o 应该重设追踪止损马?我们设定追踪止

14、损只有在仓位盈利已经超过追踪水平点,并且新的止损水平点好于先前的水平。/ 检测追踪止损if(TrailingStop0) if(Bid-OrderOpenPrice()Point*TrailingStop) if(OrderStopLoss() OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop, OrderTakeProfit(),0,Green); return(0); 我们停止操作符。 如果是卖空仓位else /卖空仓位 应该平仓吗?退出卖空仓位的条件: MACD穿过信号线,MACD低于零,向上并且穿过信号线

15、向下。if(MacdCurrentSignalCurrent & MacdPrevious(MACDCloseLevel*Point) OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); /平仓 return(0); / 退出 应该重设追踪止损吗? 我们设定追踪止损只有在仓位盈利已经超过追踪水平点,并且新的止损水平点好于先前的水平。/ 检测追踪止损if(TrailingStop0) if(OrderOpenPrice()-Ask)(Point*TrailingStop) if(OrderStopLoss()(Ask+Point*Trailin

16、gStop) | (OrderStopLoss()=0) OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop, OrderTakeProfit(),0,Red); return(0); 关闭所有残留开仓。 return(0);这样一步一步地编写我们的智能交易.智能交易示范 32010年02月18日 星期四 10:16步骤3 集中程序的结果代码让我们打开智能交易的设定:使用按钮打开属性.菜单。在窗口内指定运行参量的外部设定:从先前部分集中全部代码:/+-+/| MACD Sample.mq4 |/| Copyrigh

17、t 2005, MetaQuotes Software Corp. |/| |/+-+extern double TakeProfit = 50;extern double Lots = 0.1;extern double TrailingStop = 30;extern double MACDOpenLevel=3;extern double MACDCloseLevel=2;extern double MATrendPeriod=26;/+-+/| |/+-+int start() double MacdCurrent, MacdPrevious, SignalCurrent; doubl

18、e SignalPrevious, MaCurrent, MaPrevious; int cnt, ticket, total;/ 检测初始化数据/ 确定智能交易在图表中运行正常非常重要/ 用户在外部变量交易中不会产生任何错误/ 外部变量 (标准手数, 止损,赢利, / 追踪止损) 在这种情况下,我们检测图表中赢利水平要小于100 柱 if(Bars100) Print(少于 100柱); return(0); if(TakeProfit10) Print(赢利少于10); return(0); / 检测赢利水平 / 简化代码和加速通道/ 数据被放置在内部变量中 MacdCurrent=iMA

19、CD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,0); MacdPrevious=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,1); SignalCurrent=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,0); SignalPrevious=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,1); MaCurrent=iMA(NULL,0,MATrendPeriod,0,MODE_EMA,PRICE_CLOSE,0); MaPrevi

20、ous=iMA(NULL,0,MATrendPeriod,0,MODE_EMA,PRICE_CLOSE,1); total=OrdersTotal(); if(total1) / 没有指定开单 if(AccountFreeMargin()(1000*Lots) Print(没有资金. 自由保证金 = , AccountFreeMargin(); return(0); / 尽可能检测看涨仓位 (BUY) if(MacdCurrentSignalCurrent & MacdPrevious(MACDOpenLevel*Point) & MaCurrentMaPrevious) ticket=Ord

21、erSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point,macd sample,16384,0,Green); if(ticket0) if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES) Print(BUY 定单开仓 : ,OrderOpenPrice(); else Print(错误BUY定单开仓 : ,GetLastError(); return(0); / 尽可能检测卖空仓位(SELL) if(MacdCurrent0 & MacdCurrentSignalPrevious &

22、MacdCurrent(MACDOpenLevel*Point) & MaCurrent0) if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES) Print(SELL 定单开仓 : ,OrderOpenPrice(); else Print(错误SELL定单开仓 : ,GetLastError(); return(0); return(0); / 正确进入市场很重要, / 但正确退出市场更重要. for(cnt=0;cnttotal;cnt+) OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES); if(

23、OrderType()0 & MacdCurrentSignalPrevious & MacdCurrent(MACDCloseLevel*Point) OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); /平仓 return(0); / 退出 / 检测追踪止损 if(TrailingStop0) if(Bid-OrderOpenPrice()Point*TrailingStop) if(OrderStopLoss()Bid-Point*TrailingStop) OrderModify(OrderTicket(),OrderOpenPric

24、e(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green); return(0); else / 去卖空仓位 / 需要平仓吗? if(MacdCurrentSignalCurrent & MacdPrevious(MACDCloseLevel*Point) OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); / 平仓 return(0); /退出 / 检测追踪止损 if(TrailingStop0) if(OrderOpenPrice()-Ask)(Point*TrailingStop) if(

25、OrderStopLoss()(Ask+Point*TrailingStop) | (OrderStopLoss()=0) OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red); return(0); return(0); / 结束对于最后智能交易的确认,只需要指定外部变量值 Lots = 1, Stop Loss (S/L) = 0 (not used), Take Profit (T/P) = 120 (appropriate for one-hour intervals), Trailing Stop (T/S) = 30. 当然,你可以使用自己的值。按 编写按钮,如果没有任何错误信息出现 (你可以从 MetaEditor的列表中复制), 按 保存键保存智能交易。附件: MACD Sample.mq4 (3.8 Kb)

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1