¿Cómo codificar? - página 108

 

Ejecutar un script de MetaTrader desde la línea de comandos

Quiero poder ejecutar un script o programa desde la línea de comandos que ejecute una orden de compra. No hay ninguna regla. Cuando lo escribo desde la línea de comandos, debería comprar 1 posición larga de EURUSD.

¿Cómo se puede hacer esto?

Gracias,

paco

 

Indicador simple basado en flechas y EA

Hola a todos.

Recientemente estaba tratando de hacer un simple EA que trabajaría en un indicador basado en flechas. Estoy tratando de hacer el EA para mantener una orden en cualquier momento. Si la flecha apunta hacia abajo, la orden de compra anterior se cierra y se abre la orden de venta. Si la flecha apunta hacia arriba, la orden de venta anterior se cierra y se abre la orden de compra. Estoy utilizando el probador (modo de visualización) para verificar mi código. Parece que no importa cómo lo intente, el EA no cierra y abre las posiciones cuando el indicador de flecha apunta hacia arriba o hacia abajo. El back test confirma que el EA no funciona correctamente. En lugar de abrir y cerrar las órdenes en los puntos de flecha mostrados por el indicador, el EA cierra/abre la orden en algún momento diferente. No puedo entender por qué mi código no funciona.

En el comienzo de la declaración de inicio, tengo el siguiente código:

if (Time[0] == savedTime) {

return (0);

} else {

savedTime = Time[0];

}

Esto (espero) asegurará que el código en la declaración de inicio se ejecute sólo cuando se haya formado una nueva barra. Más adelante en el cuerpo de la subrutina de inicio, consulto el indicador con la función iCustom. La solicitud se ve como abajo:

iCustom (... 1)

El último argumento de uno especifica la barra formada anteriormente, por lo que no es 0. Sin embargo, después cierro la orden abierta con OrderClose y abro una nueva con OrderSend. Supongo que ambas funciones deben poder ejecutarse instantáneamente.

La conclusión es: Estoy tratando de crear un EA basado en un indicador de flecha. El indicador apunta hacia arriba o hacia abajo. Tal y como yo lo veo (y probablemente esté equivocado), lo único que tengo que hacer es cerrar la orden anterior y abrir una nueva cuando se haya formado la siguiente barra. Agradecería mucho cualquier aportación a este problema.

Gracias a todos.

 

¿Alguien puede decirme cómo codificar para poner la fecha de caducidad en el indicador?

Gracias.

 
 
newdigital:
Mira este hilo https://www.mql5.com/en/forum/174194

Gracias por ese enlace. Por fin he encontrado la página que buscaba aquí

 

¿Cómo obtener 2 indicadores en una ventana separada?

¿Puede alguien refrescar mi mente sobre cómo obtener 2 indicadores en una ventana separada para que se superpongan entre sí?

¡Gracias por su ayuda de antemano!

Dave

 

Se necesita un EA para abrir órdenes solamente

Hola a todos,

Me preguntaba si alguien podría ayudarme a crear un EA que sólo abra 4 órdenes diferentes a las 00:00AM GMT para cualquier par.

1 lote de compra

1 lote de compra

1 lote de venta

1 lote de venta

que se abran todas a las 00:00GMT

gracias por la ayuda

Ryan56

 
bdht:
Hola a todos.

Recientemente estaba tratando de hacer un simple EA que funcionara con un indicador basado en flechas. Estoy tratando de hacer el EA para mantener una orden en cualquier momento dado. Si la flecha apunta hacia abajo, la orden de compra anterior se cierra y se abre la orden de venta. Si la flecha apunta hacia arriba, la orden de venta anterior se cierra y se abre la orden de compra. Estoy utilizando el probador (modo de visualización) para verificar mi código. Parece que no importa cómo lo intente, el EA no cierra y abre las posiciones cuando el indicador de flecha apunta hacia arriba o hacia abajo. El back test confirma que el EA no funciona correctamente. En lugar de abrir y cerrar las órdenes en los puntos de flecha mostrados por el indicador, el EA cierra/abre la orden en algún momento diferente. No puedo entender por qué mi código no funciona.

En el comienzo de la declaración de inicio, tengo el siguiente código:

if (Time[0] == savedTime) {

return (0);

} else {

savedTime = Time[0];

}

Esto (espero) asegurará que el código en la declaración de inicio se ejecute sólo cuando se haya formado una nueva barra. Más adelante en el cuerpo de la subrutina de inicio, consulto el indicador con la función iCustom. La solicitud se ve como abajo:

iCustom (... 1)

