Como vendedor intento VALIDAR un .ex5, pero al validarlo la plataforma arroja un error ilogico, y no puedo terminar de subir el producto

 

He intentado subir mi archivo .ex5 como indica la plataforma de vendedores, sin embargo toda vez que lo intento arroja el siguiente error, que no parece logico dado que en EURUSD deberia poder colocarse una posicion de 0.01 perfectamente. Le he dado muchas vueltas al asunto y no hallo solucion:

ERROR QUE MUESTRA:

Validation state: Test completed with errors
Errors count 22
Started 2025.10.02 21:21:52
Finished 2025.10.02 21:22:13
Expert Advisor Type
test on EURUSD, H1 (netting)
2023.02.01 00:00:07 failed market buy 0.01 EURUSD [Invalid volume]
2023.02.01 01:00:05 failed market buy 0.01 EURUSD [Invalid volume]
2023.02.01 02:00:03 failed market buy 0.01 EURUSD [Invalid volume]
2023.02.01 03:00:01 failed Market buy 0.01 EURUSD [Invalid volume]
2023.02.01 04:00:06 failed market buy 0.01 EURUSD [Invalid volume]

Por favor, alguien sabe que puede estar sucediendo y como solucionarlo?

Muchas gracias.

 

Consulte las respuestas proporcionadas en su tema en el foro en inglés ...
Please see the answers given in your topic in the English forum ...

 
Ruben Osvaldo Rodriguez:

Artículos

Qué comprobaciones debe superar un robot comercial antes de ser publicado en el Mercado

MetaQuotes, 2016.07.28 10:55

Volúmenes incorrectos en las operaciones comerciales

Antes de enviar órdenes comerciales también es necesario comprobar que los volúmenes indicados en la orden sean correctos. El número de lotes que tiene previsto indicar en la orden del asesor debe ser comprobado antes de llamar a la función OrderSend(). Para los instrumentos financieros en las Especificaciones se indican los volúmenes mínimos y máximos permitidos para el comercio, así como la gradación del volumen. Se pueden obtener estos valores en MQL5 de la enumeración ENUM_SYMBOL_INFO_DOUBLE con la ayuda de la función SymbolInfoDouble()

SYMBOL_VOLUME_MIN

Volumen mínimo para ejecutar una operación

SYMBOL_VOLUME_MAX

Volumen máximo para ejecutar una operación

SYMBOL_VOLUME_STEP

Salto mínimo del cambio de volumen para ejecutar una operación

Ejemplo de una función para la comprobación de volumen correcto

//+------------------------------------------------------------------+
//|  Comprobar si el volumen de una orden es correcto                          |
//+------------------------------------------------------------------+
bool CheckVolumeValue(double volume,string &description)
  {
//--- volumen mínimo permitido para las operaciones comerciales
   double min_volume=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_MIN);
   if(volume<min_volume)
     {
      description=StringFormat("El volumen es inferior al mínimo permitido SYMBOL_VOLUME_MIN=%.2f",min_volume);
      return(false);
     }

//--- volumen máximo permitido para las operaciones comerciales
   double max_volume=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_MAX);
   if(volume>max_volume)
     {
      description=StringFormat("El volumen es superior al máximo permitido SYMBOL_VOLUME_MAX=%.2f",max_volume);
      return(false);
     }

//--- obtenemos la gradación mínima del volumen
   double volume_step=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_STEP);

   int ratio=(int)MathRound(volume/volume_step);
   if(MathAbs(ratio*volume_step-volume)>0.0000001)
     {
      description=StringFormat("El volumen no es múltiplo de la gradación mínima SYMBOL_VOLUME_STEP=%.2f, el volumen correcto más cercano es %.2f",
                               volume_step,ratio*volume_step);
      return(false);
     }
   description="Valor correcto del volumen";
   return(true);
  }