现货黄金

EA程序编写中级

MT4+EA 中级篇


第一章:初级EA

////////////ea 不读这个注解///////////////////////
#property copyright "柒侠伍义_初级EA教程_商业版本"
datetime 限制一根柱子下注一次 =0; //定义
extern double 下注数量=0.1;  //自定义
extern double 止损=200;  //自定义
extern double 止盈=200;  //自定义
extern double 滑点=30;  //自定义
extern bool  使用音乐=true;  //true=要用  false=不要用
extern bool  使用弹出提示=false;  //true=要用  false=不要用
string   ea名字 = "柒侠伍义_初级EA教程";
extern double 开始交易时间=3;  //自定义交易时间
extern double 结束交易时间=23;  //自定义交易时间
double 魔术号码=16384;  //自定义魔术号码
double 死亡日期年=2009; //自定义ea终止日期
double 死亡日期月=12; //自定义ea终止日期
double 死亡日期日=12; //自定义ea终止日期
double 死亡日期时=12; //自定义ea终止日期
double 用户账户=90240764; //自定义指定用户帐号
double 赢钱目标 =10000;//自定义赢太多了不要做单
double 输钱目标 =500;  //自定义输太惨了不要做单
string   交易商 = "FOREX.com"; //自定义交易商
extern string 货币对1 = "EURUSD";  //自定义指定货币对
extern string 货币对2 = "EURJPY";  //自定义指定货币对
extern string 货币对3 = "GBPUSD";  //自定义指定货币对
double 时间周期1=30,时间周期2=60;  //自定义时间周期
////////////ea 不读这个注解///////////////////////
int start() //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()," ");}
} // end if 结束如果  
////////////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()," ");}
}   // end if 结束如果  

////////////ea 不读这个注解///////////////////////
   return(0); //ea 重复运行 每秒大概可能重新运算100
  }  //start to end 结束主程式

 

2章:删除不是很重要的自定义

为了方便学习

1. ////////////ea 不读这个注解///////////////////////

2. #property copyright "柒侠伍义_初级EA教程_商业版本"

3. datetime 限制一根柱子下注一次 =0; //自定义

4. extern double 下注数量=0.1; //自定义

5. extern double 止损=200; //自定义

6. extern double 止盈=200; //自定义

7. extern double 滑点=30; //自定义

8. extern bool 使用音乐=true; //true=要用 false=不要用

9. extern bool 使用弹出提示=false; //true=要用 false=不要用

10. string ea名字 = "柒侠伍义_初级EA教程";

11. //extern double 开始交易时间=3; //自定义交易时间

12. //extern double 结束交易时间=23; //自定义交易时间

13. double 魔术号码=16384; //自定义魔术号码

14. //double 死亡日期年=2009; //自定义ea终止日期

15. //double 死亡日期月=12; //自定义ea终止日期

16. //double 死亡日期日=12; //自定义ea终止日期

17. //double 死亡日期时=12; //自定义ea终止日期

18. //double 用户账户=90240764; //自定义指定用户帐号

19. //double 赢钱目标 =10000;//自定义赢太多了不要做单

20. //double 输钱目标 =500; //自定义输太惨了不要做单

21. //string 交易商 = "FOREX.com"; //自定义交易商

22. //extern string 货币对1 = "EURUSD"; //自定义指定货币对

23. //extern string 货币对2 = "EURJPY"; //自定义指定货币对

24. //extern string 货币对3 = "GBPUSD"; //自定义指定货币对

25. //double 时间周期1=30,时间周期2=60; //自定义时间周期

26. ////////////ea 不读这个注解///////////////////////

27. int start() //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. } // end if 结束如果

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. } // end if 结束如果

90. 

91. 

92. ////////////ea 不读这个注解///////////////////////

93. 

94. return(0); //ea 重复运行 每秒大概可能重新运算100

95. } //start to end 结束主程式

复制代码

 


3章:真正删除不重要的

 

1. 

2. 

3. ////////////ea 不读这个注解///////////////////////

4. #property copyright "柒侠伍义_初级EA教程_商业版本"

5. datetime 限制一根柱子下注一次 =0; //自定义

6. extern double 下注数量=0.1;  //自定义

7. extern double 止损=200;  //自定义

8. extern double 止盈=200;  //自定义

9. extern double 滑点=30;  //自定义

10. extern bool  使用音乐=true;  //true=要用  false=不要用

11. extern bool  使用弹出提示=false;  //true=要用  false=不要用

12. string   ea名字 = "柒侠伍义_初级EA教程";

13. double 魔术号码=16384;  //自定义魔术号码

14. ////////////ea 不读这个注解///////////////////////

15. int start() //ea 开始运行

16.   {  //开始主程式

17. HideTestIndicators(true);//命令ea隐藏ea中的指标

18. if(AccountFreeMarginCheck(Symbol(),OP_BUY,下注数量)<=0 || GetLastError()==134) {return;}//命令ea如果保证金不足不要交易

19. if(AccountFreeMarginCheck(Symbol(),OP_SELL,下注数量)<=0 || GetLastError()==134){return;}//命令ea如果保证金不足不要交易

20. ////////////ea 不读这个注解///////////////////////

21.    

22. if(  //开始如果

23. OrdersTotal()==0 //没有单可以下注

24. && Close[0]-Open[0]>200*Point //判断上升趋势

25. && Close[1]-Open[1]>200*Point //判断上升趋势

26. && Close[2]-Open[2]>200*Point //判断上升趋势

27. && Close[3]-Open[3]>200*Point //判断上升趋势

28. && 限制一根柱子下注一次 !=Time[0]  //限制一根柱子下注一次

29. ){

30. OrderSend(Symbol(),OP_BUY,下注数量,Ask,滑点,Ask-止损*Point,Ask+止盈*Point,""+ea名字+"",魔术号码,0,Green);

31. 限制一根柱子下注一次 =Time[0];

32. if(使用音乐){PlaySound("Conditions.wav");}

33. if(使用弹出提示){Alert(" M",Period()," ",Symbol(),"buy开仓, 余额资金::",AccountBalance()," ");}

34. } // end if 结束如果  

35. ////////////ea 不读这个注解///////////////////////

36.    

37. if(  //开始 如果

38. OrdersTotal()==0  //没有单可以下注

39. && Open[0]-Close[0]>200*Point  //判断下降趋势

40. && Open[1]-Close[1]>200*Point  //判断下降趋势

41. && Open[2]-Close[2]>200*Point  //判断下降趋势

42. && Open[3]-Close[3]>200*Point  //判断下降趋势

43. && 限制一根柱子下注一次 !=Time[0]   //限制一根柱子下注一次

44. ){

45. OrderSend(Symbol(),OP_SELL,下注数量,Bid,滑点,Bid+止损*Point,Bid-止盈*Point,""+ea名字+"",魔术号码,0,Red);

46. 限制一根柱子下注一次 =Time[0];

47. if(使用音乐){PlaySound("Conditions.wav");}

48. if(使用弹出提示){Alert(" M",Period()," ",Symbol(),"sell开仓, 余额资金::",AccountBalance()," ");}

49. }   // end if 结束如果  

50. 

51. ////////////ea 不读这个注解///////////////////////

52.    return(0); //ea 重复运行 每秒大概可能重新运算100

53.   }  //start to end 结束主程式

 

 

4章:把复杂变简单-子程式

注意变法!
把这个ea save as
另外一个新的名字
比如:my3ea


////////////ea 不读这个注解///////////////////////
#property copyright "柒侠伍义_初级EA教程_商业版本"
datetime 限制一根柱子下注一次 =0; //自定义
extern double 下注数量=0.1;  //自定义
extern double 止损=200;  //自定义
extern double 止盈=200;  //自定义
extern double 滑点=30;  //自定义
extern bool  使用音乐=true;  //true=要用  false=不要用
extern bool  使用弹出提示=false;  //true=要用  false=不要用
string   ea名字 = "柒侠伍义_初级EA教程";
double 魔术号码=16384;  //自定义魔术号码
////////////ea 不读这个注解///////////////////////
int start() //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
  }  //start to end 结束主程式

////////////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()," ");}
} // end if 结束如果  
////////////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()," ");}
}   // end if 结束如果  

} //结束子程式

 

5章:把复杂变简单-子程式中的子程式


////////////ea 不读这个注解///////////////////////
#property copyright "柒侠伍义_初级EA教程_商业版本"
datetime 限制一根柱子下注一次 =0; //自定义
extern double 下注数量=0.1;  //自定义
extern double 止损=200;  //自定义
extern double 止盈=200;  //自定义
extern double 滑点=30;  //自定义
extern bool  使用音乐=true;  //true=要用  false=不要用
extern bool  使用弹出提示=false;  //true=要用  false=不要用
string   ea名字 = "柒侠伍义_初级EA教程";
double 魔术号码=16384;  //自定义魔术号码
////////////ea 不读这个注解///////////////////////
int start() //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
  }  //start to end 结束主程式

////////////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]  //限制一根柱子下注一次
){
买上();
} // end if 结束如果  
////////////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()," ");}
}   // end if 结束如果  

} //结束策略管理子程式
/////////////////////////////////////////////////
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章:把复杂变简单-卖下子程式

你应当学会把买上变成子程式
试一试把 卖下 变成子程式




//---------------------------------------------------------------
#property copyright "柒侠伍义_初级EA教程_商业版本"
datetime 限制一根柱子下注一次 =0; //自定义
extern double 下注数量=0.1;  //自定义
extern double 止损=200;  //自定义
extern double 止盈=200;  //自定义
extern double 滑点=30;  //自定义
extern bool  使用音乐=true;  //true=要用  false=不要用
extern bool  使用弹出提示=false;  //true=要用  false=不要用
string   ea名字 = "柒侠伍义_初级EA教程";
double 魔术号码=16384;  //自定义魔术号码

//---------------------------------------------------------------

int start() //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
  }  //start to end 结束主程式

//---------------------------------------------------------------

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]  //限制一根柱子下注一次
){
买上();
} // end if 结束如果  

   
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]   //限制一根柱子下注一次
){
卖下();
}   // end if 结束如果  
} //结束策略管理子程式

//---------------------------------------------------------------

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章:macd sample

打开你的macd sample
找一个叫 OrderClose的东西
我们来做一个OrderClose的子程式


//+------------------------------------------------------------------+
//|                                                  MACD Sample.mq4 |
//|                      Copyright ?2005, MetaQuotes Software Corp. |
//|                                       http://www.metaquotes.net/ |
//+------------------------------------------------------------------+
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;
   double SignalPrevious, MaCurrent, MaPrevious;
   int cnt, ticket, total;
// initial data checks
// it is important to make sure that the expert works with a normal
// chart and the user did not make any mistakes setting external
// variables (Lots, StopLoss, TakeProfit,
// TrailingStop) in our case, we check TakeProfit
// on a chart of less than 100 bars
   if(Bars<100)
     {
      Print("bars less than 100");
      return(0);  
     }
   if(TakeProfit<10)
     {
      Print("TakeProfit less than 10");
      return(0);  // check TakeProfit
     }
