4评论

3收藏

定时下单(开多单)ea

avatar zhongdian | 2165 人阅读 | 4 人评论 | 2018-12-11

用来设定固定时间开多仓,并且自动设置止盈、止损操作系统。其中参数设置:

小时=指定小时数。常数12 代表12点,以MT4系统时间为准;

分钟=指定分钟数。常数 1代表01分。

(说明:如果时间参数设为:小时=12,分钟=02,则限定在时间12:02内自动下单,其余时间不操作。)

止损、止盈,均采用5位数平台,具体可根据你平台填入相应的数位,如:200=20点。

  1. //

  2. #define MAGICMA 20050610 //系统单编码



  3. extern double 手数 = 0.1; //下单量



  4. extern int 小时 = 12; //系统小时数



  5. extern int 分钟 = 1; //系统分钟数



  6. extern int 止损 = 200; //5位平台,4位平台为20



  7. extern int 止盈 = 300; //5位平台,4位平台为30



  8. //自定义函数:返回/整数型——计算下单量



  9. int CalculateCurrentOrders(string symbol)



  10. {



  11. int buys=0,sells=0; //设局部变量



  12. for(int i=0;i<OrdersTotal();i++) //循环查找历史仓单



  13. {



  14. if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;



  15. //如果 仓单类型=假 则跳出循环



  16. if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGICMA)



  17. //如果 货币对=当前货币对 且 仓单号=本系统仓单号



  18. {



  19. if(OrderType()==OP_BUY) buys++;



  20. //如果 仓单类型=多单 则 多单数=多单数+1



  21. if(OrderType()==OP_SELL) sells++;



  22. //如果 仓单类型=空单 则 空单数=空单数+1



  23. }



  24. }



  25. if(buys>0) return(buys);



  26. //如果 多单数>0,则 返回(多单数)



  27. else return(-sells);



  28. //否则,返回(-空单数)



  29. }



  30. //自定义函数:无返回型-开仓操作



  31. void CheckForOpen()



  32. {



  33. int res; //设局部变量-整数型



  34. if( TimeHour(TimeCurrent()) == 小时 && TimeMinute(TimeCurrent()) == 分钟)



  35. //如果 取当前小时数=小时 且 取当前分钟数=分钟



  36. {



  37. res=OrderSend(Symbol(),OP_BUY,手数,Ask,3,0,0,"",MAGICMA,0,Red);



  38. //发送订单(当前货币对,买入,手数,买价,滑点3,无止损,无止赢,编号,挂单,标示红色箭头)



  39. return;



  40. }



  41. }



  42. //自定义函数:无返回型-平仓操作



  43. void CheckForClose()



  44. {



  45. for(int i=0;i<OrdersTotal();i++)



  46. //循环检查



  47. {



  48. OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-Point*止损,



  49. OrderOpenPrice()+Point*止盈,0,Red);



  50. //修改挂单(仓单号,开仓价,止损价=开仓价-止损*点,止赢价=开仓价+止盈*点,挂单,标示红色箭头)



  51. }



  52. }



  53. //主运行程序



  54. void start()



  55. {



  56. if(Bars<100 || IsTradeAllowed()==false) return;



  57. //如果 K线数<100 或者 允许自动交易=假 返回



  58. if(CalculateCurrentOrders(Symbol())==0) CheckForOpen();



  59. //如果 持仓=0 则 进行开仓操作



  60. else CheckForClose();



  61. //否则 进行平仓操作



  62. }
复制代码


""
还没有人打赏,支持一下

评论|共 4 个

alang

发表于 2019-3-12 14:02:59 | 显示全部楼层

好东西,学习了

华仔0ne

发表于 2019-3-17 14:23:27 | 显示全部楼层

好啦,谢谢学习一下啦,8888

150194012

发表于 2023-12-30 14:28:00 | 显示全部楼层

只有BUY,没有SELL?请问SELL怎么改?

随势

发表于 2023-12-30 14:38:34 | 显示全部楼层

您需要登录后才可以回帖 登录 | 注册 微信登录

EA之家评论守则