2评论

3收藏

获取指定货币对订单数量及全部平仓的完整函数

avatar 老周 | 1658 人阅读 | 2 人评论 | 2017-03-16

该函数获取指定货币对订单数量及执行全部平仓。是两个函数模块,一个获取指定的货币对订单数量,一个是全部平仓,可以自行添加其它过滤条件调用到EA中。

  1. #define MagicNumber 123456

  2. extern string sym ="EURUSD";
  3. int openorders = 0;

  4. int CalculateCurrentOrders(string symbol)
  5. {
  6. int buys=0,sells=0;
  7. //----
  8. for(int i=0;i<OrdersTotal();i++)
  9. {
  10. if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
  11. if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber)
  12. {
  13. if(OrderType()==OP_BUY) buys++;
  14. if(OrderType()==OP_SELL) sells++;
  15. }
  16. }
  17. return(buys+sells);
  18. }

  19. openorders=CalculateCurrentOrders(sym);

  20. bool CloseALL()
  21. {

  22. int ot = OrdersTotal();

  23. for(int i=0;i<ot;i++)
  24. {
  25. if(OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==false) return(false);
  26. if(OrderMagicNumber()!=MagicNumber|| OrderSymbol()!=sym) continue;

  27. if(OrderType()==OP_BUY)
  28. {

  29. if (!OrderClose(OrderTicket(),OrderLots(),Bid,3,White))
  30. {
  31. Print("OrderClose with error #" + GetLastError() + OrderTicket());
  32. return(false);
  33. }
  34. }
  35. if(OrderType()==OP_SELL)
  36. {
  37. if (!OrderClose(OrderTicket(),OrderLots(),Ask,3,White))
  38. {
  39. Print("OrderClose with error #" + GetLastError() + OrderTicket());
  40. return(false);
  41. }
  42. }
  43. }
  44. openorders=0;
  45. return(true);
  46. }
复制代码


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

评论|共 2 个

jiasououk

发表于 2018-9-11 12:26:11 | 显示全部楼层

找到好贴不容易,我顶你了,谢了

hsqnslr

发表于 2018-9-26 20:08:28 | 显示全部楼层

学习了,谢谢分享、、、

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

EA之家评论守则