错误、漏洞、问题 - 页 1739

 

我的理解是否正确,通过SB修改订单在交易所中是无效的?

//+------------------------------------------------------------------+
//| Modify specified pending order                                   |
//+------------------------------------------------------------------+
bool CTrade::OrderModify(const ulong ticket,const double price,const double sl,const double tp,
                         const ENUM_ORDER_TYPE_TIME type_time,const datetime expiration,const double stoplimit)
  {
//--- check stopped
   if(IsStopped(__FUNCTION__))
      return(false);
//--- clean
   ClearStructures();
//--- setting request
   m_request.action      =TRADE_ACTION_MODIFY;
   m_request.magic       =m_magic;
   m_request.order       =ticket;
   m_request.price       =price;
   m_request.stoplimit   =stoplimit;
   m_request.sl          =sl;
   m_request.tp          =tp;
   m_request.type_time   =type_time;
   m_request.expiration  =expiration;
//--- action and return the result
   return(OrderSend(m_request,m_result));
  }

它没有被设定。

 
所有交易服务器上的SB
//+------------------------------------------------------------------+
//| Get the property value "ORDER_TYPE_FILLING"                      |
//+------------------------------------------------------------------+
ENUM_ORDER_TYPE_FILLING COrderInfo::TypeFilling(void) const
  {
   return((ENUM_ORDER_TYPE_FILLING)OrderGetInteger(ORDER_TYPE_FILLING));
  }

在测试器中总是返回ENUM_ORDER_TYPE_FILLING::ORDER_FILLING_RETURN

fxsaber:

馅料没有定型。

因此,如果您在OrderModify中通过COrderInfo::TypeFilling()设置填充,那么在RoboForexEU-MetaTrader 5上会出现一个逻辑错误[不支持的填充模式]。然而,这个错误在MetaQuotes-Demo中并没有发生--开发商的服务器配置错误?


 
fxsaber:

我的理解是否正确,通过SB修改订单在交易所中是无效的?

//+------------------------------------------------------------------+
//| Modify specified pending order                                   |
//+------------------------------------------------------------------+
bool CTrade::OrderModify(const ulong ticket,const double price,const double sl,const double tp,
                         const ENUM_ORDER_TYPE_TIME type_time,const datetime expiration,const double stoplimit)
  {
//--- check stopped
   if(IsStopped(__FUNCTION__))
      return(false);
//--- clean
   ClearStructures();
//--- setting request
   m_request.action      =TRADE_ACTION_MODIFY;
   m_request.magic       =m_magic;
   m_request.order       =ticket;
   m_request.price       =price;
   m_request.stoplimit   =stoplimit;
   m_request.sl          =sl;
   m_request.tp          =tp;
   m_request.type_time   =type_time;
   m_request.expiration  =expiration;
//--- action and return the result
   return(OrderSend(m_request,m_result));
  }

它没有。

不要惊慌!

class CTrade : public CObject
  {
protected:
   MqlTradeRequest   m_request;         // request data
   MqlTradeResult    m_result;          // result data
   MqlTradeCheckResult m_check_result;  // result check data
   bool              m_async_mode;      // trade mode
   ulong             m_magic;           // expert magic number
   ulong             m_deviation;       // deviation default
   ENUM_ORDER_TYPE_FILLING m_type_filling;
   ENUM_ACCOUNT_MARGIN_MODE m_margin_mode;
   //---
   ENUM_LOG_LEVELS   m_log_level;

public:
 
Alexey Kozitsyn:

不要惊慌!

//+------------------------------------------------------------------+
//| Modify specified pending order                                   |
//+------------------------------------------------------------------+
bool CTrade::OrderModify(const ulong ticket,const double price,const double sl,const double tp,
                         const ENUM_ORDER_TYPE_TIME type_time,const datetime expiration,const double stoplimit)
  {
//--- check stopped
   if(IsStopped(__FUNCTION__))
      return(false);
//--- clean
   ClearStructures();

//--- setting request
   m_request.action      =TRADE_ACTION_MODIFY;
   m_request.magic       =m_magic;
   m_request.order       =ticket;
   m_request.price       =price;
   m_request.stoplimit   =stoplimit;
   m_request.sl          =sl;
   m_request.tp          =tp;
   m_request.type_time   =type_time;
   m_request.expiration  =expiration;
//--- action and return the result
   return(OrderSend(m_request,m_result));
  }
 
fxsaber:
//+------------------------------------------------------------------+
//| Modify specified pending order                                   |
//+------------------------------------------------------------------+
bool CTrade::OrderModify(const ulong ticket,const double price,const double sl,const double tp,
                         const ENUM_ORDER_TYPE_TIME type_time,const datetime expiration,const double stoplimit)
  {
//--- check stopped
   if(IsStopped(__FUNCTION__))
      return(false);
//--- clean
   ClearStructures();

//--- setting request
   m_request.action      =TRADE_ACTION_MODIFY;
   m_request.magic       =m_magic;
   m_request.order       =ticket;
   m_request.price       =price;
   m_request.stoplimit   =stoplimit;
   m_request.sl          =sl;
   m_request.tp          =tp;
   m_request.type_time   =type_time;
   m_request.expiration  =expiration;
//--- action and return the result
   return(OrderSend(m_request,m_result));
  }

等等,为什么要在修改时指定填充类型?

来自文件。

修改止损和/或止盈水平的交易指令。需要指定4个(jamb:))字段。

  • 行动
  • 标志
  • 俚语
  • tp
  • 位置
 
Alexey Kozitsyn:

等等,为什么要在修改时指定填充类型?

来自文件。

不要相信它所说的一切。它必须被指定。否则它将无法工作。

我不能使用SB。但你可以在交易所尝试OrderModify,以确定错误。

 
fxsaber:

不要相信所写的一切。你必须说明。否则,它将无法工作。

我完全同意,但是...

我不知道如何使用SB。但你可以在交易所尝试OrderModify,以确定该错误。

但MQ甚至在文档中添加了一个例子...那里没有说明...

此外,还有一个我写的专家顾问,它在交易所工作,使用这样一段代码。

         //--- Модифицируем ордер
         trade.OrderModify( order.Ticket(), order.PriceOpen(), newSl, newTp, order.TypeTime(), 0 );
 
Alexey Kozitsyn:

但MQ甚至在文件中添加了一个例子...它没有说明...

错了,人们。我们必须同时纠正博士和SB。

阿列克谢-科齐岑

另外,我写的一个EA,在一个交易所工作,使用了这样一段代码。

         //--- Модифицируем ордер
         trade.OrderModify( order.Ticket(), order.PriceOpen(), newSl, newTp, order.TypeTime(), 0 );

在测试器中呢?

 
fxsaber:
错了,人们。你必须同时纠正博士和SB。
试着先在交易所修改订单,然后再谈。
 
fxsaber:

错了,人们。你必须同时纠正博士和SB。

在测试器中呢?

在安装了认股权证后已经可以使用。在测试器中没有比赛。