


版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、以MQL4语言程序为原理展示一个以标准MACOW标为基础简单的智能交易系统的创建。在这个智能交易中,我们将看到一些特性的示例,像赢利水平的设定,追踪止损的设置等等。在我们的范例中,通过开仓和管理仓位来完成交易。交易原理:Long(BUY)entry-MACD旨标在零以下,从下至上并且穿过低端的信号线。Short(SELL)entry号线。MACD®标在零以上,从上至下并且穿过顶端的信Longexit-赢利上限的执行,追踪止损的执行或当穿过MACD的信号线(MACD指标在零以上,从上至下并且穿过顶端的信号线)。Shortexit-赢利上限的执行,追踪止损的执行或当穿过MACD的信号线(
2、MACD®标在零以下,从下至上并且穿过低端的信号线)。重要提示:从我们的分析上排除一些MACD指标微不足道的变化(图表上的小山丘'),我们介绍一种补充检测山丘大小的办法如下:指标的大小应该在最低价的最后5个单元(5*Point,对丁USD/CHF=0.0005和USD/JPY=0.05).12M5MftCDLI怫1.1895:.1.19450.00IIIIIIIMetaTraerj。四口1-己005MeUQuotesSoftwareCtjrp,1.181?1.1?侦01括15珈营005,16D«cO&OO16Dc£l:0DDacB10020Ok05
3、DO20DecHAD2iD«cD«0MACD!2,2t,卯-0.QQ224-O.CO1UJ-hEURLlSD.ni1.14071.16171.1506l.ifiLS0,00334步骤1-编写智能交易的描述您MACD5中刨割qInserl毯Moving设定快捷键同自定义1旨折脚本Onlinalibiry在智能交易的导航窗口处,点击鼠标右键并且选择在菜单中的“创建新智能交易”。创建智能交易的初始提醒将会询问你进入数据中心。在显示窗口,填写智能交易的名称(名称)-MACDSample,作者(作者)-指出你的名字,链接(连接)-你网页的链接,注解(注解)-MACDS本智能交易的测试
4、范例。步骤2-创建程序的基本结构测试智能交易的源代码将只占据一点位置,但是还是有些量经常很难抓住,特别是我们不是专业的编成工作者-另外,我们不需要这些描述,不是吗?:)一个标准智能交易的结构构想,让我们看看以下部分的描述:1. 初始变量初始数据检测o检测图表,图表中的柱数o检测外部变量值:标准手,S/L,T/P,T/S2. 对丁快速数据通道设置内部变量3. 检测交易终端-是无效的吗?如果是:o检测:账户上的可用保证金.o可能是看涨仓位(BUY)?开设看涨仓位并退出4. 可能是卖空仓位(SELL)?o开设卖空仓位并退出退出智能交易.周期循环检验先前开仓o如果是看涨仓位应该平仓?应该重新设定追踪止
5、损?如果是卖空仓位o应该平仓?o应该重新设定追踪止损?返回的结果很简单,只有4种。现在让我们尝试一步一步地区完成歹0出的计划:初始变量所有使用在智能交易程序中的变量必须按照MetaQuotesLanguage4要求的指定。这就是为什么我们在程序的开始插入初始变量的原因externdoubleTakeProfit=50;externdoubleLots=0.1;externdoubleTrailingStop=30;externdoubleMACDOpenLevel=3;externdoubleMACDCloseLevel=2;externdoubleMATrendPeriod=26;MetaQ
6、uotes语言4是需要“外部变量”辅助的。外部变量可以从外部设定,在智能交易程序源代码设定之后不可以修改。提供一个额外的灵活性。在我们的程序中,MATrendPeriod变量作为外部变量指定。在程序开始我们插入这个变量。externdoubleMATrendPeriod=26;检测初始数据该代码部分通常使用在所有的智能交易中。因为是一个标准的检测:/初始数据检测/确认智能交易运行正常非常重要/图表和用户设置不能出现任何错误/变量(Lots,StopLoss,TakeProfit,/TrailingStop)我们的情况需要检测TakeProfit/图表中少于100柱if(Bars<100)
7、(Print("少于100柱");return(0);1. if(TakeProfit<10)(Print(-赢利少于10");return(0);/检测TakeProfit对于数据的快速通道设置内部变量在源代码中经常需要注意指标值或计算值。简化代码和数据放置在内部变量中。intstart()(doubleMacdCurrent,MacdPrevious,SignalCurrent;doubleSignalPrevious,MaCurrent,MaPrevious;intcnt,ticket,total;9./简化代码/数据放置在内部变量中MacdCurre
8、nt=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,0);MacdPrevious=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,1);14.SignalCurrent=iMACD(NULL,0,12,26,9,PRICE_CLOSE,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,
9、0);MaPrevious=iMA(NULL,0,MATrendPeriod,0,MODE_EMA,PRICE_CLOSE,1);现在,用iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,0)替,您可以在源代码中使用MacdCurrent。2. 检测交易终端-是空的吗?如果是:在我们的智能交易中,我们仅使用开单和操作挂单。不过,使更安全,我们来认识一种对于先前定单交易终端检测:total=OrdersTotal();if(total<1)(o检测:账户上的可用保证金.在分析市场状况之前,检测你的账户上可用的自由保证金可以开仓。if(AccountFre
10、eMargin()<(1000*Lots)(Print("没有资金.自由保证金=",AccountFreeMargin();return(0);o可能是看涨仓位(BUY)?进入看涨仓位的条件:MACD低于零,向上并且穿过信号线向下。这就是我们在MQL4中描述的(注意我们在指标上的业务值保存在先前的变量中):/尽可能检测看涨仓位(BUY)if(MacdCurrent<0&&MacdCurrent>SignalCurrent&&MacdPreviousMathAbs(MacdCurrent)>(MACDOpenLevel*
11、Point)&&MaCurrent>MaPrevious)(ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point,"macdsample”,16384,0,Green);if(ticket>0)(if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)Print("BUY开单:”,OrderOpenPrice();elsePrint("错误openingBUYorder:”,GetLastError();retu
12、rn(0);附加的检验山丘的大小上面已经给出了描述。MACDOpenLevel变量是一个用户指定变量,它不可能改变程序文本,但是却有很大的灵活性。在程序开始我们插入这个变量的描述。o能交易示范22010年02月18日星期四10:15可能是卖空仓位(SELL)?进入卖空仓位的条件:MACD高丁零,向上并且穿过信号线向下。注解如下/尽可能的检测卖空仓位(SELL)if(MacdCurrent>0&&MacdCurrentSignalPrevious&&MacdCurrent>(MACDOpenLevel*Point)&&MaCurrent
13、ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,Bid-TakeProfit*Point,"macdsample",16384,0,Red);if(ticket>0)if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)Print("SELL开单:”,OrderOpenPrice();elsePrint("错误SELL定单开仓:”,GetLastError();return(0);return(0);周期循环检验先前开仓/进入市场的正确性非常重要/但是更重
14、要的是安全退出.for(cnt=0;cntOrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);if(OrderType()<=OP_SELL&&/检验开仓OrderSymbol()=Symbol()/检验货币对"cnt"-"是一个循环的变量必须在程序开始指定如下:intcnt=0;如果是看涨仓位if(OrderType()=OP_BUY)/打开看张仓位(o应该平仓吗?退出看涨仓位的条件:MACD穿过信号线,MACD高丁零,向上并穿过信号线向下。if(MacdCurrent>0&&Macd
15、CurrentSignalPrevious&&MacdCurrent>(MACDCloseLevel*Point)(OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet);/平仓return(0);/退出o应该重设追踪止损马?我们设定追踪止损只有在仓位盈利已经超过追踪水平点,并且新的止损水平点好丁先前的水平。/检测追踪止损if(TrailingStop>0)(if(Bid-OrderOpenPrice()>Point*TrailingStop)(if(OrderStopLoss()(OrderModify(Orde
16、rTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green);return(0);我们停止操作符。如果是卖空仓位else/卖空仓位(应该平仓吗?退出卖空仓位的条件:MACD穿过信号线,MAC呱丁零,向上并且穿过信号线向下。if(MacdCurrent<0&&MacdCurrent>SignalCurrent&&MacdPrevious(MACDCloseLevel*Point)OrderClose(OrderTicket(),OrderLots(),Ask,3
17、,Violet);/平仓return(0);/退出应该重设追踪止损吗?我们设定追踪止损只有在仓位盈利已经超过追踪水平点,并且新的止损水平点好丁先前的水平。/检测追踪止损if(TrailingStop>0)if(OrderOpenPrice()-Ask)>(Point*TrailingStop)if(OrderStopLoss()>(Ask+Point*TrailingStop)|(OrderStopLoss()=0)OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit
18、(),0,Red);return(0);关闭所有残留开仓。return(0);这样一步一步地编写我们的智能交易.智能交易示范32010年02月18日星期四10:16步骤3-集中程序的结果代码让我们打开智能交易的设定:使用按钮打开”届性."菜单。在窗口内指定运行参量的外部设定:从先前部分集中全部代码:/+/|MACDSample.mq4|/|Copyright?2005,MetaQuotesSoftwareCorp.|/|(doubleMacdCurrent,MacdPrevious,SignalCurrent;doubleSignalPrevious,MaCurrent,MaPrev
19、ious;intcnt,ticket,total;/检测初始化数据/确定智能交易在图表中运行正常非常重要/用户在外部变量交易中不会产生任何错误/外部变量(标准手数,止损,赢利,/追踪止损)在这种情况下,我们检测图表中赢利水平要小于100柱if(Bars<100)(Print("少于100柱");return(0);if(TakeProfit<10)(Print("赢利少于10");return(0);/检测赢利水平/简化代码和加速通道/数据被放置在内部变量中MacdCurrent=iMACD(NULL,0,12,26,9,PRICE_CLOS
20、E,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);MaPrevious=iMA(NULL,0,MATrendPeriod,0,MO
21、DE_EMA,PRICE_CLOSE,1);total=OrdersTotal();if(total<1)(/没有指定开单if(AccountFreeMargin()<(1000*Lots)(Print("没有资金.自由保证金=",AccountFreeMargin();return(0);/尽可能检测看涨仓位(BUY)if(MacdCurrent<0&&MacdCurrent>SignalCurrent&&MacdPrevious<SignalPrevious&&MathAbs(MacdCurr
22、ent)>(MACDOpenLevel*Point)&&MaCurrent>MaPrevious)ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point,"macdsample",16384,0,Green);if(ticket>0)(if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)Print("BUY定单开仓:",OrderOpenPrice();elsePrint("错误BUY
23、S单开仓:",GetLastError();return(0);/尽可能检测卖空仓位(SELL)if(MacdCurrent>0&&MacdCurrent<SignalCurrent&&MacdPrevious>SignalPrevious&&MacdCurrent>(MACDOpenLevel*Point)&&MaCurrent<MaPrevious)(ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,Bid-TakeProfit*Point,&
24、quot;macdsample",16384,0,Red);if(ticket>0)(if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)Print("SELL定单开仓:",OrderOpenPrice();elsePrint("错误SELL定单开仓:",GetLastError();return(0);return(0);/正确进入市场很重要,/但正确退出市场更重要.for(cnt=0;cnt<total;cnt+)(OrderSelect(cnt,SELECT_BY_POS,MO
25、DE_TRADES);if(OrderType()<=OP_SELL&&/检测开仓OrderSymbol()=Symbol()/检测货币对(if(OrderType()=OP_BUY)/看涨仓位开仓(/需要平仓吗?if(MacdCurrent>0&&MacdCurrent<SignalCurrent&&MacdPrevious>SignalPrevious&&MacdCurrent>(MACDCloseLevel*Point)(OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet);/平仓return(0);/退出/检测追踪止损if(TrailingStop>0)(if(Bid-OrderOpenPrice()>Point*TrailingStop)(if(OrderStopLoss()<Bid-Point*TrailingStop)(OrderModify(OrderTicket
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 32566.2-2025不锈钢焊接气瓶第2部分:试验压力大于6 MPa的气瓶
- 应急安全培训基地图标课件
- 应急安全业务培训总结课件
- 应急保障局安全培训证书课件
- 2025年公务员考试时事政治真题(易错题)附答案详解大全
- 2025年福建林业职业技术学院招聘9人方案笔试备考题库及答案详解1套
- 老年人传染病易感因素与针对性防护护理措施
- 2024年自考专业(计算机应用)题库检测试题打印(夺冠)附答案详解
- 2025年智慧物流园区资金申请项目投资回报与盈利模式分析报告
- 2025年线下演出市场复苏与可持续发展战略研究报告
- 2024-2025学年深圳北师大版八年级下学期期末数学复习题《平行四边形》解答题含答案
- 2025年老年教育课程考试题及答案
- 中小学生安全知识题库-交通安全知识题库
- 第十三章 三角形 单元测试(含答案)人教版数学八年级上册
- 2025-2026教科版(2024)科学一年级上册教学设计及每课教学反思(附目录)
- 2025届高中地理人教版一轮复习第29课时导学案:内力作用与地表形态
- 糖尿病肾衰竭疑难病例讨论
- 通信网络应急预案演练计划
- 海边赶海活动方案
- 版大学习、大培训、大考试专项行动工作方案
- 2025至2030年中国医用激光光纤行业市场全景分析及产业前景研判报告
评论
0/150
提交评论