Página 1 de 1
A ver si esto se puede hacer?
Publicado: 08 Jul 2009 23:17
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.
Publicado: 08 Jul 2009 23:44
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.
Publicado: 08 Jul 2009 23:50
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
Publicado: 09 Jul 2009 00:24
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.
Publicado: 09 Jul 2009 01:42
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.
Publicado: 16 Jul 2009 10:58
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.
Publicado: 16 Jul 2009 11:04
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