A ver si esto se puede hacer?

Foro dedicado a todo lo relacionado con la versión 4 de la plataforma de Metaquotes.
Responder
elrinconin
Mensajes: 99
Registrado: 22 Ago 2006 00:13
Ubicación: Asturias

A ver si esto se puede hacer?

Mensaje por elrinconin »

Hola amigos,
Estoy haciendo mis primeras Eas y bueno, ya tengo la papelera llena de programas perdedores, pero esto me sirve para mejorar en la programacion de estrategias.
Bueno, la pregunta es la siguiente.
¿se puede detectar, por algun evento o algo similar cuando salta una orden buy limit?
¿ me vale tambien, poner una especie de alarma en ciertos niveles en los que al llegar el precio, tendria que saltar y hacer unos procesos?

La idea general, es la siguiente, al arrancar el robot, hago un grid en ciertos niveles, por ejemplo cada 50 pip. Y al llegar a estos puntos, mi intencion es generar un evento , que con el que pueda hacer mis calculos ...

No, pido que me hagan el codigo, solo con que me orienten que es lo mejor o algun ejemplo que se asemeje.
Bueno, si hay alguin con tiempo y quiere ayudarme a programarlo, le estare muy agradecido.

Un saludo y gracias por leer mis problemas.
Spirit
Mensajes: 4739
Registrado: 12 Jun 2008 19:49

Mensaje por Spirit »

Eso es muy sencillo. Un simple condicional if con la condición de que el Ask o el Bid sea igual, igual o menor, igual o mayor, menor, o también mayor, a elegir, que un valor dado.

Dentro del if haces la llamada a la rutina, alarma, evento que quieras ejecutar en ese nivel.
Avatar de Usuario
nstrader
Mensajes: 257
Registrado: 24 Mar 2007 19:33

Mensaje por nstrader »

Eso lo tengo pendiente por programar, seria algo asi como guardar en una matriz los tickets de las ordenes pendientes activas, y en cada tick comparar el tipo de orden de esos tickets para ver si han cambiado, si han cambiado se ejecuta el evento y se elimina de la matriz, tambien se deberia eliminar si la orden pendiente se ha cancelado.

Un saludo
elrinconin
Mensajes: 99
Registrado: 22 Ago 2006 00:13
Ubicación: Asturias

Mensaje por elrinconin »

Gracias por sus respuestas tan rapidas.
Intenre hacer como lo comento spirit.
Mi intencion es que a X pip, mande arrancar una martingala.
Ire mirando si el Ask, coincide con el precio marcado y si lo toca, activar la sucesion.
¿que pasaria si hay un pequeño gap? ¿tendira tendira que activar si el precio esta entre x x+10 o algo asi?

Bueno, gracias por vuestra ayuda.

Voy a intentar hacer esto en el metatrader.
Avatar de Usuario
nstrader
Mensajes: 257
Registrado: 24 Mar 2007 19:33

Mensaje por nstrader »

¿se puede detectar, por algun evento o algo similar cuando salta una orden buy limit?
La unica forma segura de saber si ha saltado una orden pendiente es comprobando su estado con OrderType(), que el precio llegue a ese precio no significa que se haya abierto la orden, se abre cuando el broker te dice que esta abierta es decir en tu caso cuando OrderType() pasa a valer OP_BUY.

Como he dicho antes, seria guardar las ordenes pendientes osea OrderType() > 1 y comprobar si alguna ha canbiado a OrderType() <=1, en ese caso se activa el evento y se elimina la orden guardada.

Eso si yo lo estoy enfocando para que me avise con una alarma cuando se abra una orden pendiente.

elcctrro
Mensajes: 329
Registrado: 26 Nov 2008 11:09
Ubicación: Zona centro España

Mensaje por elcctrro »

Yo el tema lo tengo enfocado más como indicaba Spirit.
Mi experto tiene el precio al que ha de saltar la nueva orden con un if( Bid>PrecioNuevaOrden ).
Por el momento no le aplico la martigala para no elevar el riesgo y sobre todo para lo incrementar el volumen de liquidez disponible para soportar los momentos en que el sistema queda en negativo que son la mayoría (trabajo contratendencia).
Un saludo.
elcctrro
Mensajes: 329
Registrado: 26 Nov 2008 11:09
Ubicación: Zona centro España

Mensaje por elcctrro »

Para utilizar la martingala, una vez que el precio alcance tu nivel prefijado, necesitaras como mínimo contar las las ordenes que tienes abiertas (BUY o SELL), o incluso calcular el precio medio de las ordenes abiertas.
Algo parecido a este codigo:

//========================================================================================
int total=OrdersTotal();
for(int pos=0; pos<total; pos++)
{
if(OrderSelect(pos, SELECT_BY_POS) == false) continue;
if(OrderType() == OP_BUY) {
xbuy += OrderLots()*10;
xbuy_p += OrderOpenPrice() * OrderLots()*10;
}
if(OrderType() == OP_SELL) {
xsell += OrderLots()*10;
xsell_p += (OrderOpenPrice()-spread) * OrderLots()*10;
}
}

if (xbuy != 0)
xbuy_p = xbuy_p / xbuy; // Precio Medio BUYs
else
xbuy_p = 0;

if (xsell != 0)
xsell_p = xsell_p / xsell; // Precio Medio SELLs
else
xsell_p = 0;
//========================================================================================

Un saludo
Si te ha gustado este hilo del Foro, ¡compártelo en redes!


Responder

Volver a “Metatrader 4”