Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
Aquí si Orderselect es FALSE cómo el EA puede volver a la línea de código: for(int cnt=OrdersTotal(); cnt > 0; cnt-- )
???
Aquí si Orderselect es FALSE como el EA puede volver a la línea de código: for(int cnt=OrdersTotal(); cnt > 0; cnt-- )
???
Ese código está mal.......
cnt tiene que empezar en OrdersTotal() - 1 y decrecer hasta cnt >= 0 . . . la primera entrada es 0 no 1
Por eso pedí ver el código . . y has mostrado lo suficiente para identificar el problema . . probablemente. ;-)
Ese código está mal. . . .
cnt tiene que empezar en OrdersTotal() - 1 y disminuir hasta cnt >= 0 . . . la primera entrada es 0 no 1
Por eso pedí ver el código . . y has mostrado lo suficiente para identificar el problema . . probablemente. ;-)
Muy correcto. ¡Gracias, Wizeman!
Muy correcto. ¡Gracias, Wizeman!
Y otra idea:
Si tengo muchas condiciones, puedes escribir
Si( X>b && B>S && NB<F......)
{
BBB= 5;
}f.e.
Aquí, el EA tiene que calcular cada condición dentro del paréntesis.
Pero, si usted está buscando para la eficiencia (4.000 líneas de código ...) prefiero tener:
Si ( X>b )
{
while (B>S)
{
Mientras (NB<F..)
{
BBB=5;
}
romper;
}
break;
}
¿Las 2 variaciones son iguales?
Y.
crossy, cuando escribas el código, por favor usa el botón SRC, será mucho más legible
Así que se mostrará así
Hay una explicación sobre el bucle "if, while y for" en mql4 https://book.mql4.com/operators/assign
En el segundo código, está bien, ya que el uso de romper, sin embargo, eso es un largo camino sólo para obtener BBB = 5, prefiero el primer código, que utilizan menos recursos
Y otra idea:
Si tengo muchas condiciones, puedes escribir
Si( X>b && B>S && NB<F......)
{
BBB= 5;
}f.e.
Aquí, el EA tiene que calcular cada condición dentro del paréntesis.
Pero, si se busca la eficiencia (4.000 líneas de código...) prefiero tener:
Utilice el botón SRC para mostrar su código para una mejor lectura, por favor :)
Tu OrderSelect() está codificado de forma incorrecta. Compara tu código con este. Luego escribe si sigues teniendo el problema o no :)
Gracias especiales a onewithzachy,
No sabía que el ORDERSELECT migth no captura, por lo que puede tener errores desconocidos.
Mi código que era de 4016 líneas de código se convirtió en casi 4500 líneas - pero sin errores.
Gracias a todos, amigos.
Y.
Hola amigos,
Después de un largo viaje aquí, tuve un buen advamtage con mi EA, pero tengo un problema más, como sigue:
Tengo la siguiente línea de código:
CLOSE_Single_P(Pair1, "LONG",OrderT,OrderL);
como:
Pair1 es el símbolo,
"LONG" es la señal de una operación larga,
OrderT es el número de entrada de la orden,
OrderL es el tamaño del lote de la orden.
La función es la siguiente
void CLOSE_Single_P(cadena SYMB, cadena TREN, int TICKET, double LOTT)
{
double PRC;
bool Check = false;
for ( int cntt=0; cntt<20000; cntt++ )
{
if ( Check )
{
Check_Ini();
return;
}
for ( int vvv = OrdersTotal()-1; vvv >= 0; vvv-- )
{
if ( OrderSelect(vvv, SELECT_BY_POS, MODE_TRADES) )
{
Check = false;
if ( TREN == "LONG" )
PRC = MarketInfo(SYMB,MODE_BID);
else
if ( TREN == "SHORT" )
PRC = MarketInfo(SYMB,MODE_ASK);
Check = OrderClose(TICKET,LOTT,PRC,Slippage,Yellow);
if ( Check )
break;
}
}
}
return;
}
Mi PROBLEMA es: El EA a veces cierra la operación muy bien, pero a veces el EA cierra la tarde PERO sigue buscando la entrada para cerrarla, aunque ya estaba cerrada.
(Me sale el error: "Número de ticket desconocido.." .
Creo que tengo un error de lógica.
Gracias por su amable ayuda.
Y
Por favor...