Comprobación del stop mínimo en los EAs publicados en el mercado. - página 12

 
Igor Volodin:

No se puede dividir por un punto de esa manera, el valor de la funciónSymbolInfoDouble(symToWorkmodify,SYMBOL_POINT) puede ser igual a cero.
Esto también se aplica a otras funciones del mercado.

Por ejemplo, el uso deAccountInfoInteger(ACCOUNT_LEVERAGE) en los cálculos provocaba que algunos Asesores Expertos se bloquearan en el campeonato 2010 con el errorZero divide, cuando esta función devolvía 0 en OnInit.

Si te fijas en la referencia,SymbolInfoDouble(), SymbolInfoInteger() siempre deben ser revisados para detectar errores.
 
Vladimir Gribachev:

Si es tan malo, aquí va

Una vez más, ten en cuenta que el tema se refiere a una situación en la que el nivel de escalón es 0. Ha citado un resultado de la prueba con un nivel de estufa superior a cero.

Y si es tan malo, como acertadamente señalaAndrey F. Zelinsky

puedes añadir una comprobación para el error 130 y añadir +1 a los topes. Pero no tiene ningún sentido.
La comprobación del error 130 es una práctica normal, como cualquier otro error en el programa. Pero añadir 1 a los topes, primero, no ayuda, segundo, es una mala solución.
 
Ihor Herasko:

Una vez más, tened en cuenta que el tema trata de la situación cuando el nivel de escalón es 0. Has dado un resultado de prueba con un nivel de estopa superior a cero.

Muéstrame dónde en el servidor MetaQuotes-Demo stoplevel = 0

incluso si el Nivel de Stop = 0, entonces el stop loss mínimo es igual al valor del spread.

Si el spread = 0 también, entonces muéstrame tal corredor y voy a ir allí a cortar mi dinero.

La comprobación del error 130 es una práctica normal, como cualquier otro error en el programa. En cuanto a añadir 1 a los topes, en primer lugar no sirve de nada, en segundo lugar es una mala decisión.

Quién dijo que era bueno.

He posteado el código de comprobación, has puesto búhos para verificar, he demostrado que en el servidor donde los moderadores comprueban esta comprobación funciona.

Si tienes que burlarte del sistema y no encuentras la solución que quería el topikstarter, tienes que crear un nuevo tema llamado " ¡Volemos los sesos!

ZS. El terapeuta necesitaba una solución para probarla en el mercado. Los moderadores prueban en su servidor, no en Alps o donde sea.

 
Vladimir Gribachev:

Si el spread también es 0, entonces muéstrame tal broker y me iré allí a picar pasta.

No lo harás, habrá una comisión
 

:-) Lo leí y sonreí.


No he preguntado qué hacer si el servidor devuelve 0, modera tu ego - me dirijo específicamente a una persona, lo entenderá o no - pero no importa.

Es extraño escuchar a un hombre que nunca ha vendido un solo producto sobre lo que hay que hacer y lo que no hay que hacer.

EL TEMA ES LA VERIFICACIÓN EN EL MERCADO.

No estamos hablando de lo que un EA debe comprobar y cómo manejar los errores. - Me parece bien.

 
Vladislav Andruschenko:

No he preguntado qué hacer si el servidor devuelve 0

Entonces deberías haber sido más claro en el asunto:

Ahora mismo el 90% de los brokers tienen spreads flotantes y minstops y devuelven 0.

 
Ihor Herasko:

Entonces tienes que ser más claro en el hilo:

Estaba preguntando sobre cómo evitar el error del mercado si el servidor devuelve 0 - y al comprobar en macret el moderador pone stoploss = 1, pero el EA no puede cambiar a min stop ya que es 0, - es flotante.

Está claro que el EA devuelve el error 130 y dice que el stoploss es incorrecto, haz cambios, pero en el mercado, este comando no funciona.

mi post sonaba así:

¡Hola a todos, amigos!

hay una característica del mercado: tiene que comprobar todos los valores para la parada mínima.

Si el valor de la variable es menor que el min-stop, entonces asigna un min-stop, para que no hayaerror 130.

Actualmente el 90% de los brokers tienen spread flotante y min STOP y yield 0.

Hay una construcción de código que asigna todas las variables al tope mínimo.

 int OnInitLevels(string symToWorkmodify)
  {
   if(lot<SymbolInfoDouble(symToWorkmodify,SYMBOL_VOLUME_MIN))lots=SymbolInfoDouble(symToWorkmodify,SYMBOL_VOLUME_MIN);else
   if(lot>SymbolInfoDouble(symToWorkmodify,SYMBOL_VOLUME_MAX))lots=SymbolInfoDouble(symToWorkmodify,SYMBOL_VOLUME_MAX);else lots=lot;
   if(StopLoss>0 && StopLoss<SymbolInfoInteger(symToWorkmodify,SYMBOL_TRADE_STOPS_LEVEL))StopLosss=(int)SymbolInfoInteger(symToWorkmodify,SYMBOL_TRADE_STOPS_LEVEL);else StopLosss=StopLoss;
   if(TakeProfit>0 && TakeProfit<SymbolInfoInteger(symToWorkmodify,SYMBOL_TRADE_STOPS_LEVEL))TakeProfits=(int)SymbolInfoInteger(symToWorkmodify,SYMBOL_TRADE_STOPS_LEVEL);else TakeProfits=TakeProfit;
   if(TrailingStop>0 && TrailingStop<SymbolInfoInteger(symToWorkmodify,SYMBOL_TRADE_STOPS_LEVEL))TrallingStops=(int)SymbolInfoInteger(symToWorkmodify,SYMBOL_TRADE_STOPS_LEVEL);else TrallingStops=TrailingStop;
   if(TakeProfitALL>0 && TakeProfitALL<SymbolInfoInteger(symToWorkmodify,SYMBOL_TRADE_STOPS_LEVEL))TakeProfitsAver=(int)SymbolInfoInteger(symToWorkmodify,SYMBOL_TRADE_STOPS_LEVEL);else TakeProfitsAver=(int)TakeProfitALL;
   if(TrailingStop>0 && TrailingStop<SymbolInfoInteger(symToWorkmodify,SYMBOL_TRADE_STOPS_LEVEL))TrallingStops=(int)SymbolInfoInteger(symToWorkmodify,SYMBOL_TRADE_STOPS_LEVEL);else TrallingStops=TrailingStop;
   return(0);
  }

Pero ya no funciona en el mercado, porque ahora minstop = 0 en todas partes,

¿Quién se ocupa de este problema?

 
Vladimir Gribachev:

Muéstrame dónde en el servidor MetaQuotes-Demo stoplevel = 0

No en el servidor de MetaQuotes, sino en la comprobación en el mercado (ver el primer post del hilo):

pero ya no pasa en el mercado, porque ahora min stoplevel = 0 en todas partes ,

Vladimir Gribachev:

incluso si el min stoploss = 0, entonces el min stop loss es igual al spread.

No es un hecho. Podría haber 2 o 3 diferenciales. Quizás simplemente no se ha encontrado con estas situaciones. Pero eso no significa que no existan. Si no sabe de qué estoy hablando, puede intentar evitarlos.

 
Ihor Herasko:

No en el servidor de MetaQuotes, sino al comprobar en el mercado (ver el primer post del hilo):

No es un hecho. Puede haber 2 o 3 extensiones. Tal vez no te hayas encontrado con esas situaciones. Pero eso no significa que no existan. La situación en el corredor que mencioné es exactamente la misma.

i>Ese es el punto, establecer un tope mínimo duro para los spreads 1-2-3 es una excusa.

se necesita una solución real al problema de los topes flotantes.

No saben qué tipo de parada flotante tienen, pero no te dicen cómo hacerlo. Lo siento. O simplemente no me lo dice.

 

Creo que deberías tener clara la pregunta )). Mientras tanto, estás confundido:

я не спрашивал что делать если сервер возвращает 0

y a través del correo:

Preguntaba cómo evitar el error del mercado si el servidor devuelve 0