// to simplify the coding and speed up access
// data are put into internal variables
   MacdCurrent=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)
     {
      // no opened orders identified
      if(AccountFreeMargin()<(1000*Lots))
        {
         Print("We have no money. Free Margin = ", AccountFreeMargin());
         return(0);  
        }
      // check for long position (BUY) possibility
      if(MacdCurrent<0 && MacdCurrent>SignalCurrent && MacdPrevious<SignalPrevious &&
         MathAbs(MacdCurrent)>(MACDOpenLevel*Point) && MaCurrent>MaPrevious)
        {
         ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point,"macd sample",16384,0,Green);
         if(ticket>0)
           {
            if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("BUY order opened : ",OrderOpenPrice());
           }
         else Print("Error opening BUY order : ",GetLastError());
         return(0);
        }
      // check for short position (SELL) possibility
      if(MacdCurrent>0 && MacdCurrent<SignalCurrent && MacdPrevious>SignalPrevious &&
         MacdCurrent>(MACDOpenLevel*Point) && MaCurrent<MaPrevious)
        {
        ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,Bid-TakeProfit*Point,"macd sample",16384,0,Red);
         if(ticket>0)
           {
            if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("SELL order opened : ",OrderOpenPrice());
           }
         else Print("Error opening SELL order : ",GetLastError());
         return(0);
        }
      return(0);
     }
   // it is important to enter the market correctly,
   // but it is more important to exit it correctly...   
   for(cnt=0;cnt<total;cnt++)
     {
      OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
      if(OrderType()<=OP_SELL &&   // check for opened position
         OrderSymbol()==Symbol())  // check for symbol
        {
         if(OrderType()==OP_BUY)   // long position is opened
           {
            // should it be closed?
            if(MacdCurrent>0 && MacdCurrent<SignalCurrent && MacdPrevious>SignalPrevious &&
               MacdCurrent>(MACDCloseLevel*Point))
                {
                 OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); // close position
                 return(0); // exit
                }
            // check for trailing stop
            if(TrailingStop>0)  
              {                 
               if(Bid-OrderOpenPrice()>oint*TrailingStop)
                 {
                  if(OrderStopLoss()<Bid-Point*TrailingStop)
                    {
                     OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green);
                     return(0);
                    }
                 }
              }
           }
         else // go to short position
           {
            // should it be closed?
            if(MacdCurrent<0 && MacdCurrent>SignalCurrent &&
               MacdPrevious<SignalPrevious && MathAbs(MacdCurrent)>(MACDCloseLevel*Point))
              {
               OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); // close position
               return(0); // exit
              }
            // check for trailing stop
            if(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);
  }
// the end.

 


8章:macd sample 解读版

如果你还不知道macd sample
讲什么,下面解读你就要仔细的研究一番

1. 

2. /*

3. MACD Sample详解

4. //+------------------------------------------------------------------+

5. //|                                                  MACD Sample.mq4 |

6. //|                      Copyright ?2005, MetaQuotes Software Corp. |

7. //|                                       http://www.metaquotes.net/ |

8. //+------------------------------------------------------------------+

9. 以上是垃圾

10. */

11. //这是自定义函数

12. extern double TakeProfit = 50;   //盈利目标点数

13. extern double Lots = 0.1;       //每单入场的手数

14. extern double TrailingStop = 30; //追踪止损的点数

15. extern double MACDOpenLevel=3; //MACD开仓的参考位置

16. extern double MACDCloseLevel=2; //MACD出场的参考位置

17. extern double MATrendPeriod=26; //条件中使用的MA均线的周期数

18. //程序最上面extern开始的这些数据都是程序参数,

19. //也就是在使用者调用的时候可以修改的部分。

20. //这个EA是个常见的技术指标条件入场,条件出场

21. //同时又移动止损功能的完成示意,

22. //很适合初学者研究。

23. //先总结这个程序的基本条件的意思 以方便大家对号入座,尽快理解。

24. //多头入场条件:buy

25.   // MACD小于0 并且 小于指定的参数MACDOpenLevel   

26.    //并且 MACD讯号下下穿基准线(死叉) 并且 MA向上趋势

27. //多头出场条件:Close buy

28.   // MACD大于0 并且 大于指定的参数MACDCloseLevel

29.    //并且 MACD信号线上传基准线(金叉)

30. //空头入场条件:sell

31. //MACD大于0 并且 大于指定的参数MACDOpenLevel   

32. //并且 MACD讯号线上穿基准线(金叉) 并且 MA向下趋势

33. //空头出场条件: Close sell

34. //MACD小于0 并且 小于制定的参数MACDCloseLevel   

35. //并且 MACD讯号线下穿基准线(死叉)

36. //=============================================================

37. //有了以上的初步了解,下面开始进行EA程序基本结构的分析:

38. //1start()函数是最重要的执行部分,

39. //每来一个价格 此函数都自动执行一次,所以主要的逻辑结构都在这个函数里

40. //2、程序的基本流程都是按照以下步骤进行,

41. //我们先牢牢记住这个结构,然后再对号入座去理解程序。

42. //先判断当前自身的仓位状态,因为start函数式循环运行的,

43. //所以中间的每个步骤都会使用start函数,因此,

44. //当函数开始的时候我们首先要通过MT4的仓位操作函数获得当前的仓位状态,

45. ///并进一步根据状态进行不同分支的计算。

46. //程序开始的以下两个部分不重要 简单说一下:

47. int start()

48.   {

49. //这是自定义函数

50.    double MacdCurrent, MacdPrevious, SignalCurrent;

51.    double SignalPrevious, MaCurrent, MaPrevious;

52.    int cnt, ticket, total;

53. //这是多余的检查

54. if(Bars<100)

55.     {

56.    Print("bars less than 100");

57.    return(0);  

58.     }

59. //以上是说如果当前图形的K线个数少于100 则不进行运算 直接返回。

60. //这种情况一般不会出现,所以我们自己写程序的时候可以不写这部分。

61. //这是多余的检查

62. if(TakeProfit<10)

63.     {

64.    Print("TakeProfit less than 10");

65.    return(0);   // check TakeProfit

66.     }

67.    

68. //以上这段意思是参数TakeProfit移动止损点数的设定如果小于10点,

69. //则发出报警,并返回不进行运算。

70. //这是为了防止乱设数值,引起后面计算的错误。

71. //这部分,如果程序只是我们自己使用,估计不会犯这种低级错误,

72. //所以写程序的时候也可以忽略不写。

73. //下面这段:

74. MacdCurrent=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,0);

75. MacdPrevious=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,1);

76. SignalCurrent=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,0);

77. SignalPrevious=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,1);

78. MaCurrent=iMA(NULL,0,MATrendPeriod,0,MODE_EMA,PRICE_CLOSE,0);

79. MaPrevious=iMA(NULL,0,MATrendPeriod,0,MODE_EMA,PRICE_CLOSE,1);

80. //这部分是变量赋值部分,

81. //等于提前计算出为后面用到的当前MACD数值以及MA数值,

82. //这样提前写出来在后面直接使用赋值后的变量就很清楚了。是很好的编程习惯。

83. 

84. //   再下面开始最主要的程序逻辑部分,

85.   // 首先遇到的就是我们上面说过的通过仓位函数获得当前状态的部分。

86. total=OrdersTotal();

87. //通过函数获得当前持仓单的个数,

88. //如果持仓单个数小于1,则说明是空仓状态,

89. //那末就进行多头和空头的入场条件判断,如果满足条件则进行入场。代码如下:

90. if(total<1)

91.     {

92.    // no opened orders identified

93.    if(AccountFreeMargin()<(1000*Lots))  //  这句诗判断保证金余量是否够下单,

94.    //如果不够则直接返回,并不进行后续入场判断

95.        {

96.       //这是多余的检查+打印

97.       Print("We have no money. Free Margin = ", AccountFreeMargin());

98.       return(0);  

99.        }

100.    // check for long position (BUY) possibility

101.    if(MacdCurrent<0 && MacdCurrent>SignalCurrent && MacdPrevious<SignalPrevious &&

102.       MathAbs(MacdCurrent)>(MACDOpenLevel*Point) && MaCurrent>MaPrevious)

103.       //这句就是多头入场条件的判断,可以看到2个技巧,

104.       //1、交叉 的数学意思是前面再下后面在上或反

105.       // 2MA向上趋势 的数学意思是当前K线的MA大于上一K线的MA数值

106.        {

107.       ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point,"macd sample",16384,0,Green); //

108.       //这是入场语句 记得一定要判断入场是否成功,

109.       //因为很多服务器由于滑点或者服务器价格变动而不能入场成功,

110.       //所以,要判断入场不成功后作出提示。ticket就是定单入场是否成功的标记。

111.       if(ticket>0) //大于0说明入场成功

112.           {

113.          if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("BUY order opened : ",OrderOpenPrice());

114.           }

115.       else Print("Error opening BUY order : ",GetLastError());

116.       //这是多余的检查

117.       //入场不成功,输出不成功的系统原因。

118.       return(0); //这里为什麽使用了返回呢。

119.       //因为一种情况是入场成功,

120.       //那末直接返回等待下一个价格到来的时候再执行start函数,

121.       //另一种情况是入场不成功,

122.       //则返回也是等待下一个价格到来的时候在此执行入场操作。

123.        }

124.    //下面就是空单入场的判断了,大家自己对照观看即可

125.    // check for short position (SELL) possibility

126.    if(MacdCurrent>0 && MacdCurrent<SignalCurrent && MacdPrevious>SignalPrevious &&

127.       MacdCurrent>(MACDOpenLevel*Point) && MaCurrent<MaPrevious)

128.        {

129.       ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,Bid-TakeProfit*Point,"macd sample",16384,0,Red);

130.       if(ticket>0)//如果有单

131.           {

132.          if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))

133.          Print("SELL order opened : ",OrderOpenPrice());//这是多余的检查

134.           }

135.           //这是多余的检查

136.          else Print("Error opening SELL order : ",GetLastError()); //如果错误就打印

137.          return(0); //返回

138.         }

139.       return(0);//返回

140.      }

141.    // it is important to enter the market correctly,

142.    // but it is more important to exit it correctly...   

143.    for(cnt=0;cnt<total;cnt++)

144.      {

145.       OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

146.       if(OrderType()<=OP_SELL &&   // check for opened position 检查sell的单

147.          OrderSymbol()==Symbol())  // check for symbol如果货币对一样

148.         {

149.          if(OrderType()==OP_BUY)   // long position is opened检查buy的单

150.            {

151.             // should it be closed?条件符合就关闭

152.             if(MacdCurrent>0 && MacdCurrent<SignalCurrent && MacdPrevious>SignalPrevious &&

153.                MacdCurrent>(MACDCloseLevel*Point))

154.                 {

155.                  OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); // close position

156.                  return(0); // exit

157.                 }

158.             // check for trailing stop检查追踪止损

159.             if(TrailingStop>0)  

160.               {                 

161.                if(Bid-OrderOpenPrice()>Point*TrailingStop)

162.                  {

163.                   if(OrderStopLoss()<Bid-Point*TrailingStop)

164.                     {

165.                     //如果条件符合就OrderModify更改

166.                      OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green);

167.                      return(0);

168.                     }

169.                  }

170.               }

171.            }

172.          else // go to short position 检查buy的单

173.            {

174.             // should it be closed?

175.             if(MacdCurrent<0 && MacdCurrent>SignalCurrent &&

176.                MacdPrevious<SignalPrevious && MathAbs(MacdCurrent)>(MACDCloseLevel*Point))

177.               {

178.               //如果以上条件符合就关闭buy的单

179.                OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); // close position

180.                return(0); // exit

181.               }

182.             // check for trailing stop检查buy的追踪止损

183.             if(TrailingStop>0)  //追踪止损重复了2次(没有水准的编写)

184.               {                 

185.                if((OrderOpenPrice()-Ask)>(Point*TrailingStop))

186.                  {

187.                   if((OrderStopLoss()>(Ask+Point*TrailingStop)) || (OrderStopLoss()==0))

188.                     {

189.                     //如果检查条件符合就OrderModify buy的单

190.                      OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red);

191.                      return(0);

192.                     }

193.                  }

194.               }

195.            }

196.         }

197.      }

198.    return(0);//返回上面再从头执行

199.   }

200. // the end.

201. 

复制代码

 


9章:关闭开单的子程式

macd sample 我们找到了2个关闭开单
1个是Bid
1个是Ask
现在我们要弄一个关闭开单的子程式


OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); // close position buy
OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); // close position sell


Void 关闭买上(){
OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); // close position buy
}

Void 关闭卖下(){
OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); // close position sell
}

 

 

 

10章:假象

如果就这样把这2个子程式
放入我们的my3ea
肯定会有错误

为什么会错误?
因为ea判断你没有使用该子程式

为了防止错误
我们给ea弄一个假象
什么假象?
假象说我们有使用这个子程式

if(OrdersTotal==100){关闭买上(); 关闭卖下();}

我们把假象放在策略管理的开始
因为关闭的子程式是
子程式的子程式
就好象买上()或卖下()也是属于
子程式的子程式

编写结果:


//---------------------------------------------------------------
#property copyright "柒侠伍义_初级EA教程_商业版本"
datetime 限制一根柱子下注一次 =0; //自定义
extern double 下注数量=0.1;  //自定义
extern double 止损=200;  //自定义
extern double 止盈=200;  //自定义
extern double 滑点=30;  //自定义
extern bool  使用音乐=true;  //true=要用  false=不要用
extern bool  使用弹出提示=false;  //true=要用  false=不要用
string   ea名字 = "柒侠伍义_初级EA教程";
double 魔术号码=16384;  //自定义魔术号码

//---------------------------------------------------------------
int start() //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
  }  //start to end 结束主程式

//---------------------------------------------------------------

void 策略管理() { //子程式
if(OrdersTotal()==100){关闭买上(); 关闭卖下();} //假象
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]  //限制一根柱子下注一次
){
买上();
} // end if 结束如果  

   
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]   //限制一根柱子下注一次
){
卖下();
}   // end if 结束如果  
} //结束策略管理子程式
//---------------------------------------------------------------
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()," ");}
}//结束买上子程式
//---------------------------------------------------------------

void 卖下(){//卖下子程式开始
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()," ");}
}//结束卖下子程式
//---------------------------------------------------------------
void 关闭买上(){ //关闭买上子程式开始
OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet);
}//结束关闭买上子程式
//---------------------------------------------------------------
void 关闭卖下(){ //关闭卖下子程式开始
OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet);
}//结束关闭卖下子程式

 

 

11章:修改更完美的假象



//---------------------------------------------------------------

#property copyright "柒侠伍义_初级EA教程_商业版本"
datetime 限制一根柱子下注一次 =0; //自定义
extern double 下注数量=0.1;  //自定义
extern double 止损=200;  //自定义
extern double 止盈=200;  //自定义
extern double 滑点=30;  //自定义
extern bool  使用音乐=true;  //true=要用  false=不要用
extern bool  使用弹出提示=false;  //true=要用  false=不要用
string   ea名字 = "柒侠伍义_初级EA教程";
double 魔术号码=16384;  //自定义魔术号码

//---------------------------------------------------------------

int start() //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
  }  //start to end 结束主程式

//---------------------------------------------------------------

void 策略管理() { //子程式
if(OrdersTotal()==100){卖下();买上();关闭买上(); 关闭卖下();} //完美假象
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]  //限制一根柱子下注一次
){
买上();
} // end if 结束如果  

   
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]   //限制一根柱子下注一次
){
卖下();
}   // end if 结束如果  
} //结束策略管理子程式

//---------------------------------------------------------------

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()," ");}
}//结束买上子程式

//---------------------------------------------------------------

void 卖下(){//卖下子程式开始
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()," ");}
}//结束卖下子程式

//---------------------------------------------------------------

void 关闭买上(){ //关闭买上子程式开始
OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet);
}//结束关闭买上子程式

//---------------------------------------------------------------

void 关闭卖下(){ //关闭卖下子程式开始
OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet);
}//结束关闭卖下子程式
//---------------------------------------------------------------

 

12章:修改趋势策略

使到ea容易下单
方便我们研究学习

//---------------------------------------------------------------

#property copyright "柒侠伍义_初级EA教程_商业版本"
datetime 限制一根柱子下注一次 =0; //自定义
extern double 下注数量=0.1;  //自定义
extern double 止损=200;  //自定义
extern double 止盈=200;  //自定义
extern double 滑点=30;  //自定义
extern bool  使用音乐=true;  //true=要用  false=不要用
extern bool  使用弹出提示=false;  //true=要用  false=不要用
string   ea名字 = "柒侠伍义_初级EA教程";
double 魔术号码=16384;  //自定义魔术号码

//---------------------------------------------------------------

int start() //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
  }  //start to end 结束主程式

//---------------------------------------------------------------

void 策略管理() { //子程式
if(OrdersTotal()==100){卖下();买上();关闭买上(); 关闭卖下();} //假象
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]  //限制一根柱子下注一次
){
买上();
} // end if 结束如果  

   
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]   //限制一根柱子下注一次
){
卖下();
}   // end if 结束如果  
} //结束策略管理子程式

