Consulta sobre mql4

Foro para cuestiones generales sobre la plataforma MetaTrader 4.

Consulta sobre mql4

Notapor Eduardopo » 22 Sep 2012, 08:19

Agradeceré mucho si alguien me puede ayudar en lo siguiente:

Necesito saber qué funcion de mql4 me indica si ya se efectuó el take profit de una operación.
Lo requiero para poder cancelar una operación pendiente una vez que se ha tomado el TP de la abierta.

Gracias de antemano.
Eduardopo
 
Mensajes: 41
Registrado: 16 May 2010, 18:58
Karma: 0

Re: Consulta sobre mql4

Notapor elolima » 22 Sep 2012, 10:22

Hola
Si no esta abierta, es por que se cerro. ;)
Sl2
elolima
 
Mensajes: 47
Registrado: 13 May 2012, 10:10
Karma: 0

Re: Consulta sobre mql4

Notapor Eduardopo » 22 Sep 2012, 18:34

ok: lo que quiero decir es, si tengo una operación que acaba de efectuar el take profit, es decir se cerró obviamente, pero cómo hago para que el EA lo sepa y cierre otra operación que todavía esta pendiente de ejecución.

Gracias nuevamente
Eduardopo
 
Mensajes: 41
Registrado: 16 May 2010, 18:58
Karma: 0

Re: Consulta sobre mql4

Notapor elolima » 22 Sep 2012, 18:55

Si la operación la has abierto con un EA, por el MagicNumber, la puedes identificar.
Si la operación la has abierto manualmente ... tomate nota de su numero de Ticket.
Si no busca alguna característica, para identificarla. Lote, Fecha:Hora, Comentario

int iTotalOrdenes = OrdersTotal();
for(int i = 0; i < iTotalOrdenes; i++)
{
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
// MagicNumber
if(OrderSymbol()==Symbol() && OrderMagicNumber() == MAGIC_NUMBER)
// Número de Ticket
if(OrderSymbol()==Symbol() && OrderTicket() == NUMERO_TICKET)
{
...
}
}
elolima
 
Mensajes: 47
Registrado: 13 May 2012, 10:10
Karma: 0

Re: Consulta sobre mql4

Notapor Eduardopo » 22 Sep 2012, 19:40

Gracias elolima, identifcar la operación lo tengo claro.
Lo quiero saber es si existe alguna función que indique si se ha efectuado el take profit (ya que puede también haber saltado el stop), no se si me dejo entender.

Gracias por tu atención.
Eduardopo
 
Mensajes: 41
Registrado: 16 May 2010, 18:58
Karma: 0

Re: Consulta sobre mql4

Notapor elolima » 23 Sep 2012, 08:56

Hola
No conozco una función directa en mql4 ... creo que en mql5 si la hay. Trabajo con eventos.
Para obtener información de las ordenes pendientes de ejecución o ejecutadas. Siempre has de "Seleccionarla", bien por magignumber, numeroticket, etc ... Luego, tienes que tenerla identificada.
Si está en ordenes pendientes de ejecución, es obvio, no se ha ejecutado. Si se encuentra en el histórico de ordenes ejecutadas, es obvio ... Un disparador o evento de ejecución de ordenes, no conozco.
Sl2
elolima
 
Mensajes: 47
Registrado: 13 May 2012, 10:10
Karma: 0

Re: Consulta sobre mql4

Notapor yokinfx » 15 Oct 2012, 16:51

Gracias elolima, identifcar la operación lo tengo claro.
Lo quiero saber es si existe alguna función que indique si se ha efectuado el take profit (ya que puede también haber saltado el stop), no se si me dejo entender.


Antes que nada, es importante tener claros los conceptos. Cuando estas desarrollando en mql4, no es lo mismo preguntarle al ea cual es el tp o el sl de una determinada orden abierta o pendiente de abrir, a hacer esa misma consulta sobre una orden ya cerrada.
Si la orden ya ha sido cerrada, debemos irnos a buscar al historial de ordenes cerradas. Encontrar la orden que buscabamos, y despues preguntar a que precio se cerro la orden, si fue al precio de sl o de tp. El codigo para hacerlo seria muy similar al que elolina te pone, solo que tenemos que recorrer el historico:
OrdersHistoryTotal() en vez de OrdersTotal, MODE_HISTORY en vez de MODE_TRADES, y las modificaciones que ya te he puesto.
En la pagina de mql4.com encontraras muchos ejemplos de lo que necesitas.
Avatar de Usuario
yokinfx
 
Mensajes: 11
Registrado: 02 Oct 2012, 23:19
Karma: 0

Re: Consulta sobre mql4

Notapor yokinfx » 15 Oct 2012, 16:56

Por cierto, ojo tambien con esto:
for(int i = 0; i < iTotalOrdenes; i++)
{


En ese bucle estamos recorriendo todas las ordenes, pero en orden creciente, desde la orden mas antigua a la mas reciente. Siempre recomiendo (y recomiendan tambien en mql4.com) recorrer el array desde la orden mas nueva hasta la mas antigua:

for (int i=OrdersTotal()-1; i>=0; i--){
//etc etc

En ciertas situaciones, el 1er codigo puede generar errores (los he sufrido).
Avatar de Usuario
yokinfx
 
Mensajes: 11
Registrado: 02 Oct 2012, 23:19
Karma: 0

Siguiente

Volver a MetaTrader 4

¿Quién está conectado?

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

cron