Re: ayuda!!! (orderselect)Quiero aprovechar el HILO de esta conversacion, y aprovechar una duda que me esta matando.
Como saber si una orden que he capturado atraves de mi tiquet, ya ha sido cerrada?. he intentado con el siguiente codigo pero no me hace nada //************************************************************************************** bool OrdenesCerradas ( int n_Ticket ){ bool _Estrategia2Compra = false; if ( OrderSelect ( n_Ticket , SELECT_BY_POS, MODE_HISTORY )==true) { _Estrategia2Compra = true; } return ( Estrategia2Compra ); } //************************************************************************************** Alguna sugerencia? gracias
Re: ayuda!!! (orderselect)Hola ELVIRUX, creo que el fallo en tu codigo esta en que le pides que busque la órden número n_Ticket, como posición. Seguramente sea un numero al estilo 12740, y por eso, o no la encuentra, o si la encuentra imagino que no es la que estás buscando, por que está en la posición 12740.
Creo que sería algo más bien así. bool _Estrategia2Compra = false; int n_Ticket; for (i=0;_Estrategia2Compra!=true;i++) {OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);Ticketord=OrderTicket(); if (Ticketord==n_Ticket){_Estrategia2Compra=true;} } Lo que haría esto es buscar el numero de ticket entre las ordenes cerradas y devolverte la respuesta a Estrategia2Compra. Otra opción sería con tu código en vez de SELECT_BY_POS, escribir SELECT_BY_TICKET, aunque a mi no me ha funcionado muy bien. La verdad, no suelo utilizar el Ticket de las operaciones mas que para cerrarlas, pues me parece que inevitablemente hay que pasar por SELECT_BY_POS, o me complica la existencia. Espero que te sirva, pruébalo y dime cosas. Saludos!
Re: ayuda!!! (orderselect)
Al buscar las ordenes en MODE_HISTORY estas buscando las ordenes ya cerradas, si no la encuentra es porque esta abierta. Para confirmarlo buscala en MODE_TRADES. Un saludo.
Re: ayuda!!! (orderselect)
Aver la idea es que cuando se da la condicion 1 se abre una orden y con posterioridad cuando se da la condicion 2 se ha de cerrar esa orden. if("condicion1") { ticket=OrderSend(Symbol(),OP_BUY,0.1,Ask,3,0,0,NULL,0,0,CLR_NONE); } if ("condicion2") { RefreshRates(); OrderSelect(i, SELECT_BY_POS, MODE_TRADES);// La i corresponde al número de la orden a seleccionar 0,1,2,... hasta OrderrsTotal() result = OrderClose(OrderTicket(),OrderLots(),Bid,3,CLR_NONE); } Un saludo.
Re: ayuda!!! (orderselect)Muchas gracias por tu pronta respuesta.
Pero mira, lo que estoy buscando es que cuando mi EA, detecte una señal con base en una estrategia, habra una sola posicion para esta estrategia de lo contrario esperar que la orden de dicha estrategia se cierre para abrir otra. Gracias
Re: ayuda!!! (orderselect)Pra
Para localizar las ordenes de una estrategia debes asociar a las ordenes un número identificativo de la estrategia, esto lo puedes hacer mediante el NumberMagic() al lanzar las ordenes, y con posterioridad al seleccionar las ordenes filtrar las que tienen este Número descartando las que tienen otros diferentes. Un saludo.
Re: ayuda!!! (orderselect)elcctroo podrias colocarme un EJ, x que a mi no meda de ninguna forma.
Gracias
Re: ayuda!!! (orderselect)
// definimos el número de la estrategia. Nmagic=12345;// Ver OrderSend, el parametro magic // Por ejemplo para cerrar las ordenes 1º las seleccionamos del libro de ordenes vivas OrderSelect(0,SELECT_BY_POS,MODE_TRADES) // A continuación seleccionamos las de un número determinado de estrategia: if( OrderMagicNumber()==Nmagic ) { // Comprobamos el tipo de la orden seleccionada if( OrderType()==OP_BUY ) OrderClose(OrderTicket(),OrderLots(),Bid,NULL,Violet); if( OrderType()==OP_SELL ) OrderClose(OrderTicket(),OrderLots(),Ask,NULL,Violet); } Un saludo.
18 mensajes
• Página 2 de 3 • 1, 2, 3
|
|
Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados