按照MQL5帮助文档的示例初始化 MqlTradeRequest request={0}; 编译却说 cannot convert 0 to enum'ENUM_TRADE_REQUEST_ACTIONS'

 
void OnStart()
  {
//---
   MqlTradeRequest request={0};
   MqlTradeResult  result={0};
   request.action    =TRADE_ACTION_DEAL;
   request.symbol    =Symbol();
   request.volume    =2;
   request.type      =ORDER_TYPE_BUY;
   request.price     =SymbolInfoDouble(Symbol(),SYMBOL_ASK);
   request.deviation =10;
   request.comment   ="EA";
   if(!OrderSend(request,result))
     {Alert("开仓失败:",GetLastError());}
            
    
   
  }

按照MQL5帮助文档的示例初始化  MqlTradeRequest request={0};    编译却说  cannot convert 0 to enum'ENUM_TRADE_REQUEST_ACTIONS'

有大佬知道是什么问题吗?

 
datetime  buytime=0;
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   MqlTradeRequest request;
   MqlTradeResult  result;
   request.action    =TRADE_ACTION_DEAL;
   request.symbol    =Symbol();
   request.volume    =2;
   request.type      =ORDER_TYPE_BUY;
   request.price     =SymbolInfoDouble(Symbol(),SYMBOL_ASK);
   request.deviation =10;
   request.comment   ="EA";
   if(!OrderSend(request,result))
     {Alert("开仓失败:",GetLastError());}
   else
     {buytime=iTime(NULL,0,0);}
   
  }
//+------------------------------------------------------------------+

一样的代码

在EA中返回错误代码4756

在脚本中可以成功下单

这是为什么

 
tl578547960:

一样的代码

在EA中返回错误代码4756

在脚本中可以成功下单

这是为什么

应该是请求重叠,而导致请求失败。建议尽量使用标准程序库中的函数。

 
Nianfu Li:

应该是请求重叠,而导致请求失败。建议尽量使用标准程序库中的函数。

我是把MQL5帮助文档中  打开卖出持仓TRADE_ACTION_DEAL 交易操作的示例   复制到MQL5中的

刚才又试了一下   result.retcode=10013    意思是无效请求    但是是哪个方面无效呢

 
tl578547960:

我是把MQL5帮助文档中  打开卖出持仓TRADE_ACTION_DEAL 交易操作的示例   复制到MQL5中的

刚才又试了一下   result.retcode=10013    意思是无效请求    但是是哪个方面无效呢

mt5对细节的严谨要远远高于mt4,感觉也是越来越严格,EA编写中建议使用标准类库下单,自己写的漏洞太多,不严谨的话,问题多多!

 
Tiecheng Fu:

mt5对细节的严谨要远远高于mt4,感觉也是越来越严格,EA编写中建议使用标准类库下单,自己写的漏洞太多,不严谨的话,问题多多!

关键是我就是把MQL5帮助文档中的示例抄写到MQL5中,最简单的语句,都出错。自己研究半天都没弄明白。

大哥,问一下,设定一个 MqlTradeRequest  或者叫初始化一个 MqlTradeRequest

MqlTradeRequest request={0};

这样写对吗?

 
tl578547960:

关键是我就是把MQL5帮助文档中的示例抄写到MQL5中,最简单的语句,都出错。自己研究半天都没弄明白。

大哥,问一下,设定一个 MqlTradeRequest  或者叫初始化一个 MqlTradeRequest

这样写对吗?

帮助文件中的例句肯定是没有问题的。交易上也是没有问题的。先看看算法交易是否打开。检查下你的账户情况,如果没有任何问题,那就建议你重新安装MT5甚至换台电脑试试。因为别人的电脑,包括我的电脑上,这样的写法在执行上没有任何问题。交易正常,没有出错。
 
Nianfu Li:
帮助文件中的例句肯定是没有问题的。交易上也是没有问题的。先看看算法交易是否打开。检查下你的账户情况,如果没有任何问题,那就建议你重新安装MT5甚至换台电脑试试。因为别人的电脑,包括我的电脑上,这样的写法在执行上没有任何问题。交易正常,没有出错。

重新安装MT5了。现在可以了 。

谢谢

 
tl578547960:

重新安装MT5了。现在可以了 。

谢谢

兄弟  你找到问题了吗   我用的是别人的类    编译完也是报你这个错误   

所有带这句的都报无法把0传到这个值里

                         MqlTradeRequest request={0};

                          MqlTradeResult  result={0};

我把后边的={0} 删了 就不报错了  这是什么问题啊  我看这个类在别人那里是可以用的



                       if(PositionGetInteger(POSITION_MAGIC)==magic)

                       {

                          MqlTradeRequest request={0};

                          MqlTradeResult  result={0};

                          request.action=TRADE_ACTION_SLTP;

                          request.position=PositionGetTicket(i);

                          request.symbol=symbol;

                          request.sl=ask+pot*yidongdian;

                          request.tp=tp;

                          if(!OrderSend(request,result))

                          PrintFormat("OrderSend error %d",GetLastError()); 

 
TL_TL_TL:

兄弟  你找到问题了吗   我用的是别人的类    编译完也是报你这个错误   

所有带这句的都报无法把0传到这个值里

                         MqlTradeRequest request={0};

                          MqlTradeResult  result={0};

我把后边的={0} 删了 就不报错了  这是什么问题啊  我看这个类在别人那里是可以用的



                       if(PositionGetInteger(POSITION_MAGIC)==magic)

                       {

                          MqlTradeRequest request={0};

                          MqlTradeResult  result={0};

                          request.action=TRADE_ACTION_SLTP;

                          request.position=PositionGetTicket(i);

                          request.symbol=symbol;

                          request.sl=ask+pot*yidongdian;

                          request.tp=tp;

                          if(!OrderSend(request,result))

                          PrintFormat("OrderSend error %d",GetLastError()); 

MqlTradeRequest request={0};   换成 MqlTradeRequest request={1};

这个是软件的问题吧   是更新后出现的问题   然后官方给了上面的解决方案

 
Tiecheng Fu:

mt5对细节的严谨要远远高于mt4,感觉也是越来越严格,EA编写中建议使用标准类库下单,自己写的漏洞太多,不严谨的话,问题多多!


大佬 问一下标准类库在哪   叫什么呢