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

楼主  收藏   举报   帖子创建时间:  2019-05-05 10:13 回复:0 关注量:258
该函数获取指定货币对订单数量及执行全部平仓。是两个函数模块,一个获取指定的货币对订单数量,一个是全部平仓,可以自行添加其它过滤条件调用到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. }
打赏