cómo mql4 hace referencia a una orden según su tipo

Foro para cuestiones generales sobre la plataforma MetaTrader 4.

cómo mql4 hace referencia a una orden según su tipo

Notapor trader201 » 14 Ene 2011, 23:49

Saludos.

¿Alguien sabe cómo hago referencia a un tipo de orden en ml4?

Intenté colocando en un EA que me indicara el tipo de orden, lo hice con el siguiente código:

Alert("OT=", OrdersTotal());
Alert ("type=",OrderType());

if (OrderType()==OP_BUY )
{
Alert ("OB=", OP_BUY);
}
if (OrderType()==OP_SELL)
{
Alert ("OS=", OP_SELL);
}
if (OrderType()==OP_BUYSTOP)
{
Alert ("BS=", OP_BUYSTOP);
}
if (OrderType()==OP_BUYSTOP)
{
Alert ("SS=", OP_SELLSTOP);
}

La función alert trabajó bien en orderstotal. Sea una orden buy o sell, pendiente o ya ejecutada, la toma en cuenta.

El problema surge en las otras. Las que siguen estando en "0", haga lo que haga, menos la de ordertype, que sin embargo hace algo que no entendí: coloqué una orden pendente buystop, y me dice: ordertype=4. La cerré y abrí una sellstop, y cambio a 5. luego la cerré. el problema es que cuando no tengo ninguna abierta, sigue diciendo 5.

Mi interés es poder identificar cuando hay una orden pendiente activada, y poderlo hacer según sea de compra o de venta. En principio pensé:

if (OrderType()==OP_BUYSTOP) // para identificar una orden pendiente buy stop.
if (OrderType()==OP_BUYSTOP) // para identificar una orden pendiente sell stop.

Pero como los resultados no fueron claros (me decia ordertype()==5, así no estubieses abierta.


Agradezco de antemano su ayuda.
Éxitos
trader201
trader201
 
Mensajes: 281
Registrado: 13 Feb 2010, 21:05
Karma: 0

Re: cómo mql4 hace referencia a una orden según su tipo

Notapor Pablunk » 29 Ene 2011, 05:08

Hola majo, el problema es que OrderType() funciona sobre OrderSelect
Lo que quiere decir que debes elegir primero la orden sobre la que vas a "preguntarle" que tipo de orden es, por eso el programa se vuelve loco, y no sabe de que orden estas hablando, y te da valores erróneos.

Por ejemplo:

OrderSelect(0,SELECT_BY_POS,MODE_TRADES)string tipodeorden=OrderType();

Este algoritmo selecciona la orden numero 0 en tu bandeja y extrae de ella que tipo de orden es, archivándola en la variable tipodeorden.

Si necesitamos que busque en todas nuestras operaciones tenemos que recurrir a un proceso cíclico, lo que incluiría un for.

Sería algo como:

string orden [100];

for (a=0;OrderSelect(a,SELECT_BY_POS,MODE_TRADES!=false;a++)
{ orden [a]=OrderType();}


Este algoritmo, buscaría cuantas ordenes hay disponibles, para después guardar en una matriz (array) el tipo de orden que son. Estando entonces disponibles para buscarlas cuando haga falta.

dime si necestias aclaración,saludos.
Pablunk
 
Mensajes: 27
Registrado: 21 Dic 2010, 00:38
Karma: 0


Volver a MetaTrader 4

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado