我前几天升级了没出现这个问题,
改成不赋值试试。
我也是这个问题,下午调试代码,本来好好的,突然就编译出错了。
我试了实盘的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
标识符 | 描述 |
为规定参数的立即执行放置交易命令(市场命令) | |
在制定环境下执行放置交易命令(待办订单) | |
修改折仓并取走开仓利润值 | |
修改先前放置的命令参量 | |
删除先前放置的待办订单命令 | |
通过反向持仓来平仓 |
![MQL5文档: 标准常量,列举和架构 / 数据结构 / 交易请求结构 MQL5文档: 标准常量,列举和架构 / 数据结构 / 交易请求结构](https://c.mql5.com/36/48/mql5.png)
- www.mql5.com
那个枚举变量的第一个元素值是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](https://c.mql5.com/36/48/mt5-trade-with-structure-is-not.jpg)
- 2021.05.29
- www.mql5.com
不会有副作用,仅仅是初始化而已,紧接着的语句你会给它赋值。
也可以这么写:
这个问题,官方的解释,参考:
https://www.mql5.com/en/forum/370281
谢谢大佬
MqlTradeRequest request={0};
说是这一句有问题
cannot convert 0 to enum 'ENUM_TRADE_REQUEST_ACTIONS'