EA邦程序化交易论坛

标题: MT5CTP程序化交易开发9:获取订单信息 [打印本页]

作者: 唐老师    时间: 2021-8-31 16:10
标题: MT5CTP程序化交易开发9:获取订单信息
MT5CTP的视频教学可以到网站上关于我们栏目的EA邦的各视频平台里观看。
这是第9课的代码:
这是最开始出现的获取订单数据的脚本:
  1. //+------------------------------------------------------------------+
  2. //|                                      Copyright 2020, EA邦        |
  3. //|                                     http://www.eabang.com      |
  4. //+------------------------------------------------------------------+
  5. #define __MT5CTP__
  6. // 包含库
  7. #ifdef __MT5CTP__
  8. #include <mt5ctp\mt5toctp.mqh>
  9. #endif

  10. #property copyright "Copyright 2021, MetaQuotes Ltd."
  11. #property link      "https://www.eabang.com"
  12. #property version   "1.00"
  13. //+------------------------------------------------------------------+
  14. //| Script program start function                                    |
  15. //+------------------------------------------------------------------+
  16. void OnStart()
  17.   {
  18. //---
  19.    int ddzs=mt5ctp::MT5PositionsTotal();
  20.    for(int i=0; i<ddzs; i++)
  21.      {
  22.       ulong ticket = 0;
  23.       mt5ctp::MT5PositionGetTicket(i,ticket);
  24.       MT5CTPOrders order_mt5;
  25.       ZeroMemory(order_mt5);
  26.       if(!mt5ctp::MT5PositionSelectByTicket(ticket,order_mt5))
  27.          continue;
  28.       string pos_symbol = ::CharArrayToString(order_mt5.symbol);
  29.       int digit_symbol = (int)::SymbolInfoInteger(pos_symbol,SYMBOL_DIGITS);

  30.       Print("编号=",i);
  31.       Print("品种=",pos_symbol);
  32.       Print("订单号=",order_mt5.ticket);
  33.       Print("开仓时间=",order_mt5.time);
  34.       Print("持仓方向=",order_mt5.type);
  35.       Print("开仓量=",order_mt5.volume);
  36.       Print("开仓价=",order_mt5.price,digit_symbol);
  37.       Print("止损价=",order_mt5.sl,digit_symbol);
  38.       Print("止盈价=",order_mt5.tp,digit_symbol);
  39.       Print("盈亏=",order_mt5.profit);
  40.       Print("魔术码=",order_mt5.magic);
  41.       Print("注释=",CharArrayToString(order_mt5.comment));
  42.      }
  43.   }
  44. //+------------------------------------------------------------------+
复制代码
文件下载: 获取账户订单信息.mq5 (3.45 KB, 下载次数: 6)
上面文件是脚本,应该放到mt5的scripts的脚本目录,该目录跟ea目录一样,在mql目录下面,具体可以看ea安装教学。

这是双均线EA到目前为止的代码:
  1. //+------------------------------------------------------------------+
  2. //|                                      Copyright 2020, EA邦        |
  3. //|                                     http://www.eabang.com      |
  4. //+------------------------------------------------------------------+
  5. #define __MT5CTP__
  6. // 包含库
  7. #ifdef __MT5CTP__
  8. #include <mt5ctp\mt5toctp.mqh>
  9. #endif

  10. #property copyright "Copyright 2021, MetaQuotes Ltd."
  11. #property link      "https://www.eabang.com"
  12. #property version   "1.00"
  13. //--- input parameters
  14. input int      短均线=5;
  15. input int      长均线=10;
  16. input double   开仓量=1.0;
  17. input int      止盈=100;
  18. input int      止损=100;
  19. //+------------------------------------------------------------------+
  20. //| Expert initialization function                                   |
  21. //+------------------------------------------------------------------+
  22. int OnInit()
  23.   {
  24. //--- create timer
  25.    EventSetTimer(60);

  26. //---
  27.    return(INIT_SUCCEEDED);
  28.   }
  29. //+------------------------------------------------------------------+
  30. //| Expert deinitialization function                                 |
  31. //+------------------------------------------------------------------+
  32. void OnDeinit(const int reason)
  33.   {
  34. //--- destroy timer
  35.    EventKillTimer();

  36.   }
  37. //+------------------------------------------------------------------+
  38. //| Expert tick function                                             |
  39. //+------------------------------------------------------------------+
  40. void OnTick()
  41.   {
  42. //---
  43.    int ddsl=0;
  44.    int ddzs=mt5ctp::MT5PositionsTotal();
  45.    for(int i=0; i<ddzs; i++)
  46.      {
  47.       ulong ticket = 0;
  48.       mt5ctp::MT5PositionGetTicket(i,ticket);
  49.       MT5CTPOrders order_mt5;
  50.       ZeroMemory(order_mt5);
  51.       if(!mt5ctp::MT5PositionSelectByTicket(ticket,order_mt5))
  52.          continue;
  53.       string pos_symbol = ::CharArrayToString(order_mt5.symbol);
  54.       int digit_symbol = (int)::SymbolInfoInteger(pos_symbol,SYMBOL_DIGITS);

  55.       if(order_mt5.type==0)
  56.       {
  57.        ddsl++;
  58.       }
  59.       //Print("编号=",i);
  60.       //Print("品种=",pos_symbol);
  61.       //Print("订单号=",order_mt5.ticket);
  62.       //Print("开仓时间=",order_mt5.time);
  63.       //Print("持仓方向=",order_mt5.type);
  64.       //Print("开仓量=",order_mt5.volume);
  65.       //Print("开仓价=",order_mt5.price,digit_symbol);
  66.       //Print("止损价=",order_mt5.sl,digit_symbol);
  67.       //Print("止盈价=",order_mt5.tp,digit_symbol);
  68.       //Print("盈亏=",order_mt5.profit);
  69.       //Print("魔术码=",order_mt5.magic);
  70.       //Print("注释=",CharArrayToString(order_mt5.comment));
  71.      }
  72.      
  73.      Print("多单数量=",ddsl);
  74.   }
  75. //+------------------------------------------------------------------+
  76. //| Timer function                                                   |
  77. //+------------------------------------------------------------------+
  78. void OnTimer()
  79.   {
  80. //---

  81.   }
  82. //+------------------------------------------------------------------+
复制代码
EA文件下载: 双均线交叉_EA_v1.0.mq5 (6.54 KB, 下载次数: 4)

作者: tygk    时间: 2021-10-31 10:19
本帖最后由 tygk 于 2021-10-31 11:32 编辑

赞!
作者: ljs    时间: 2021-11-9 20:50
视频课程在哪里看呢?
作者: tygk    时间: 2021-11-12 14:15
ljs 发表于 2021-11-9 20:50
视频课程在哪里看呢?

EA学院里就有。





欢迎光临 EA邦程序化交易论坛 (https://www.eabang.com/bbs/) Powered by Discuz! X3.5