错误 4756 - 页 2

 
angevoyageur:
你用什么函数、类/方法来发送/修改你的订单?
在设置了MqlTradeRequest 之后的OrderSend()
Documentation on MQL5: Standard Constants, Enumerations and Structures / Data Structures / Trade Request Structure
Documentation on MQL5: Standard Constants, Enumerations and Structures / Data Structures / Trade Request Structure
  • www.mql5.com
Standard Constants, Enumerations and Structures / Data Structures / Trade Request Structure - Documentation on MQL5
 
RaptorUK:
设置了MqlTradeRequest 后的OrderSend()

你有没有看到这个(来自OrderSend文档)?

应该注意的是,在下市场订单时,OrderSend()方法操作的成功完成并不总是意味着交易的成功完成。检查 包含交易服务器返回代码 retcode 值,以及 交易订单 字段 的值 ,这取决于返回 结果 中的操作类型


看到这个 代码 更容易 得到 帮助

 
angevoyageur:

你看到这个了吗(来自OrderSend文档)?


如果看到这段 代码,会 更有帮助

我检查返回的结果,只有当它返回TRADE_RETCODE_PLACED或TRADE_RETCODE_DONE时才尝试放置SL和TP。

         if( result.retcode != TRADE_RETCODE_PLACED && result.retcode != TRADE_RETCODE_DONE ) 
            {
            SetTPandSL = false;
            Print("Return code # ", result.retcode, " Bid ", result.bid, " Ask ", result.ask, " Deal price ", result.price);
            }
         else SetTPandSL = true;

         if(SetTPandSL && ECN)
            {
            // now modify Position to add SL & TP
            ZeroMemory(request);
            ZeroMemory(result);
            request.action = TRADE_ACTION_SLTP;                   // setting the TP & SL
            request.symbol = _Symbol;                             // symbol
            request.sl = lastTick.ask - SL_Size * _Point;        // Stop Loss
            request.tp = lastTick.ask + TP_Size * _Point;        // Take Profit  
            
            //--- send a trade request
            OrderSend(request,result);
            
            //--- write the server reply to log  
            Print(__FUNCTION__,": Placeing SL & TP ",result.comment, " Return code # ", result.retcode);  
            if( result.retcode != TRADE_RETCODE_PLACED && result.retcode != TRADE_RETCODE_DONE ) 
               Print("Return code # ", result.retcode, " Bid ", lastTick.bid, " Ask ", lastTick.ask, " Deal price ", 
                  result.price, " SL: ", request.sl, " TP: ", request.tp, " Freeze: ", Freeze, " Stoplevel: ", Stop );
            }
 
RaptorUK:

我检查返回的结果,只有当它返回TRADE_RETCODE_PLACED或TRADE_RETCODE_DONE时才尝试放置SL和TP。


应该注意的是,在下市场订单时,成功完成OrderSend()方法操作并不总是意味着交易成功完成。检查 包含交易服务器返回代码retcode 值,以及 取决于返回 结果 操作类型 交易订单 字段 的值

你必须检查交易单号。

  if( (result.retcode != TRADE_RETCODE_PLACED && result.retcode != TRADE_RETCODE_DONE) || result.deal == 0) 

这不是最后一句话,如果你的交易单是0,你对SL/TP的修改无论如何不会执行。还在寻找...


 
angevoyageur:

你必须检查交易单号。

这不是最后一句话,如果你的交易单是0,你对SL/TP的修改无论如何不会执行。还在寻找...

我可以做到这一点,但问题是,交易是成功的,头寸也打开了......但当我试图添加SL和TP时,却以无效止损 失败,尽管它们不是无效的。 似乎我必须等待一些事情发生,然后才能发送设置TP和SL的请求......但我真的不知道我应该等待的官方、有记录的事情是什么?

谢谢你的回答:-)

 
RaptorUK:

我可以这样做,但问题是,交易成功了,仓位也打开了......但当我试图添加SL和TP时,却以无效止损失败,尽管它们并不无效。 似乎我必须等待一些事情发生,然后才能发送设置TP和SL的请求......但我真的不知道我应该等待的正式、有记录的事情是什么。

谢谢你的回答:-)

我知道。我正在检查 所有的mql5网站以找到回应 :-D

编辑。

在这个网站上 完全 没有 显示 如何把一个 sl / tp 与一个交易执行类型的市场

实际上我也有同样的问题,但是用PositionOpen来代替OrderSend,我也可以手动完成它。

 
angevoyageur:

我知道。我正在检查所有的mql5网站,以找到回应 :-D

编辑。

在这个网站上 完全 没有 显示 如何把一个 sl / tp 与交易执行类型的市场

其实我也有同样的问题,但是用PositionOpen来代替OrderSend,我也可以手动完成它。

我已经发现了。这是你的EA和交易服务器之间的同步问题。你必须使用事件处理程序OnTradeTransaction()。

由OrderSend()函数发送的服务器上的交易请求的执行结果可以由OnTradeTransaction 处理程序跟踪。应该注意的是,在执行一个交易请求时,OnTradeTransaction处理程序将被多次调用。

例如,当发送一个市场买入订单时,它被处理,为账户创建一个适当的买入订单,然后订单被执行并从未结订单列表中删除,然后它被添加到订单历史中,一个适当的交易被添加到历史中并创建一个新头寸。 OnTradeTransaction函数将为这些事件中的每一个调用。

试试吧。)试试吧......明天给我。
 
angevoyageur:

我已经发现了。这是你的EA和交易服务器之间的同步问题。你必须使用事件处理程序OnTradeTransaction()。

试试吧。)试试吧......明天给我。
啊哈,谢谢,我会看看的。)
 
RaptorUK:
啊哈,谢谢,我会看看的。)
这是你找到的主题吗?https://www.mql5.com/en/forum/10850,它报告了与我相同的问题。
 

我的EA在构建778时带来了奇怪的错误。0.1的成交量是正常的,显然不是无效的。

2013.03.12 07:29:57 pivots (SILVER,M5) SILVER failedORDER_TYPE_SELL_STOP with volume 0.10; err# 4756 check code:10014 评论。无效成交量

2013.03.12 07:20:00 pivots (SILVER,M5) SILVER failed ORDER_TYPE_SELL_STOP with volume 0.10; err# 4756 returned code:10014,经纪人评论。无效成交量

以下是带来它的代码

      ResetLastError();
      if(OrderCheck(_request,_check)){
         if(!OrderSend(_request,_result)){
            Print(TradeSymbol," failed ",EnumToString(OrderType)," with volume ",DoubleToString(OrderVolume,2),"; err# ",GetLastError()," returned code: ",_result.retcode,", broker comments: ",_result.comment);
            return(false);}
         else{
            if(_result.retcode!=(0||TRADE_RETCODE_PLACED||TRADE_RETCODE_DONE)){
               Print(TradeSymbol," failed ",EnumToString(OrderType)," with volume ",DoubleToString(OrderVolume,2),"; err# ",GetLastError()," returned code: ",_result.retcode,", broker comments: ",_result.comment);}}}
      else{
         Print(TradeSymbol," failed ",EnumToString(OrderType)," with volume ",DoubleToString(OrderVolume,2),"; err# ",GetLastError()," check code: ",_check.retcode," comments: ",_check.comment);
         return(false); }


Documentation on MQL5: Standard Constants, Enumerations and Structures / Trade Constants / Order Properties
Documentation on MQL5: Standard Constants, Enumerations and Structures / Trade Constants / Order Properties
  • www.mql5.com
Standard Constants, Enumerations and Structures / Trade Constants / Order Properties - Documentation on MQL5