- Por ejemplo, si el lote en la configuración es 0, el EA no puede abrir una operación porque el lote es 0.
- Limitación del spread en el Expert Advisor, no abre posiciones.
- Realmente no hay señales para abrir posiciones en el período de prueba.
Y las comprobaciones sólo las ves tú, tu código no se adjunta.
Ejemplos por los miles....
- Por ejemplo, si el lote en la configuración es 0, el EA no puede abrir una operación porque el lote es 0.
- Limitación del spread en el Expert Advisor, no abre posiciones.
- Realmente no hay señales para abrir posiciones en el período de prueba.
Y las comprobaciones sólo las ves tú, tu código no se adjunta.
Ejemplos por los miles....
- Por ejemplo, si el lote en la configuración es 0, el EA no puede abrir una operación porque el lote es 0.
- Limitación del spread en el Expert Advisor, no abre posiciones.
- Realmente no hay señales para abrir posiciones en el período de prueba.
Y las comprobaciones sólo las ves tú, tu código no se adjunta.
Ejemplos por los miles....
La validación del lote está ahí, las señales están definitivamente ahí - es un netminder, sin limitaciones de propagación...
pues entonces hay 100500 opciones más.
el nettler está pasando tranquilamente la prueba de mercado.
pues entonces hay 100500 opciones más.
el nettler está pasando tranquilamente la prueba de mercado.
¿Puede alguien explicar por qué el mercado devuelve este error? Todos los controles de la EA están en marcha...
Entiendo la esencia, por supuesto: no hay intercambios, pero ¿por qué razón?
¿Es tan difícil utilizar la búsqueda del sitio y crear 100500 copias de la rama?
https://www.mql5.com/ru/search#!keyword=no%20trading%20operations&method=2&module=mql5_module_forum
- www.mql5.com
Sólo quiero discutir el código:
double CheckVolumeValue(double volume) { double min_volume=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_MIN); if(volume<min_volume) { Print("Volume is less than the minimum"); return(min_volume); } double max_volume=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_MAX); if(volume>max_volume) { Print("Volume is greater than the maximum"); return(max_volume); } double volume_step=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_STEP); int ratio=(int)MathRound(volume/volume_step); if(MathAbs(ratio*volume_step-volume)>0.0000001) { Print("Wrong lot size"); return(min_volume); } if(volume<MarketInfo(Symbol(),MODE_MINLOT)) { Print("Trade stop invalid lot size"); Comment("Trade stop invalid lot size"); return(MarketInfo(Symbol(),MODE_MINLOT)); } return(volume); }
He modificado la comprobación estándar para que devuelva el lote correcto en lugar de un error...
Aquí llamamos a esta función:
if(!OrderSend(Symbol(),cmd,CheckVolumeValue(Lot),NormalizeDouble(priceStep,Digits()),Slippage,0,0,"",magic,0))
¡En mi probador y en mi cuenta real este robot funciona bien! Incluso cuando se introduce un lote incorrecto, sigue devolviendo el correcto y funciona más...
¡Y ya sabes donde vuelve el error 4051! ¡Esto es en general...!
Sólo quiero discutir el código:
He modificado la comprobación estándar para que devuelva el lote correcto en lugar de un error...
Aquí llamamos a esta función:
¡En mi probador y en mi cuenta real este robot funciona bien! Incluso cuando se introduce un lote incorrecto, sigue devolviendo el correcto y funciona más...
¡Y ya sabes donde vuelve el error 4051! ¡Esto es en general...!
Sólo quiero discutir el código:
He modificado la comprobación estándar para que devuelva el lote correcto en lugar de un error...
Aquí llamamos a esta función:
¡En mi probador y en mi cuenta real este robot funciona bien! Incluso cuando se introduce un lote incorrecto, sigue devolviendo el correcto y funciona más...
¡Y ya sabes donde vuelve el error 4051! ¡Esto es en general...!
double CheckVolumeValue(double volume) { double min_volume=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_MIN); if(volume<min_volume) { Print("Volume is less than the minimum"); return(min_volume); } double max_volume=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_MAX); if(volume>max_volume) { Print("Volume is greater than the maximum"); return(max_volume); } double volume_step=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_STEP); int ratio=(int)MathRound(volume/volume_step); if(MathAbs(ratio*volume_step-volume)>0.0000001) { Print("Wrong lot size"); return(min_volume); } if(volume<MarketInfo(Symbol(),MODE_MINLOT)) { Print("Trade stop invalid lot size"); Comment("Trade stop invalid lot size"); return(MarketInfo(Symbol(),MODE_MINLOT)); } return(volume); }Y nunca llegará a este punto
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Usted acepta la política del sitio web y las condiciones de uso
¿Puede alguien explicar por qué el mercado devuelve este error? Todos los controles de la EA están en marcha...
Entiendo la esencia, por supuesto: no hay oficios, pero ¿cuál es la razón?