El último argumento de uno especifica la barra formada anteriormente, por lo que no es 0. Sin embargo, después cierro la orden abierta con OrderClose y abro una nueva con OrderSend. Supongo que ambas funciones deben poder ejecutarse instantáneamente.

La conclusión es: Estoy tratando de crear un EA basado en un indicador de flecha. El indicador apunta hacia arriba o hacia abajo. Tal y como yo lo veo (y probablemente esté equivocado), lo único que tengo que hacer es cerrar la orden anterior y abrir una nueva cuando se haya formado la siguiente barra. Agradecería mucho cualquier aportación a este problema.

Gracias a todos.

Si miras la señal sólo una vez por barra y tu "sistema" cierra e invierte cuando la señal cambia, es importante comprobar la salida ANTES de comprobar la entrada. Si no, cuando hay una nueva señal de entrada, el EA no puede entrar en la operación porque la anterior sigue abierta. Y cuando el EA cierre la posición, entrará sólo en la siguiente barra porque viene en esta parte del código sólo una vez por barra.

Espero que tenga sentido (¡con mi inglés!).

FerruFx

 
Dave137:
¿Puede alguien refrescarme la mente sobre cómo conseguir 2 indicadores en una ventana separada para que se superpongan entre sí?

Gracias por su ayuda de antemano.

Dave

Mira esta página: https://www.mql5.com/en/forum/172923

 

Bueno, esto arreglará tu problema de la nueva barra (lo obtuve de un artículo en mql4.com):

bool funcIsNewBar()

{

bool res=false;

// the array contains open time of the current (zero) bar

// for 7 (seven) timeframes

static datetime _sTime[7];

int i=6;

int timeFrame = Period();

switch (timeFrame)

{

case 1 : i=0; break;

case 5 : i=2; break;

case 15 : i=3; break;

case 30 : i=4; break;

case 60 : i=5; break;

case 240: i=6; break;

case 1440:break;

default: timeFrame = 1440;

}

//----

if (_sTime==0 || _sTime!=iTime(Symbol(),timeFrame,0))

{

_sTime = iTime(Symbol(),timeFrame,0);

res=true;

}

//----

return(res);

}[/CODE]

Call this function like this

int start()

{

if (funcIsNewBar)

{

//run some code

}

return (0);

}

That'll get code to run ONLY when there is a new bar.

What you need to do is find out in the data window of MT4 what the values are when there is NO arrow being put on the chart by your indicator. For example, the indicator may may have 0's or may be blank.

So all you do then is call the value of the indicator at each open [CODE]varMyIndieValue=iCustom();

if (varMyIndieValue>0) //there's an arrow

{

//run some code

}
bdht:
Hola a todos.

Recientemente estaba tratando de hacer un simple EA que trabajaría en un indicador basado en flechas. Estoy tratando de hacer la EA para mantener una orden en cualquier momento. Si la flecha apunta hacia abajo, la orden de compra anterior se cierra y se abre la orden de venta. Si la flecha apunta hacia arriba, la orden de venta anterior se cierra y se abre la orden de compra. Estoy utilizando el probador (modo de visualización) para verificar mi código. Parece que no importa cómo lo intente, el EA no cierra y abre las posiciones cuando el indicador de flecha apunta hacia arriba o hacia abajo. El back test confirma que el EA no funciona correctamente. En lugar de abrir y cerrar las órdenes en los puntos de flecha mostrados por el indicador, el EA cierra/abre la orden en algún momento diferente. No puedo entender por qué mi código no funciona.

En el comienzo de la declaración de inicio, tengo el siguiente código:

if (Time[0] == savedTime) {

return (0);

} else {

savedTime = Time[0];

}

Esto (espero) asegurará que el código en la declaración de inicio se ejecute sólo cuando se haya formado una nueva barra. Más adelante en el cuerpo de la subrutina de inicio, consulto el indicador con la función iCustom. La solicitud se ve como abajo:

iCustom (... 1)

El último argumento de uno especifica la barra formada anteriormente, por lo que no es 0. Sin embargo, después cierro la orden abierta con OrderClose y abro una nueva con OrderSend. Supongo que ambas funciones deben poder ejecutarse instantáneamente.

La conclusión es: Estoy tratando de crear un EA basado en un indicador de flecha. El indicador apunta hacia arriba o hacia abajo. Tal y como yo lo veo (y probablemente esté equivocado), lo único que tengo que hacer es cerrar la orden anterior y abrir una nueva cuando se haya formado la siguiente barra. Agradecería mucho cualquier aportación a este problema.

Gracias a todos.
Razón de la queja: