设为首页 收藏本站 切换语言

MT5获取持仓

| 发表于 2022-11-10 13:23:58 | 显示全部楼层 |复制链接

MT5在持仓获取上,要比MT4复杂些,分两部分,获取持仓和挂单采用了不同的方法。

一、获取持仓中的buy和sell单

  1. int b=0;//获取buy单个数
  2. int s=0;//获取sell单个数
  3. double  lot_total_buy=0;//获取持仓中buy单的总手数
  4. double  lot_total_sell=0;//获取持仓中sell单的总手数
  5. for(int i=0; i<PositionsTotal(); i++)
  6.      {
  7.       ulong ticket=PositionGetTicket(i);
  8.       string ordsymbol = PositionGetString(POSITION_SYMBOL);
  9.       string ordcom = PositionGetString(POSITION_COMMENT);
  10.       long ordmagic = PositionGetInteger(POSITION_MAGIC);
  11.       double ordslp = PositionGetDouble(POSITION_SL);
  12.       double ordtpp = PositionGetDouble(POSITION_TP);
  13.       double ordoop = PositionGetDouble(POSITION_PRICE_OPEN);
  14.       long ordtype = PositionGetInteger(POSITION_TYPE);
  15.       double ordlot = PositionGetDouble(POSITION_VOLUME);
  16.       double ordcp  = PositionGetDouble(POSITION_PRICE_CURRENT);
  17.       if(ordsymbol==Symbol() && PositionGetInteger(POSITION_MAGIC)==magic)
  18.         {
  19.          if(ordtype==POSITION_TYPE_BUY)
  20.            {
  21.             b++;
  22.             lot_total_buy+=ordlot;
  23.            }
  24.          if(ordtype==POSITION_TYPE_SELL)
  25.            {
  26.             s++;
  27.             lot_total_sell+=ordlot;
  28.            }
  29.         }
  30.      }
复制代码

二、获取挂单的信息

  1. //--- 订单属性返回值的变量
  2.    ulong    ticket=0;
  3.    double   open_price;
  4.    double   initial_volume;
  5.    datetime time_setup;
  6.    string   symbol;
  7.    string   type;
  8.    long     order_magic;
  9.    int bg=0;//获取挂单buystop的个数
  10.    int sg=0;//获取挂单sellstop的个数
  11.    for(int i=0; i<OrdersTotal(); i++)
  12.      {
  13.       //--- 通过列表中的仓位返回订单报价
  14.       ticket=OrderGetTicket(i);
  15.       //--- 返回订单属性
  16.       open_price    =OrderGetDouble(ORDER_PRICE_OPEN);
  17.       time_setup    =(datetime)OrderGetInteger(ORDER_TIME_SETUP);
  18.       symbol        =OrderGetString(ORDER_SYMBOL);
  19.       order_magic   =OrderGetInteger(ORDER_MAGIC);
  20.       // positionID    =OrderGetInteger(ORDER_POSITION_ID);
  21.       initial_volume=OrderGetDouble(ORDER_VOLUME_INITIAL);
  22.       type          =EnumToString(ENUM_ORDER_TYPE(OrderGetInteger(ORDER_TYPE)));
  23.       string ordcom=OrderGetString(ORDER_COMMENT);
  24.       if(symbol==Symbol() && order_magic==magic)
  25.         {
  26.          if(type=="ORDER_TYPE_BUY_STOP")
  27.            {
  28.             bg++;
  29.            }
  30.          if(type=="ORDER_TYPE_SELL_STOP")
  31.            {
  32.             sg++;
  33.            }
  34.         }
  35.      }
复制代码
如果有帮助,就支持一下我呗
举报

评论 使用道具

精彩评论6

qwe963258
DDD
| 发表于 2022-11-10 14:46:04 | 显示全部楼层
好多内容可以复制粘贴直接用了
举报

点赞 评论 使用道具

chenppp
D
| 发表于 2022-11-10 14:48:41 来自手机 | 显示全部楼层
新人学习

举报

点赞 评论 使用道具

daerwushen
DD
| 发表于 2022-11-10 18:46:57 | 显示全部楼层
挺复杂啊
举报

点赞 评论 使用道具

kenlee1628
DDD
| 发表于 2022-11-11 04:16:35 | 显示全部楼层
学习了,学习了,不错
举报

点赞 评论 使用道具

qwe11
CCC
| 发表于 2022-11-12 19:26:25 | 显示全部楼层
学习了,
举报

点赞 评论 使用道具

samsonlee888
DD
| 发表于 2022-11-13 08:41:11 | 显示全部楼层
新人学习!!!!
举报

点赞 评论 使用道具

发新帖
EA交易
您需要登录后才可以评论 登录 | 立即注册

天眼云VPS
简体中文
繁體中文
English(英语)
日本語(日语)
Deutsch(德语)
Русский язык(俄语)
بالعربية(阿拉伯语)
Türkçe(土耳其语)
Português(葡萄牙语)
ภาษาไทย(泰国语)
한어(朝鲜语/韩语)
Français(法语)