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