El error es que no hay operaciones comerciales - página 4

 
Alexey Viktorov:

El ordenador es un idiota. © M.M. Botvinnik.

Así que finge ser un idiota e intenta pasar el algoritmo desde el punto de vista de un idiota y con los parámetros establecidos por un idiota. Es desde este punto de vista que el autovalidador encaja. Preste atención a la "retroalimentación". ¿El Asesor Experto le notifica los errores?

Finalmente me di cuenta, tal vez alguien puede ayudar, en general, el soviético tiene sólo cuando el MM se comprobó un lote mínimo, y tan duro conjunto de lote = 0,01, así, en el depósito validador resulta ser $ 1 (encontrado esta información en uno de los temas), respectivamente, se utiliza el lote 0,001 (o así) para el comercio y porque siempre tenía en un lugar era lote 0,01, respectivamente, no tenía suficiente dinero y el robot no el comercio)

 
Roman Gergert:

Finalmente me di cuenta, tal vez alguien va a ayudar, en general, la junta sólo cuando el MM se comprobó un lote mínimo, y tan duro conjunto lote = 0,01, así, en el depósito validador resulta ser $ 1 (encontrado esta información en uno de los temas), respectivamente, se utiliza el lote 0,001 (o así) para el comercio y porque siempre tenía en un lugar un lote de 0,01, respectivamente, carecía de los fondos y el robot no el comercio)

Me gustaría volver a sacar el tema. Su respuesta no me ayuda. Tengo un cálculo de volumen y si no cabe todo se utiliza el volumen mínimo:

SymbolInfoDouble(symbol, SYMBOL_VOLUME_MIN)

Al final, pon el volumen mínimo de una vez sin ningún cálculo. Luego viene la comprobación del margen... y ninguna operación comercial.

Ayer me topé con una respuesta del foro en la que se decía que a veces se puede enviar un mismo código después de un tiempo y se pasa. El tiempo ha pasado, no se envía.

¡¡¡Que hacer, hace 2 semanas se pasó esta función de detección de volumen y desde entonces no ha cambiado en nada!!!

 
Evgeniy Scherbina:

Me gustaría volver a sacar el tema. Su respuesta no me ayuda. Tengo un cálculo de volumen, y si no cabe todo, se utiliza el volumen mínimo:

Al final, pon el volumen mínimo de una vez sin ningún cálculo. Luego viene la comprobación del margen... y ninguna operación comercial.

Ayer me topé con una respuesta del foro en la que se decía que a veces se puede enviar un mismo código después de un tiempo y se pasa. El tiempo ha pasado, no manda.

¡¡¡Que hacer, hace 2 semanas esta función de detección de volumen pasó, y desde entonces no ha cambiado en nada!!!

Voy a ser un veterano. Con semejante calificación, números bajo el avatar, y teniendo un problema que de alguna manera no viste el tema donde se discutía. Y ahí has encontrado una solución.

Автоматический валидатор - проблемы
Автоматический валидатор - проблемы
  • 2019.04.26
  • www.mql5.com
Пытаюсь обновить версию советника и получаю ошибку. Тот же советник в тестере стратегий. Паралельно пишу советники и для MT4, там все ОК...
 
Alexey Viktorov:

Voy a ser un veterano. Con semejante calificación, números bajo el avatar, y teniendo un problema que de alguna manera no viste el tema donde se discutía. Y ahí has encontrado una solución.

Entre los pueblos de Rusia hay quienes rezan a dioses paganos, y quienes responden
 
Evgeniy Scherbina:
Entre los pueblos de Rusia hay quienes rezan a dioses paganos, y quienes responden

Respondí, pero no soy un dios pagano. Creo que es una solución temporal al problema, espero que se arregle pronto.

 
Nota - este comentario es probablemente más para mí la próxima vez que busque el error "no hay operaciones comerciales".
Utilizar ForceStop en lugares dudosos. Además, aparecerá en el informe como división con cero y la ubicación exacta de este error.
Ejemplo en mi caso:
//+------------------------------------------------------------------+
//|  Проверяет объем ордера на корректность                          |
//+------------------------------------------------------------------+
int ForceStop=0;
int sstop=0;
bool CheckVolumeValue(double volume,string &description)
  {
  
//--- минимально допустимый объем для торговых операций
   double min_volume=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_MIN);
   if(volume<min_volume)
     {     
      description=StringFormat("Volume is less than the minimum allowable SYMBOL_VOLUME_MIN=%.2f",min_volume);
      sstop=5/ForceStop; // force stop, zerro divide
      return(false);
     }

//--- максимально допустимый объем для торговых операций
   double max_volume=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_MAX);
   if(volume>max_volume)
     {
      description=StringFormat("Volume is greater than the maximum allowable SYMBOL_VOLUME_MAX=%.2f",max_volume);
      sstop=5/ForceStop; // force stop, zerro divide
      return(false);
     }

//--- получим минимальную градацию объема
   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("The volume is not a multiple of the minimum gradation SYMBOL_VOLUME_STEP=%.2f, Closest correct volume %.2f",
                               volume_step,ratio*volume_step);
      sstop=5/ForceStop; // force stop, zerro divide
      return(false);
     }
   description="Correct value of volume";
   return(true);
  }
 

Hermano, me ayudó a mover todas las variables en la cabecera del código.

void OnDeinit

{
Alert(GetLastError());

}

Y en el init de ResetLastError();

No sé lo que ha funcionado, pero algo así

 

Me ayuda a cambiar (editar) simplemente algunas líneas en el código.
O simplemente añadir líneas en blanco, y volver a compilar.

Creo que es algún tipo de error en el servidor.

 
Taras Slobodyanik:

O simplemente añadir líneas en blanco, y volver a compilar.

Confirmado, a veces sólo hay que recompilar y funciona.

 
Nauris Zukas:

Confirmado, a veces solo hay que recompilar y se pasa.

No es porque lo haya recompilado, es porque la prueba comenzó desde una fecha diferente. Y me di cuenta de un error tal, si se desliza algo que ya ha sido, a continuación, la prueba no sucede, e inmediatamente da el resultado de la prueba anterior. Por lo tanto, no se deje engañar por esas muletas. Intenta que sea normal. Si falta algo o los parámetros no son válidos, comunícalo a través de Print y todo será correcto.