Copié este bloque y le cambié el nombre, ahora se ve así
int OpenTradesOnThisCandle( ) { int op =0; for(int i=OrdersTotal()-1;i>=0;i--) // escanear todas las órdenes y posiciones... { OrderSelect(i, SELECT_BY_POS, MODE_TRADES); if (OrderMagicNumber() != MagicNumber) continue; if ( OrderSymbol()==Symbol() ) { if ( OrderType() == OP_BUY ) op++; if ( OrderType() == OP_SELL ) op++; } } return(op); }
Espero haberlo hecho bien sn. Compilé y no obtuve ningún error pero sí una advertencia:
La función "OpenTradesOnThisCandle" no está referenciada y será eliminada del archivo exp 0 error(es), 1 advertencia(es)
int AbrirOperacionesEnEstaVela( ) { int op =0; for(int i=Total de Órdenes()-1;i>=0;i--) // escanea todas las órdenes y posiciones... { OrderSelect(i, SELECT_BY_POS, MODE_HISTORY); if (OrderMagicNumber() != MagicNumber) continuar; if ( OrderSymbol()==Symbol() ) { if (OrderOpenTime() > Time[0]) op++; if (OrderOpenTime() > Time[0]) op++; } } return(op); }
No he leído el hilo desde el principio, sin embargo ...
1. Utiliza el botón SRC cuando publiques el código
2. El retorno de OrderSelect() es verdadero o falso, por lo que esta es la forma correcta de escribir OrderSelect(),
int OpenTradesOnThisCandle( )
{
int op =0;
for(int i = OrdersTotal() - 1;i >= 0; i-- ) // scan all orders and positions...
{
if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY) == true // if order select is true ...
&& OrderMagicNumber() != MagicNumber // ... and magic number is our magic number ...
&& OrderSymbol() == Symbol() ) // ... and symbol is chart symbol
{
if (OrderOpenTime() > Time[0]) op++;
if (OrderOpenTime() > Time[0]) op++;
}
}
return(op);
}
No he leído el hilo desde el principio, sin embargo ...
1. Utiliza el botón SRC cuando publiques el código
2. El retorno de OrderSelect() es verdadero o falso, por lo que esta es la forma correcta de escribir OrderSelect(),
:D
Gracias por el consejo sobre la publicación del código. Tiene sentido. En cuanto al punto 2, voy a diferir a sn como él me está guiando a través de los pasos y no quiero echar a perder su proceso. Se agradece mucho.
Gracias por el consejo sobre la publicación del código. Tiene sentido. En cuanto al punto 2, voy a diferir a sn como él me está guiando a través de los pasos y no quiero echar a perder su proceso. Se agradece mucho.
lo mantendremos simple por ahora. onewithzacky tiene razón, que comprobar los códigos de retorno es un buen hábito.
if (OrderOpenTime() > Time[0]) op++; <<== esto sólo tiene que estar ahí una vez. Así que quita una.
Lo siguiente es buscar este código y duplicarlo justo debajo.
Para iniciar sesión y usar el sitio web MQL5.com es necesario permitir el uso de Сookies.
Por favor, active este ajuste en su navegador, de lo contrario, no podrá iniciar sesión.
Ha iniciado sesión. La autenticación de dos factores se ha desactivado. Vuelva a configurarla y escanee un nuevo código QR, o continúe con la autenticación de dos factores desactivada.
megamixx,
Si todavía estás por ahí, puedo sugerir algunos cambios de código que harán lo que estás buscando. Hazme saber si todavía estás interesado.
Luego recompila para asegurarte de que no haya errores. Avísame cuando tengas esto y pegaré el siguiente cambio.Lo tengo y compilado con éxito gracias sn.
Lo tengo y compilado con éxito gracias sn.
Vale, bien.
A continuación, hay un bloque de código como este
copie todo el bloque, péguelo justo después y renómbrelo como OpenTradesOnThisCandle
Luego, recompila para asegurarte de que no haya errores.
Ahora me voy a trabajar, así que no tendrás noticias mías hasta más tarde. Publica los cambios si te quedas atascado.
Copié este bloque y le cambié el nombre, ahora se ve así
int OpenTradesOnThisCandle( )
{ int op =0;
for(int i=OrdersTotal()-1;i>=0;i--) // escanear todas las órdenes y posiciones...
{
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if (OrderMagicNumber() != MagicNumber) continue;
if ( OrderSymbol()==Symbol() )
{
if ( OrderType() == OP_BUY ) op++;
if ( OrderType() == OP_SELL ) op++;
}
}
return(op);
}
Espero haberlo hecho bien sn. Compilé y no obtuve ningún error pero sí una advertencia:
La función "OpenTradesOnThisCandle" no está referenciada y será eliminada del archivo exp
0 error(es), 1 advertencia(es)
Bien. El mensaje es sólo una advertencia y desaparecerá pronto.
Ahora cambia la línea donde ves MODE_TRADES por MODE_HISTORY en la nueva subrutina que has creado.
Ahora sustituye las dos sentencias if con OrderType() por esto
Cuando tengas eso (y te saldrá el mismo aviso) compílalo para asegurarte de que no tiene errores.
Así es como se ve el bloque ahora:
int AbrirOperacionesEnEstaVela( )
{ int op =0;
for(int i=Total de Órdenes()-1;i>=0;i--) // escanea todas las órdenes y posiciones...
{
OrderSelect(i, SELECT_BY_POS, MODE_HISTORY);
if (OrderMagicNumber() != MagicNumber) continuar;
if ( OrderSymbol()==Symbol() )
{
if (OrderOpenTime() > Time[0]) op++;
if (OrderOpenTime() > Time[0]) op++;
}
}
return(op);
}
Compilado, 0 errores, 1 advertencia
Hola megamix,
No he leído el hilo desde el principio, sin embargo ...
1. Utiliza el botón SRC cuando publiques el código
2. El retorno de OrderSelect() es verdadero o falso, por lo que esta es la forma correcta de escribir OrderSelect(),
:D
Hola megamix,
No he leído el hilo desde el principio, sin embargo ...
1. Utiliza el botón SRC cuando publiques el código
2. El retorno de OrderSelect() es verdadero o falso, por lo que esta es la forma correcta de escribir OrderSelect(),
:D
Gracias por el consejo sobre la publicación del código. Tiene sentido. En cuanto al punto 2, voy a diferir a sn como él me está guiando a través de los pasos y no quiero echar a perder su proceso. Se agradece mucho.
Gracias por el consejo sobre la publicación del código. Tiene sentido. En cuanto al punto 2, voy a diferir a sn como él me está guiando a través de los pasos y no quiero echar a perder su proceso. Se agradece mucho.
lo mantendremos simple por ahora. onewithzacky tiene razón, que comprobar los códigos de retorno es un buen hábito.
if (OrderOpenTime() > Time[0]) op++; <<== esto sólo tiene que estar ahí una vez. Así que quita una.
Lo siguiente es buscar este código y duplicarlo justo debajo.
A continuación, cambiar
(TradesInThisSymbol > 0)
a
(OpenTradesOnThisCandle() > MaxTradesPerCandle)
Luego compila - el error debería desaparecer.
Lo mantendremos simple por ahora. onewithzacky tiene razón, que comprobar los códigos de retorno es un buen hábito.
if (OrderOpenTime() > Time[0]) op++; <<== esto sólo tiene que estar ahí una vez. Así que quita una.
Lo siguiente es encontrar este código y duplicarlo justo debajo.
A continuación, cambiar
(TradesInThisSymbol > 0)
por
(OpenTradesOnThisCandle() > MaxTradesPerCandle)
Luego compila - el error debería desaparecer.
Hecho.
Eliminado el duplicado if (OrderOpenTime() > Time[0]) op++;
y encontrado y cambiado
(TradesInThisSymbol > 0)
a
(OpenTradesOnThisCandle() > MaxTradesPerCandle)
Muchas gracias por su ayuda en esto.