mt5用的好好的,ea代码没变一直也好好的,升级mt5之后有一条语句就报错,编译不了了

 

MqlTradeRequest request={0};

说是这一句有问题

cannot convert 0 to enum 'ENUM_TRADE_REQUEST_ACTIONS'


 

我前几天升级了没出现这个问题,

改成不赋值试试。

 

我也是这个问题,下午调试代码,本来好好的,突然就编译出错了。

我试了实盘的MT5 ,可以编译成功,然后把本机官网下载的MT5删除了,重新从官网下载安装,然后可以顺利编译了,

但是大概过了10分钟,又出现

cannot convert 0 to enum 'ENUM_TRADE_REQUEST_ACTIONS' 

这个错误


 

那个枚举变量的第一个元素值是1,赋0它通不过,你可以直接给它赋1

下面写法100%正确:

MqlTradeRequest request={1};
 

我很笨,然后查询了一下 MqlTradeRequest 的结构,然后用笨办法解决了问题。暂时过了关

MqlTradeRequest request={TRADE_ACTION_DEAL,0};

意思就是 MqlTradeRequest是一个枚举量,

struct MqlTradeRequest

  {
   ENUM_TRADE_REQUEST_ACTIONS    action;           // 交易操作类型
   ulong                         magic;            // EA交易 ID (幻数)
   ulong                         order;            // 订单号
   string                        symbol;           // 交易的交易品种
   double                        volume;           // 一手需求的交易量
   double                        price;            // 价格
   double                        stoplimit;        // 订单止损限价点位
   double                        sl;               // 订单止损价位点位
   double                        tp;               // 订单盈利价位点位
   ulong                         deviation;        // 需求价格最可能的偏差
   ENUM_ORDER_TYPE               type;             // 订单类型
   ENUM_ORDER_TYPE_FILLING       type_filling;     // 订单执行类型
   ENUM_ORDER_TYPE_TIME          type_time;        // 订单执行时间
   datetime                      expiration;       // 订单终止期 (为 ORDER_TIME_SPECIFIED 类型订单)
   string                        comment;          // 订单注释
   ulong                         position;         // 持仓编号
   ulong                         position_by;      // 反向持仓编号
  };

MqlTradeRequest  结构 的官方说明

https://www.mql5.com/zh/docs/constants/structures/mqltraderequest

这个枚举量的第一个参数 ENUM_TRADE_REQUEST_ACTIONS    action;     // 交易操作类型

好像现在不能赋值为0,

ENUM_TRADE_REQUEST_ACTIONS    action; 不知道怎么解释这玩意

官方是这么说的

https://www.mql5.com/zh/docs/constants/tradingconstants/enum_trade_request_actions

标识符

描述

TRADE_ACTION_DEAL

为规定参数的立即执行放置交易命令(市场命令)

TRADE_ACTION_PENDING

在制定环境下执行放置交易命令(待办订单)

TRADE_ACTION_SLTP

修改折仓并取走开仓利润值

TRADE_ACTION_MODIFY

修改先前放置的命令参量

TRADE_ACTION_REMOVE

删除先前放置的待办订单命令

TRADE_ACTION_CLOSE_BY

通过反向持仓来平仓

MQL5文档: 标准常量,列举和架构 / 数据结构 / 交易请求结构
MQL5文档: 标准常量,列举和架构 / 数据结构 / 交易请求结构
  • www.mql5.com
交易请求结构 - 数据结构 - 标准常量,列举和架构 - MQL5参考 - 参考MetaTrader 5的算法/自动交易语言
 
Ziheng Zhuang:

那个枚举变量的第一个元素值是1,赋0它通不过,你可以直接给它赋1

下面写法100%正确:

没想到是这样的,谢谢大佬!


但是,置1 会不会有什么副作用?

 

不会有副作用,仅仅是初始化而已,紧接着的语句你会给它赋值。

也可以这么写:

 MqlTradeRequest request= {};

这个问题,官方的解释,参考:

https://www.mql5.com/en/forum/370281

MT5 Trade with Structure is not available
MT5 Trade with Structure is not available
  • 2021.05.29
  • www.mql5.com
It seems new update of MT5 have problem with Trade Structure, I recive error when compile code. Also my old code not complied...
 
Ziheng Zhuang:

不会有副作用,仅仅是初始化而已,紧接着的语句你会给它赋值。

也可以这么写:

这个问题,官方的解释,参考:

https://www.mql5.com/en/forum/370281

谢谢大佬

原因: