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.
A ver si esto se puede hacer?
-
- Mensajes: 99
- Registrado: 22 Ago 2006 00:13
- Ubicación: Asturias
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
Un saludo
-
- Mensajes: 99
- Registrado: 22 Ago 2006 00:13
- Ubicación: Asturias
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.
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.
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.¿se puede detectar, por algun evento o algo similar cuando salta una orden buy limit?
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.
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.
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.
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
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!