文档编制序号:[KK8UY-LL9IO69-TTO6M3-MTOL89-FTT688]外汇mt编程ea编写中级第版外汇mt4编程:ea编写中级(第2版)外汇MT4编程:MT4EA编写中级(第2版共十六课)原创:李沂鸿(柒侠伍义)国家:马来西亚第1章:初级EA以下是初级EA////////////ea不读这个注解///////////////////////#propertycopyright"柒侠伍义_初级EA教程_商业版本"datetime限制一根柱子下注一次=0;//自定义externdouble下注数量=0.1;//自定义externdouble止损=200;//自定义externdouble止盈=200;//自定义externdouble滑点=30;//自定义externbool使用音乐=true;//true=要用false=不要用externbool使用弹出提示=false;//true=要用false=不要用stringea名字="柒侠伍义_初级EA教程";externdouble开始交易时间=3;//自定义交易时间externdouble结束交易时间=23;//自定义交易时间double魔术号码=16384;//自定义魔术号码double死亡日期年=2009;//自定义ea终止日期double死亡日期月=12;//自定义ea终止日期double死亡日期日=12;//自定义ea终止日期double死亡日期时=12;//自定义ea终止日期double赢钱目标=10000;//自定义赢太多了不要做单double输钱目标=500;//自定义输太惨了不要做单string交易商="FOREX.com";//自定义交易商externstring货币对1="EURUSD";//自定义指定货币对externstring货币对2="EURJPY";//自定义指定货币对externstring货币对3="GBPUSD";//自定义指定货币对double时间周期1=30,时间周期2=60;//自定义时间周期////////////ea不读这个注解///////////////////////intstart()//ea开始运行{//开始主程式HideTestIndicators(true);//命令ea隐藏ea中的指标if(AccountFreeMarginCheck(Symbol(),OP_BUY,下注数量)<=0||GetLastError()==134){return;}//命令ea如果保证金不足不要交易if(AccountFreeMarginCheck(Symbol(),OP_SELL,下注数量)<=0||GetLastError()==134){return;}//命令ea如果保证金不足不要交易////////////ea不读这个注解///////////////////////if(//开始如果OrdersTotal()==0//没有单可以下注&&Close[0]-Open[0]>200*Point//判断上升趋势&&Close[1]-Open[1]>200*Point//判断上升趋势&&Close[2]-Open[2]>200*Point//判断上升趋势&&Close[3]-Open[3]>200*Point//判断上升趋势&&限制一根柱子下注一次!=Time[0]//限制一根柱子下注一次&&IsDemo()//限制模拟户口运行&&DayOfWeek()!=0//礼拜不要交易&&DayOfWeek()!=6//星期6不要交易&&DayOfWeek()!=5//星期5不要交易&&(Hour()>开始交易时间&&Hour()<结束交易时间)//限制交易时间:早上3点到晚上10点可以交易&&Year()==2009//限制交易时间:只限2009年可以运行&&(Year()<=死亡日期年&&Month()<=死亡日期月&&Day()<=死亡日期日&&Hour()<=死亡日期时)//ea死亡日期&&AccountNumber()==用户账户//指定用户账户&&(AccountBalance()<赢钱目标&&AccountBalance()>输钱目标)//赢太多了不要做单输太惨了不要做单&&AccountCompany()==交易商//指定交易商方可交易&&(Symbol()==货币对1||Symbol()==货币对2||Symbol()==货币对3)//指定货币对&&(Period()==时间周期1||Period()==时间周期2)//指定时间周期运行){OrderSend(Symbol(),OP_BUY,下注数量,Ask,滑点,Ask-止损*Point,Ask+止盈*Point,""+ea名字+"",魔术号码,0,Green);限制一根柱子下注一次=Time[0];if(使用音乐){PlaySound("Conditions.wav");}if(使用弹出提示){Alert("M",Period(),"",Symbol(),"buy开仓,余额资金::",AccountBalance(),"");}}//endif结束如果////////////ea不读这个注解///////////////////////if(//开始如果OrdersTotal()==0//没有单可以下注&&Open[0]-Close[0]>200*Point//判断下降趋势&&Open[1]-Close[1]>200*Point//判断下降趋势&&Open[2]-Close[2]>200*Point//判断下降趋势&&Open[3]-Close[3]>200*Point//判断下降趋势&&限制一根柱子下注一次!=Time[0]//限制一根柱子下注一次&&IsDemo()//限制模拟户口运行&&DayOfWeek()!=0//礼拜不要交易&&DayOfWeek()!=6//星期6不要交易&&DayOfWeek()!=5//星期5不要交易&&(Hour()>开始交易时间&&Hour()<结束交易时间)//限制交易时间:早上3点到晚上10点可以交易&&Year()==2009//限制交易时间:只限2009年可以运行&&(Year()<=死亡日期年&&Month()<=死亡日期月&&Day()<=死亡日期日&&Hour()<=死亡日期时)//ea死亡日期&&AccountNumber()==用户账户//指定用户账户&&(AccountBalance()<赢钱目标&&AccountBalance()>输钱目标)//赢太多了不要做单输太惨了不要做单&&AccountCompany()==交易商//指定交易商方可交易&&(Symbol()==货币对1||Symbol()==货币对2||Symbol()==货币对3)//指定货币对&&(Period()==时间周期1||Period()==时间周期2)//指定时间周期运行){OrderSend(Symbol(),OP_SELL,下注数量,Bid,滑点,Bid+止损*Point,Bid-止盈*Point,""+ea名字+"",魔术号码,0,Red);限制一根柱子下注一次=Time[0];if(使用音乐){PlaySound("Conditions.wav");}if(使用弹出提示){Alert("M",Period(),"",Symbol(),"sell开仓,余额资金::",AccountBalance(),"");}}//endif结束如果////////////ea不读这个注解///////////////////////return(0);//叫ea重复运行每秒大概可能重新运算100次}//starttoend结束主程式第2章:删除不是很重要的自定义为了方便学习1.////////////ea不读这个注解///////////////////////2.#propertycopyright"柒侠伍义_初级EA教程_商业版本"3.datetime限制一根柱子下注一次=0;//自定义4.externdouble下注数量=0.1;//自定义5.externdouble止损=200;//自定义6.externdouble止盈=200;//自定义7.externdouble滑点=30;//自定义8.externbool使用音乐=true;//true=要用false=不要用9.externbool使用弹出提示=false;//true=要用false=不要用10.stringea名字="柒侠伍义_初级EA教程";11.//externdouble开始交易时间=3;//自定义交易时间12.//externdouble结束交易时间=23;//自定义交易时间13.double魔术号码=16384;//自定义魔术号码14.//double死亡日期年=2009;//自定义ea终止日期15.//double死亡日期月=12;//自定义ea终止日期16.//double死亡日期日=12;//自定义ea终止日期17.//double死亡日期时=12;//自定义ea终止日期18.19.//double赢钱目标=10000;//自定义赢太多了不要做单20.//double输钱目标=500;//自定义输太惨了不要做单21.//string交易商="FOREX.com";//自定义交易商22.//externstring货币对1="EURUSD";//自定义指定货币对23.//externstring货币对2="EURJPY";//自定义指定货币对24.//externstring货币对3="GBPUSD";//自定义指定货币对25.//double时间周期1=30,时间周期2=60;//自定义时间周期26.////////////ea不读这个注解///////////////////////27.intstart()//ea开始运行28.{//开始主程式29.30.HideTestIndicators(true);//命令ea隐藏ea中的指标31.if(AccountFreeMarginCheck(Symbol(),OP_BUY,下注数量)<=0||GetLastError()==134){return;}//命令ea如果保证金不足不要交易32.if(AccountFreeMarginCheck(Symbol(),OP_SELL,下注数量)<=0||GetLastError()==134){return;}//命令ea如果保证金不足不要交易33.34.////////////ea不读这个注解///////////////////////35.36.if(//开始如果37.OrdersTotal()==0//没有单可以下注38.&&Close[0]-Open[0]>200*Point//判断上升趋势39.&&Close[1]-Open[1]>200*Point//判断上升趋势40.&&Close[2]-Open[2]>200*Point//判断上升趋势41.&&Close[3]-Open[3]>200*Point//判断上升趋势42.&&限制一根柱子下注一次!=Time[0]//限制一根柱子下注一次43.//&&IsDemo()//限制模拟户口运行44.//&&DayOfWeek()!=0//礼拜不要交易45.//&&DayOfWeek()!=6//星期6不要交易46.//&&DayOfWeek()!=5//星期5不要交易47.//&&(Hour()>开始交易时间&&Hour()<结束交易时间)//限制交易时间:早上3点到晚上10点可以交易48.//&&Year()==2009//限制交易时间:只限2009年可以运行49.//&&(Year()<=死亡日期年&&Month()<=死亡日期月&&Day()<=死亡日期日&&Hour()<=死亡日期时)//ea死亡日期50.//&&AccountNumber()==用户账户//指定用户账户51.//&&(AccountBalance()<赢钱目标&&AccountBalance()>输钱目标)//赢太多了不要做单输太惨了不要做单52.//&&AccountCompany()==交易商//指定交易商方可交易53.//&&(Symbol()==货币对1||Symbol()==货币对2||Symbol()==货币对3)//指定货币对54.//&&(Period()==时间周期1||Period()==时间周期2)//指定时间周期运行55.){56.OrderSend(Symbol(),OP_BUY,下注数量,Ask,滑点,Ask-止损*Point,Ask+止盈*Point,""+ea名字+"",魔术号码,0,Green);57.限制一根柱子下注一次=Time[0];58.if(使用音乐){PlaySound("Conditions.wav");}59.if(使用弹出提示){Alert("M",Period(),"",Symbol(),"buy开仓,余额资金::",AccountBalance(),"");}60.}//endif结束如果61.62.////////////ea不读这个注解///////////////////////63.64.65.if(//开始如果66.OrdersTotal()==0//没有单可以下注67.&&Open[0]-Close[0]>200*Point//判断下降趋势68.&&Open[1]-Close[1]>200*Point//判断下降趋势69.&&Open[2]-Close[2]>200*Point//判断下降趋势70.&&Open[3]-Close[3]>200*Point//判断下降趋势71.&&限制一根柱子下注一次!=Time[0]//限制一根柱子下注一次72.//&&IsDemo()//限制模拟户口运行73.//&&DayOfWeek()!=0//礼拜不要交易74.//&&DayOfWeek()!=6//星期6不要交易75.//&&DayOfWeek()!=5//星期5不要交易76.//&&(Hour()>开始交易时间&&Hour()<结束交易时间)//限制交易时间:早上3点到晚上10点可以交易77.//&&Year()==2009//限制交易时间:只限2009年可以运行78.//&&(Year()<=死亡日期年&&Month()<=死亡日期月&&Day()<=死亡日期日&&Hour()<=死亡日期时)//ea死亡日期79.//&&AccountNumber()==用户账户//指定用户账户80.//&&(AccountBalance()<赢钱目标&&AccountBalance()>输钱目标)//赢太多了不要做单输太惨了不要做单81.//&&AccountCompany()==交易商//指定交易商方可交易82.//&&(Symbol()==货币对1||Symbol()==货币对2||Symbol()==货币对3)//指定货币对83.//&&(Period()==时间周期1||Period()==时间周期2)//指定时间周期运行84.){85.OrderSend(Symbol(),OP_SELL,下注数量,Bid,滑点,Bid+止损*Point,Bid-止盈*Point,""+ea名字+"",魔术号码,0,Red);86.限制一根柱子下注一次=Time[0];87.if(使用音乐){PlaySound("Conditions.wav");}88.if(使用弹出提示){Alert("M",Period(),"",Symbol(),"sell开仓,余额资金::",AccountBalance(),"");}89.}//endif结束如果90.91.92.////////////ea不读这个注解///////////////////////93.94.return(0);//叫ea重复运行每秒大概可能重新运算100次95.}//starttoend结束主程式第3章:真正删除不重要的是不是好看一点了哈哈和。。。1.2.////////////ea不读这个注解///////////////////////3.#propertycopyright"柒侠伍义_初级EA教程_商业版本"4.datetime限制一根柱子下注一次=0;//自定义5.externdouble下注数量=0.1;//自定义6.externdouble止损=200;//自定义7.externdouble止盈=200;//自定义8.externdouble滑点=30;//自定义9.externbool使用音乐=true;//true=要用false=不要用10.externbool使用弹出提示=false;//true=要用false=不要用11.stringea名字="柒侠伍义_初级EA教程";12.double魔术号码=16384;//自定义魔术号码13.////////////ea不读这个注解///////////////////////14.intstart()//ea开始运行15.{//开始主程式16.HideTestIndicators(true);//命令ea隐藏ea中的指标17.if(AccountFreeMarginCheck(Symbol(),OP_BUY,下注数量)<=0||GetLastError()==134){return;}//命令ea如果保证金不足不要交易18.if(AccountFreeMarginCheck(Symbol(),OP_SELL,下注数量)<=0||GetLastError()==134){return;}//命令ea如果保证金不足不要交易19.////////////ea不读这个注解///////////////////////20.21.if(//开始如果22.OrdersTotal()==0//没有单可以下注23.&&Close[0]-Open[0]>200*Point//判断上升趋势24.&&Close[1]-Open[1]>200*Point//判断上升趋势25.&&Close[2]-Open[2]>200*Point//判断上升趋势26.&&Close[3]-Open[3]>200*Point//判断上升趋势27.&&限制一根柱子下注一次!=Time[0]//限制一根柱子下注一次28.){29.OrderSend(Symbol(),OP_BUY,下注数量,Ask,滑点,Ask-止损*Point,Ask+止盈*Point,""+ea名字+"",魔术号码,0,Green);30.限制一根柱子下注一次=Time[0];31.if(使用音乐){PlaySound("Conditions.wav");}32.if(使用弹出提示){Alert("M",Period(),"",Symbol(),"buy开仓,余额资金::",AccountBalance(),"");}33.}//endif结束如果34.////////////ea不读这个注解///////////////////////35.36.if(//开始如果37.OrdersTotal()==0//没有单可以下注38.&&Open[0]-Close[0]>200*Point//判断下降趋势39.&&Open[1]-Close[1]>200*Point//判断下降趋势40.&&Open[2]-Close[2]>200*Point//判断下降趋势41.&&Open[3]-Close[3]>200*Point//判断下降趋势42.&&限制一根柱子下注一次!=Time[0]//限制一根柱子下注一次43.){44.OrderSend(Symbol(),OP_SELL,下注数量,Bid,滑点,Bid+止损*Point,Bid-止盈*Point,""+ea名字+"",魔术号码,0,Red);45.限制一根柱子下注一次=Time[0];46.if(使用音乐){PlaySound("Conditions.wav");}47.if(使用弹出提示){Alert("M",Period(),"",Symbol(),"sell开仓,余额资金::",AccountBalance(),"");}48.}//endif结束如果49.50.////////////ea不读这个注解///////////////////////51.return(0);//叫ea重复运行每秒大概可能重新运算100次52.}//starttoend结束主程式第4章:把复杂变简单-子程式注意变法!把这个easaveas另外一个新的名字,比如:my3ea////////////ea不读这个注解///////////////////////#propertycopyright"柒侠伍义_初级EA教程_商业版本"datetime限制一根柱子下注一次=0;//自定义externdouble下注数量=0.1;//自定义externdouble止损=200;//自定义externdouble止盈=200;//自定义externdouble滑点=30;//自定义externbool使用音乐=true;//true=要用false=不要用externbool使用弹出提示=false;//true=要用false=不要用stringea名字="柒侠伍义_初级EA教程";double魔术号码=16384;//自定义魔术号码////////////ea不读这个注解///////////////////////intstart()//ea开始运行{//开始主程式HideTestIndicators(true);//命令ea隐藏ea中的指标if(AccountFreeMarginCheck(Symbol(),OP_BUY,下注数量)<=0||GetLastError()==134){return;}//命令ea如果保证金不足不要交易if(AccountFreeMarginCheck(Symbol(),OP_SELL,下注数量)<=0||GetLastError()==134){return;}//命令ea如果保证金不足不要交易////////////ea不读这个注解///////////////////////策略管理();//子程式////////////ea不读这个注解///////////////////////return(0);//叫ea重复运行每秒大概可能重新运算100次}//starttoend结束主程式////////////ea不读这个注解///////////////////////void策略管理(){//子程式if(//开始如果OrdersTotal()==0//没有单可以下注&&Close[0]-Open[0]>200*Point//判断上升趋势&&Close[1]-Open[1]>200*Point//判断上升趋势&&Close[2]-Open[2]>200*Point//判断上升趋势&&Close[3]-Open[3]>200*Point//判断上升趋势&&限制一根柱子下注一次!=Time[0]//限制一根柱子下注一次){OrderSend(Symbol(),OP_BUY,下注数量,Ask,滑点,Ask-止损*Point,Ask+止盈*Point,""+ea名字+"",魔术号码,0,Green);限制一根柱子下注一次=Time[0];if(使用音乐){PlaySound("Conditions.wav");}if(使用弹出提示){Alert("M",Period(),"",Symbol(),"buy开仓,余额资金::",AccountBalance(),"");}}//endif结束如果////////////ea不读这个注解///////////////////////if(//开始如果OrdersTotal()==0//没有单可以下注&&Open[0]-Close[0]>200*Point//判断下降趋势&&Open[1]-Close[1]>200*Point//判断下降趋势&&Open[2]-Close[2]>200*Point//判断下降趋势&&Open[3]-Close[3]>200*Point//判断下降趋势&&限制一根柱子下注一次!=Time[0]//限制一根柱子下注一次){OrderSend(Symbol(),OP_SELL,下注数量,Bid,滑点,Bid+止损*Point,Bid-止盈*Point,""+ea名字+"",魔术号码,0,Red);限制一根柱子下注一次=Time[0];if(使用音乐){PlaySound("Conditions.wav");}if(使用弹出提示){Alert("M",Period(),"",Symbol(),"sell开仓,余额资金::",AccountBalance(),"");}}//endif结束如果}//结束子程式第5章:把复杂变简单-子程式中的子程式////////////ea不读这个注解///////////////////////#propertycopyright"柒侠伍义_初级EA教程_商业版本"datetime限制一根柱子下注一次=0;//自定义externdouble下注数量=0.1;//自定义externdouble止损=200;//自定义externdouble止盈=200;//自定义externdouble滑点=30;//自定义externbool使用音乐=true;//true=要用false=不要用externbool使用弹出提示=false;//true=要用false=不要用stringea名字="柒侠伍义_初级EA教程";double魔术号码=16384;//自定义魔术号码////////////ea不读这个注解///////////////////////intstart()//ea开始运行{//开始主程式HideTestIndicators(true);//命令ea隐藏ea中的指标if(AccountFreeMarginCheck(Symbol(),OP_BUY,下注数量)<=0||GetLastError()==134){return;}//命令ea如果保证金不足不要交易if(AccountFreeMarginCheck(Symbol(),OP_SELL,下注数量)<=0||GetLastError()==134){return;}//命令ea如果保证金不足不要交易////////////ea不读这个注解///////////////////////策略管理();//子程式////////////ea不读这个注解///////////////////////return(0);//叫ea重复运行每秒大概可能重新运算100次}//starttoend结束主程式////////////ea不读这个注解///////////////////////void策略管理(){//子程式if(//开始如果OrdersTotal()==0//没有单可以下注&&Close[0]-Open[0]>200*Point//判断上升趋势&&Close[1]-Open[1]>200*Point//判断上升趋势&&Close[2]-Open[2]>200*Point//判断上升趋势&&Close[3]-Open[3]>200*Point//判断上升趋势&&限制一根柱子下注一次!=Time[0]//限制一根柱子下注一次){买上();}//endif结束如果////////////ea不读这个注解///////////////////////if(//开始如果OrdersTotal()==0//没有单可以下注&&Open[0]-Close[0]>200*Point//判断下降趋势&&Open[1]-Close[1]>200*Point//判断下降趋势&&Open[2]-Close[2]>200*Point//判断下降趋势&&Open[3]-Close[3]>200*Point//判断下降趋势&&限制一根柱子下注一次!=Time[0]//限制一根柱子下注一次){OrderSend(Symbol(),OP_SELL,下注数量,Bid,滑点,Bid+止损*Point,Bid-止盈*Point,""+ea名字+"",魔术号码,0,Red);限制一根柱子下注一次=Time[0];if(使用音乐){PlaySound("Conditions.wav");}if(使用弹出提示){Alert("M",Period(),"",Symbol(),"sell开仓,余额资金::",AccountBalance(),"");}}//endif结束如果}//结束策略管理子程式/////////////////////////////////////////////////void买上(){//买上子程式开始OrderSend(Symbol(),OP_BUY,下注数量,Ask,滑点,Ask-止损*Point,Ask+止盈*Point,""+ea名字+"",魔术号码,0,Green);限制一根柱子下注一次=Time[0];if(使用音乐){PlaySound("Conditions.wav");}if(使用弹出提示){Alert("M",Period(),"",Symbol(),"buy开仓,余额资金::",AccountBalance(),"");}}//结束买上第6章:把复杂变简单-卖下子程式你应当学会把买上变成子程式试一试把卖下变成子程式//---------------------------------------------------------------#propertycopyright"柒侠伍义_初级EA教程_商业版本"datetime限制一根柱子下注一次=0;//自定义externdouble下注数量=0.1;//自定义externdouble止损=200;//自定义externdouble止盈=200;//自定义externdouble滑点=30;//自定义externbool使用音乐=true;//true=要用false=不要用externbool使用弹出提示=false;//true=要用false=不要用stringea名字="柒侠伍义_初级EA教程";double魔术号码=16384;//自定义魔术号码//---------------------------------------------------------------intstart()//ea开始运行{//开始主程式HideTestIndicators(true);//命令ea隐藏ea中的指标if(AccountFreeMarginCheck(Symbol(),OP_BUY,下注数量)<=0||GetLastError()==134){return;}//命令ea如果保证金不足不要交易if(AccountFreeMarginCheck(Symbol(),OP_SELL,下注数量)<=0||GetLastError()==134){return;}//命令ea如果保证金不足不要交易策略管理();//子程式return(0);//叫ea重复运行每秒大概可能重新运算100次}//starttoend结束主程式//---------------------------------------------------------------void策略管理(){//子程式if(//开始如果OrdersTotal()==0//没有单可以下注&&Close[0]-Open[0]>200*Point//判断上升趋势&&Close[1]-Open[1]>200*Point//判断上升趋势&&Close[2]-Open[2]>200*Point//判断上升趋势&&Close[3]-Open[3]>200*Point//判断上升趋势&&限制一根柱子下注一次!=Time[0]//限制一根柱子下注一次){买上();}//endif结束如果if(//开始如果OrdersTotal()==0//没有单可以下注&&Open[0]-Close[0]>200*Point//判断下降趋势&&Open[1]-Close[1]>200*Point//判断下降趋势&&Open[2]-Close[2]>200*Point//判断下降趋势&&Open[3]-Close[3]>200*Point//判断下降趋势&&限制一根柱子下注一次!=Time[0]//限制一根柱子下注一次){卖下();}//endif结束如果}//结束策略管理子程式//---------------------------------------------------------------void买上(){//买上子程式开始OrderSend(Symbol(),OP_BUY,下注数量,Ask,滑点,Ask-止损*Point,Ask+止盈*Point,""+ea名字+"",魔术号码,0,Green);限制一根柱子下注一次=Time[0];if(使用音乐){PlaySound("Conditions.wav");}if(使用弹出提示){Alert("M",Period(),"",Symbol(),"buy开仓,余额资金::",AccountBalance(),"");}}//结束买上子程式//---------------------------------------------------------------卖下(){//卖下子程式开始OrderSend(Symbol(),OP_SELL,下注数量,Bid,滑点,Bid+止损*Point,Bid-止盈*Point,""+ea名字+"",魔术号码,0,Red);限制一根柱子下注一次=Time[0];if(使用音乐){PlaySound("Conditions.wav");}if(使用弹出提示){Alert("M",Period(),"",Symbol(),"sell开仓,余额资金::",AccountBalance(),"");}}//结束卖下子程式//---------------------------------------------------------------第7章:macdsample打开你的macdsample找一个叫OrderClose的东西我们来做一个OrderClose的子程式//+------------------------------------------------------------------+//|MACDSample.mq4|//|Copyright2005,MetaQuotesSoftwareCorp.|//|//+------------------------------------------------------------------+externdoubleTakeProfit=50;externdoubleLots=0.1;externdoubleTrailingStop=30;externdoubleMACDOpenLevel=3;externdoubleMACDCloseLevel=2;externdoubleMATrendPeriod=26;//+------------------------------------------------------------------+//||//+------------------------------------------------------------------+intstart(){doubleMacdCurrent,MacdPrevious,SignalCurrent;doubleSignalPrevious,MaCurrent,MaPrevious;intcnt,ticket,total;//initialdatachecks//itisimportanttomakesurethattheexpertworkswithanormal//chartandtheuserdidnotmakeanymistakessettingexternal//variables(Lots,StopLoss,TakeProfit,//TrailingStop)inourcase,wecheckTakeProfit//onachartoflessthan100barsif(Bars<100){Print("barslessthan100");return(0);}if(TakeProfit<10){Print("TakeProfitlessthan10");return(0);//checkTakeProfit}//tosimplifythecodingandspeedupaccess//dataareputintointernalvariablesMacdCurrent=iMACD(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);MaPrevious=iMA(NULL,0,MATrendPeriod,0,MODE_EMA,PRICE_CLOSE,1);total=OrdersTotal();if(total<1){//noopenedordersidentifiedif(AccountFreeMargin()<(1000*Lots)){Print("Wehavenomoney.FreeMargin=",AccountFreeMargin());return(0);}//checkforlongposition(BUY)possibilityif(MacdCurrent<0&&MacdCurrent>SignalCurrent&&MacdPrevious<SignalPrevious&&MathAbs(MacdCurrent)>(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("BUYorderopened:",OrderOpenPrice());}elsePrint("ErroropeningBUYorder:",GetLastError());return(0);}//checkforshortposition(SELL)possibilityif(MacdCurrent>0&&MacdCurrent<SignalCurrent&&MacdPrevious>SignalPrevious&&MacdCurrent>(MACDOpenLevel*Point)&&MaCurrent<MaPrevious){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("SELLorderopened:",OrderOpenPrice());}elsePrint("ErroropeningSELLorder:",GetLastError());return(0);}return(0);}//itisimportanttoenterthemarketcorrectly,//butitismoreimportanttoexititcorrectly...for(cnt=0;cnt<total;cnt++){OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);if(OrderType()<=OP_SELL&&//checkforopenedpositionOrderSymbol()==Symbol())//checkforsymbol{if(OrderType()==OP_BUY)//longpositionisopened{//shoulditbeclosed?if(MacdCurrent>0&&MacdCurrent<SignalCurrent&&MacdPrevious>SignalPrevious&&MacdCurrent>(MACDCloseLevel*Point)){OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet);//closepositionreturn(0);//exit}//checkfortrailingstopif(TrailingStop>0){if(Bid-OrderOpenPrice()>oint*TrailingStop){if(OrderStopLoss()<Bid-Point*TrailingStop){OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green);return(0);}}}}else//gotoshortposition{//shoulditbeclosed?if(MacdCurrent<0&&MacdCurrent>SignalCurrent&&MacdPrevious<SignalPrevious&&MathAbs(MacdCurrent)>(MACDCloseLevel*Point)){OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet);//closepositionreturn(0);//exit}//checkfortrailingstopif(TrailingStop>0){if((OrderOpenPrice()-Ask)>(Point*TrailingStop)){if((OrderStopLoss()>(Ask+Point*TrailingStop))||(OrderStopLoss()==0)){OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red);return(0);}}}}}}return(0);}//theend.第8章:macdsample解读版如果你还不知道macdsample讲什么,下面解读你就要仔细的研究一番1.2.11.//这是自定义函数12.externdoubleTakeProfit=50;//盈利目标点数13.externdoubleLots=0.1;//每单入场的手数14.externdoubleTrailingStop=30;//追踪止损的点数15.externdoubleMACDOpenLevel=3;//MACD开仓的参考位置16.externdoubleMACDCloseLevel=2;//MACD出场的参考位置17.externdoubleMATrendPeriod=26;//条件中使用的MA均线的周期数18.//程序最上面extern开始的这些数据都是程序
本文档为【外汇mt编程ea编写中级第版】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。