Errores, fallos, preguntas - página 1739

 

¿Entiendo correctamente que la modificación de órdenes a través de SB no funcionará en un intercambio?

//+------------------------------------------------------------------+
//| 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));
  }

No se ha fijado.

 
SB en todos los servidores comerciales
//+------------------------------------------------------------------+
//| Get the property value "ORDER_TYPE_FILLING"                      |
//+------------------------------------------------------------------+
ENUM_ORDER_TYPE_FILLING COrderInfo::TypeFilling(void) const
  {
   return((ENUM_ORDER_TYPE_FILLING)OrderGetInteger(ORDER_TYPE_FILLING));
  }

Devuelve SIEMPREENUM_ORDER_TYPE_FILLING::ORDER_FILLING_RETURN en el comprobador.

fxsaber:

El relleno no está fijado.

Así que si usted establece el llenado en OrderModify a través de COrderInfo::TypeFilling(), entonces en RoboForexEU-MetaTrader 5 habrá un error lógico [Modo de llenado no soportado]. Sin embargo, este error no se produce en MetaQuotes-Demo - ¿servidor del desarrollador mal configurado?


[Eliminado]  
fxsaber:

¿Entiendo correctamente que la modificación de órdenes a través de SB no funcionará en un intercambio?

//+------------------------------------------------------------------+
//| 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));
  }

No es así.

Que no cunda el pánico.

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:

Que no cunda el pánico.

//+------------------------------------------------------------------+
//| 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));
  }
[Eliminado]  
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));
  }

Espera, ¿por qué especificar el tipo de relleno al modificar?

De la documentación:

Orden de operación para modificar los niveles de StopLoss y/o TakeProfit. Requiere que se especifiquen 4 campos (jamba:)):

  • acción
  • símbolo
  • sl
  • tp
  • posición
 
Alexey Kozitsyn:

Espera, ¿por qué especificar el tipo de relleno al modificar?

De la documentación:

No creas todo lo que dice. Debe especificarse. De lo contrario, no funcionará.

No puedo usar SB. Pero puedes probar OrderModify en exchange para asegurarte del fallo.

[Eliminado]  
fxsaber:

No creas todo lo que está escrito. Debe especificar. De lo contrario, no funcionará.

Estoy totalmente de acuerdo, pero...

No sé cómo usar SB. Pero puedes probar OrderModify en la bolsa para asegurarte del fallo.

Pero MQ incluso ha añadido un ejemplo en el documento... No está indicado allí...

También hay un Asesor Experto que escribí, que funciona en la bolsa y utiliza dicho código:

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

Pero MQ incluso ha añadido un ejemplo al documento... No especifica...

Se equivocan, gente. Tenemos que corregir tanto a doc como a SB.

Alexey Kozitsyn:

Además, hay un EA que escribí que funciona en una bolsa y que utiliza dicho código:

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

¿Y en el probador?

[Eliminado]  
fxsaber:
Se equivocan, gente. Hay que corregir tanto el doc como el SB.
Intenta modificar el orden en la bolsa primero y luego habla.
[Eliminado]  
fxsaber:

Se equivocan, gente. Hay que corregir tanto el doc como el SB.

¿Y en el probador?

Funciona ya con las garantías instaladas. No corrió en el probador.