ayuda!!! (orderselect)

Foro para cuestiones generales sobre la plataforma MetaTrader 4.

Re: ayuda!!! (orderselect)

Notapor ELVIRUX » 30 Ene 2011, 21:45

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
ELVIRUX
 
Mensajes: 4
Registrado: 15 Oct 2010, 15:31
Karma: 0

Re: ayuda!!! (orderselect)

Notapor Pablunk » 30 Ene 2011, 22:35

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!
Pablunk
 
Mensajes: 27
Registrado: 21 Dic 2010, 00:38
Karma: 0

Re: ayuda!!! (orderselect)

Notapor elcctroo » 31 Ene 2011, 18:29

ELVIRUX escribió: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, MEDO)==true) {
_Estrategia2Compra = true;
}
return ( Estrategia2Compra );
}
//**************************************************************************************

Alguna sugerencia? gracias



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.
elcctroo
 
Mensajes: 56
Registrado: 01 Dic 2009, 17:41
Karma: 0

Re: ayuda!!! (orderselect)

Notapor elcctroo » 31 Ene 2011, 18:45

sandra_fx escribió:Hola elcctroo. me dices que ponga primero orderselect antes de orderclose, pero en el codigo que coloqué lo puse de esa manera ¿o me estas diciendo que lo ponga justo anes de cerrar con orderclose? es decir, yo lo tengo asi:
1ro) ordersend,
2do) orderselect,
3ro) orderclose

aqui el codigo:

if("condicion1")
{
ticket=OrderSend(Symbol(),OP_BUY,0.1,Ask,3,0,0,NULL,0,0,CLR_NONE);
OrderSelect(OrderTicket(),SELECT_BY_POS);
}

if ("condicion2") OrderClose(OrderTicket(),OrderLots(),Bid,3,CLR_NONE);


(ya esta orderselect antes de orderclose). Supongo entonces que me estas diciendo que lo coloque "justo antes" de orderclose, así:

if("condicion1")
{
ticket=OrderSend(Symbol(),OP_BUY,0.1,Ask,3,0,0,NULL,0,0,CLR_NONE);
}

if ("condicion2")
{
OrderSelect(OrderTicket(),SELECT_BY_POS);
OrderClose(OrderTicket(),OrderLots(),Bid,3,CLR_NONE);
}


Pero probe esa forma me sigue saliendo el mismo error (invalid ticket for orderclose function) :( .
En vista de esto, podrias, por favor, por favor, ponerme el codigo aqui para ver como es y probarlo. Porfa, eso me ayudaria mucho

Gracias elcctroo y espero no sea mucho pedir
Sandra_fx


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.
elcctroo
 
Mensajes: 56
Registrado: 01 Dic 2009, 17:41
Karma: 0

Re: ayuda!!! (orderselect)

Notapor ELVIRUX » 02 Feb 2011, 05:08

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
ELVIRUX
 
Mensajes: 4
Registrado: 15 Oct 2010, 15:31
Karma: 0

Re: ayuda!!! (orderselect)

Notapor elcctroo » 02 Feb 2011, 12:58

Pra
ELVIRUX escribió: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


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.
elcctroo
 
Mensajes: 56
Registrado: 01 Dic 2009, 17:41
Karma: 0

Re: ayuda!!! (orderselect)

Notapor ELVIRUX » 03 Feb 2011, 05:41

elcctroo podrias colocarme un EJ, x que a mi no meda de ninguna forma.

Gracias
ELVIRUX
 
Mensajes: 4
Registrado: 15 Oct 2010, 15:31
Karma: 0

Re: ayuda!!! (orderselect)

Notapor elcctroo » 03 Feb 2011, 14:30

ELVIRUX escribió:elcctroo podrias colocarme un EJ, x que a mi no meda de ninguna forma.

Gracias


// 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.
elcctroo
 
Mensajes: 56
Registrado: 01 Dic 2009, 17:41
Karma: 0

AnteriorSiguiente

Volver a MetaTrader 4

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 2 invitados

cron