//---------------------------------------------------------------

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()," ");}
}//结束买上子程式

//---------------------------------------------------------------

void 卖下(){//卖下子程式开始
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()," ");}
}//结束卖下子程式

//---------------------------------------------------------------

void 关闭买上(){ //关闭买上子程式开始
OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet);
}//结束关闭买上子程式

//---------------------------------------------------------------

void 关闭卖下(){ //关闭卖下子程式开始
OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet);
}//结束关闭卖下子程式
//---------------------------------------------------------------

 


13章:修改止损止盈为0

下单会错误
必须修改下单
使这ea更完美更厉害




//---------------------------------------------------------------

#property copyright "柒侠伍义_初级EA教程_商业版本"
datetime 限制一根柱子下注一次 =0; //自定义
extern double 下注数量=0.1;  //自定义
extern double 止损=0;  //自定义
extern double 止盈=0;  //自定义
extern double 滑点=30;  //自定义
extern bool  使用音乐=true;  //true=要用  false=不要用
extern bool  使用弹出提示=false;  //true=要用  false=不要用
string   ea名字 = "柒侠伍义_初级EA教程";
double 魔术号码=16384;  //自定义魔术号码
double 止损损,止盈盈;//自定义
//---------------------------------------------------------------

int start() //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
  }  //start to end 结束主程式

//---------------------------------------------------------------

void 策略管理() { //子程式
if(OrdersTotal()==100){卖下();买上();关闭买上(); 关闭卖下();} //假象
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]  //限制一根柱子下注一次
){
买上();
} // end if 结束如果  

   
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]   //限制一根柱子下注一次
){
卖下();
}   // end if 结束如果  
} //结束策略管理子程式

//---------------------------------------------------------------

void 买上(){ //买上子程式开始
if (止盈==0) { 止盈盈=0; } if(止盈>0) { 止盈盈=Ask+止盈*Point; }//使这ea更完美
if (止损==0) { 止损损=0; } if(止损>0) { 止损损=Ask-止损*Point; }//使这ea更完美
OrderSend(Symbol(),OP_BUY,下注数量,Ask,滑点,止损损,止盈盈,""+ea名字+"",魔术号码,0,Green);
限制一根柱子下注一次 =Time[0];
if(使用音乐){PlaySound("Conditions.wav");}
if(使用弹出提示){Alert(" M",Period()," ",Symbol(),"buy开仓, 余额资金::",AccountBalance()," ");}
}//结束买上子程式

//---------------------------------------------------------------

void 卖下(){//卖下子程式开始
if (止盈==0) { 止盈盈=0; } if(止盈>0) { 止盈盈=Bid-(止盈*Point); }//使这ea更完美
if (止损==0) { 止损损=0; } if(止损>0) { 止损损=Bid+(止损*Point); }//使这ea更完美
OrderSend(Symbol(),OP_SELL,下注数量,Bid,滑点,止损损,止盈盈,""+ea名字+"",魔术号码,0,Red);
限制一根柱子下注一次 =Time[0];
if(使用音乐){PlaySound("Conditions.wav");}
if(使用弹出提示){Alert(" M",Period()," ",Symbol(),"sell开仓, 余额资金::",AccountBalance()," ");}
}//结束卖下子程式

//---------------------------------------------------------------

void 关闭买上(){ //关闭买上子程式开始
OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet);
}//结束关闭买上子程式

//---------------------------------------------------------------

void 关闭卖下(){ //关闭卖下子程式开始
OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet);
}//结束关闭卖下子程式
//---------------------------------------------------------------

 

14章:你发现什么吗?

运行my3ea
你发现什么吗?

对了,这ea不会关闭下单
因为我们没有止盈止损

我们要换另一种方式叫ea关闭下单

在管理策略那边
我们命令ea盈利了多少关闭下单
输了多少关闭下单

编写如下:




if(AccountProfit()>50){关闭卖下();关闭买上();}
if(AccountProfit()>-50){关闭卖下();关闭买上();}

 


15章:你又发现什么吗?

运行my3ea

ea并没有关闭开单
肯定有错误

编写ea就是这样
要不断的发现错误并寻找解决方案




//---------------------------------------------------------------

#property copyright "柒侠伍义_初级EA教程_商业版本"
datetime 限制一根柱子下注一次 =0; //自定义
extern double 下注数量=0.1;  //自定义
extern double 止损=0;  //自定义
extern double 止盈=0;  //自定义
extern double 滑点=30;  //自定义
extern bool  使用音乐=true;  //true=要用  false=不要用
extern bool  使用弹出提示=false;  //true=要用  false=不要用
string   ea名字 = "柒侠伍义_初级EA教程";
double 魔术号码=16384;  //自定义魔术号码
double 止损损,止盈盈,cnt;//自定义

//---------------------------------------------------------------

int start() //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
  }  //start to end 结束主程式

//---------------------------------------------------------------

void 策略管理() { //子程式

if(OrdersTotal()==100){卖下();买上();关闭买上(); 关闭卖下();} //假象

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]  //限制一根柱子下注一次
){
买上();
} // end if 结束如果  

   
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]   //限制一根柱子下注一次
){
卖下();
}   // end if 结束如果  

if(AccountProfit()>50){关闭卖下();关闭买上();}
if(AccountProfit()<-50){关闭卖下();关闭买上();}


} //结束策略管理子程式

//---------------------------------------------------------------

void 买上(){ //买上子程式开始
if (止盈==0) { 止盈盈=0; } if(止盈>0) { 止盈盈=Ask+止盈*Point; }//使这ea更完美
if (止损==0) { 止损损=0; } if(止损>0) { 止损损=Ask-止损*Point; }//使这ea更完美
OrderSend(Symbol(),OP_BUY,下注数量,Ask,滑点,止损损,止盈盈,""+ea名字+"",魔术号码,0,Green);
限制一根柱子下注一次 =Time[0];
if(使用音乐){PlaySound("Conditions.wav");}
if(使用弹出提示){Alert(" M",Period()," ",Symbol(),"buy开仓, 余额资金::",AccountBalance()," ");}
}//结束买上子程式

//---------------------------------------------------------------

void 卖下(){//卖下子程式开始
if (止盈==0) { 止盈盈=0; } if(止盈>0) { 止盈盈=Bid-(止盈*Point); }//使这ea更完美
if (止损==0) { 止损损=0; } if(止损>0) { 止损损=Bid+(止损*Point); }//使这ea更完美
OrderSend(Symbol(),OP_SELL,下注数量,Bid,滑点,止损损,止盈盈,""+ea名字+"",魔术号码,0,Red);
限制一根柱子下注一次 =Time[0];
if(使用音乐){PlaySound("Conditions.wav");}
if(使用弹出提示){Alert(" M",Period()," ",Symbol(),"sell开仓, 余额资金::",AccountBalance()," ");}
}//结束卖下子程式

//---------------------------------------------------------------

void 关闭买上(){ //关闭买上子程式开始
for(cnt=0;cnt<OrdersTotal();cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol()==Symbol()&& OrderMagicNumber()==魔术号码 && OrderType()==OP_BUY)
{
OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet);
return(0);
}}
}//结束关闭买上子程式

//---------------------------------------------------------------

void 关闭卖下(){ //关闭卖下子程式开始
for(cnt=0;cnt<OrdersTotal();cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol()==Symbol() && OrderMagicNumber()==魔术号码&& OrderType()==OP_SELL)
{
OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet);
return(0);
}}
}//结束关闭卖下子程式
//---------------------------------------------------------------

 

1. //---------------------------------------------------------------

2. 

3. 

4. #property copyright "柒侠伍义_初级EA教程_商业版本"

5. datetime 限制一根柱子下注一次 =0; //自定义

6. extern double 下注数量=0.1;  //自定义

7. extern double 止损=0;  //自定义

8. extern double 止盈=0;  //自定义

9. extern double 滑点=30;  //自定义

10. extern bool  使用音乐=true;  //true=要用  false=不要用

11. extern bool  使用弹出提示=false;  //true=要用  false=不要用

12. string   ea名字 = "柒侠伍义_初级EA教程";

13. double 魔术号码=16384;  //自定义魔术号码

14. double 止损损,止盈盈,cnt;//自定义

15. 

16. 

17. //---------------------------------------------------------------

18. 

19. 

20. int start() //ea 开始运行

21.   {  //开始主程式

22. 

23. HideTestIndicators(true);//命令ea隐藏ea中的指标

24. if(AccountFreeMarginCheck(Symbol(),OP_BUY,下注数量)<=0 || GetLastError()==134) {return;}//命令ea如果保证金不足不要交易

25. if(AccountFreeMarginCheck(Symbol(),OP_SELL,下注数量)<=0 || GetLastError()==134){return;}//命令ea如果保证金不足不要交易

26. 

27.    

28. 策略管理(); //子程式

29. 

30. 

31.    return(0); //ea 重复运行 每秒大概可能重新运算100

32.   }  //start to end 结束主程式

33. 

34. 

35. //---------------------------------------------------------------

36. 

37. 

38. void 策略管理() { //子程式

39. 

40. 

41. if(OrdersTotal()==100){卖下();买上();关闭买上(); 关闭卖下();} //假象

42. 

43. 

44. if(  //开始如果

45. OrdersTotal()==0 //没有单可以下注

46. && Close[0]-Open[0]>200*Point //判断上升趋势

47. && Close[1]-Open[1]>200*Point //判断上升趋势

48. //&& Close[2]-Open[2]>200*Point //判断上升趋势

49. //&& Close[3]-Open[3]>200*Point //判断上升趋势

50. && 限制一根柱子下注一次 !=Time[0]  //限制一根柱子下注一次

51. ){

52. 买上();

53. } // end if 结束如果  

54. 

55. 

56.    

57. if(  //开始 如果

58. OrdersTotal()==0  //没有单可以下注

59. && Open[0]-Close[0]>200*Point  //判断下降趋势

60. && Open[1]-Close[1]>200*Point  //判断下降趋势

61. //&& Open[2]-Close[2]>200*Point  //判断下降趋势

62. //&& Open[3]-Close[3]>200*Point  //判断下降趋势

63. && 限制一根柱子下注一次 !=Time[0]   //限制一根柱子下注一次

64. ){

65. 卖下();

66. }   // end if 结束如果  

67. 

68. 

69. if(AccountProfit()>50){关闭卖下();关闭买上();}

70. if(AccountProfit()<-50){关闭卖下();关闭买上();}

71. 

72. 

73. 

74. 

75. } //结束策略管理子程式

76. 

77. 

78. //---------------------------------------------------------------

79. 

80. 

81. void 买上(){ //买上子程式开始

82. 

83. if (止盈==0) { 止盈盈=0; } if(止盈>0) { 止盈盈=Ask+止盈*Point; }//使这ea更完美

84. if (止损==0) { 止损损=0; } if(止损>0) { 止损损=Ask-止损*Point; }//使这ea更完美

85. OrderSend(Symbol(),OP_BUY,下注数量,Ask,滑点,止损损,止盈盈,""+ea名字+"",魔术号码,0,Green);

86. 限制一根柱子下注一次 =Time[0];

87. if(使用音乐){PlaySound("Conditions.wav");}

88. if(使用弹出提示){Alert(" M",Period()," ",Symbol(),"buy开仓, 余额资金::",AccountBalance()," ");}

89. }//结束买上子程式

90. 

91. 

92. //---------------------------------------------------------------

93. 

94. 

95. void 卖下(){//卖下子程式开始

96. if (止盈==0) { 止盈盈=0; } if(止盈>0) { 止盈盈=Bid-(止盈*Point); }//使这ea更完美

97. if (止损==0) { 止损损=0; } if(止损>0) { 止损损=Bid+(止损*Point); }//使这ea更完美

98. OrderSend(Symbol(),OP_SELL,下注数量,Bid,滑点,止损损,止盈盈,""+ea名字+"",魔术号码,0,Red);

99. 限制一根柱子下注一次 =Time[0];

100. if(使用音乐){PlaySound("Conditions.wav");}

101. if(使用弹出提示){Alert(" M",Period()," ",Symbol(),"sell开仓, 余额资金::",AccountBalance()," ");}

102. }//结束卖下子程式

103. 

104. 

105. //---------------------------------------------------------------

106. 

107. 

108. void 关闭买上(){ //关闭买上子程式开始

109. 

110. for(cnt=0;cnt<OrdersTotal();cnt++)

111. {

112. OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

113. if (OrderSymbol()==Symbol()&& OrderMagicNumber()==魔术号码 && OrderType()==OP_BUY)

114. {

115. OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet);

116. return(0);

117. }}

118. 

119. }//结束关闭买上子程式

120. 

121. 

122. //---------------------------------------------------------------

123. 

124. 

125. void 关闭卖下(){ //关闭卖下子程式开始

126. 

127. for(cnt=0;cnt<OrdersTotal();cnt++)

128. {

129. OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

130. if (OrderSymbol()==Symbol() && OrderMagicNumber()==魔术号码&& OrderType()==OP_SELL)

131. {

132. OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet);

133. return(0);

134. }}

135. 

136. }//结束关闭卖下子程式

137. 

138. //---------------------------------------------------------------

 

16章:自定义输赢¥¥


//---------------------------------------------------------------

#property copyright "柒侠伍义_初级EA教程_商业版本"
datetime 限制一根柱子下注一次 =0; //自定义
extern double 下注数量=0.1;  //自定义
extern double 止损=0;  //自定义
extern double 止盈=0;  //自定义
extern double 滑点=30;  //自定义
extern bool  使用音乐=true;  //true=要用  false=不要用
extern bool  使用弹出提示=false;  //true=要用  false=不要用
string   ea名字 = "柒侠伍义_初级EA教程";
double 魔术号码=16384;  //自定义魔术号码
double 止损损,止盈盈,cnt;//自定义
double 计划盈利=100;;//自定义
double 计划亏损=100;;//自定义


//---------------------------------------------------------------

int start() //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
  }  //start to end 结束主程式

//---------------------------------------------------------------

void 策略管理() { //子程式

if(OrdersTotal()==100){卖下();买上();关闭买上(); 关闭卖下();} //假象

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]  //限制一根柱子下注一次
){
买上();
} // end if 结束如果  

   
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]   //限制一根柱子下注一次
){
卖下();
}   // end if 结束如果  


if(AccountProfit()>计划盈利){关闭卖下();关闭买上();};//自定义计划盈利

if(AccountProfit()<-计划亏损){关闭卖下();关闭买上();};//自定义计划亏损



} //结束策略管理子程式

//---------------------------------------------------------------

void 买上(){ //买上子程式开始
if (止盈==0) { 止盈盈=0; } if(止盈>0) { 止盈盈=Ask+止盈*Point; }//使这ea更完美
if (止损==0) { 止损损=0; } if(止损>0) { 止损损=Ask-止损*Point; }//使这ea更完美
OrderSend(Symbol(),OP_BUY,下注数量,Ask,滑点,止损损,止盈盈,""+ea名字+"",魔术号码,0,Green);
限制一根柱子下注一次 =Time[0];
if(使用音乐){PlaySound("Conditions.wav");}
if(使用弹出提示){Alert(" M",Period()," ",Symbol(),"buy开仓, 余额资金::",AccountBalance()," ");}
}//结束买上子程式

//---------------------------------------------------------------

void 卖下(){//卖下子程式开始
if (止盈==0) { 止盈盈=0; } if(止盈>0) { 止盈盈=Bid-(止盈*Point); }//使这ea更完美
if (止损==0) { 止损损=0; } if(止损>0) { 止损损=Bid+(止损*Point); }//使这ea更完美
OrderSend(Symbol(),OP_SELL,下注数量,Bid,滑点,止损损,止盈盈,""+ea名字+"",魔术号码,0,Red);
限制一根柱子下注一次 =Time[0];
if(使用音乐){PlaySound("Conditions.wav");}
if(使用弹出提示){Alert(" M",Period()," ",Symbol(),"sell开仓, 余额资金::",AccountBalance()," ");}
}//结束卖下子程式

//---------------------------------------------------------------

void 关闭买上(){ //关闭买上子程式开始
for(cnt=0;cnt<OrdersTotal();cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol()==Symbol()&& OrderMagicNumber()==魔术号码 && OrderType()==OP_BUY)
{
OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet);
return(0);
}}
}//结束关闭买上子程式

//---------------------------------------------------------------

void 关闭卖下(){ //关闭卖下子程式开始
for(cnt=0;cnt<OrdersTotal();cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol()==Symbol() && OrderMagicNumber()==魔术号码&& OrderType()==OP_SELL)
{
OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet);
return(0);
}}
}//结束关闭卖下子程式
//---------------------------------------------------------------

发布时间:2018-10-13

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。