Publi |
Publi |
Hola gracias por contestar. Sí, si es una operación de compra o de venta.
Quiero decir que en cada par puede haber una de compra y otra de venta a la vez, pero solo una de cada.
Un saludo.Foro de Forex Trading United
Compi, qué quieres decir con que si la operación es de Ask o de Bid???, que si es una operación de compra o de venta???.
El EA que quieres hacer solo tiene una operación abierta en cada par de compra y una de venta en cada momento o puede tener más??
Saludos y un abrazo.Foro de Forex Trading United
Buenas tardes a tod@s,
Estoy programando un asesor experto en mql4, y estoy un poco estancado intentando que el programa compruebe si hay alguna operación abierta. Sabe diferenciar cuando esta abierta una operación con el número mágico OrderMagicNumber()==Magico , pero no se como hacer para que sepa que esa operación del número mágico sea de ask o bid. De la forma que lo tengo puesto con el OrderType()==0 lo hace bien pero claro, para cualquier operación abierta la haya abierto manualmente o mediante el asesor. El problema esta ahí.
Mi intención es poner este asesor en dos pares distintos, obviamente cada asesor tendrá un número mágico diferente, y que en cada par, solo pueda haber una de ask y otra de bid a la vez abiertas, si se da el caso.
Ontick()
{
for(i=0;i<=OrdersTotal()-1;i++)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderMagicNumber()==Magico && OrderType()==0)
{
OrdenAbiertaC=true;
}
if(OrderMagicNumber()==Magico && OrderType()==1)
{
OrdenAbiertaV=true;
}
}
}
No se si esta es la mejor forma de recorrer todas las operaciones que están abiertas, ya que con el OrdersTotal() contabilizará todas las operaciones sean de ese par de divisas o no.
Estoy abierto a ofertas para hacerlo de otra forma. Matizo que soy bastante novato
Un saludo y gracias.Foro de Forex Trading United
Ok compi, comprendido. Tienes que seleccionar las ordenes, y luego meterle filtros para que solo te cuente las que sean del par donde esta funcionando el EA y del Magic que tenga el EA y una vez que encuentra de ese par y ese Magic, ya mirar que tipo de orden es, si es OP_BUY o es OP_SELL (esto si el EA solo abre ordenes a mercado). Quedaría así, por ejemplo:
Código:bool buy = false, sell = false; for (int i = OrdersTotal() - 1; i >= 0; i--) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES) ) { if (OrderSymbol() == _Symbol && OrderMagicNumber() == Magico) { if(OrderType() == OP_BUY) buy = true; if(OrderType() == OP_SELL) sell = true; } } } if(!buy) { // aquí lo que quieras hacer si no hay compra, (OrderSend o lo que sea) } if(!sell) { // aquí lo que quieras hacer si no hay venta }
Saludos y un abrazo.Foro de Forex Trading United
Gracias por contestar, si, es justo eso lo que necesito. Me imagine que preguntando que par era podría solucionarlo, pero tenia la duda por el tipo de orden abierta, ya que solo hacia referencia en esa linea del código al tipo de orden, por lo que creía que me haría lo mismo y me recorrería todas las abiertas fueran o no de ese par (es lo que me pasaba antes). Entiendo que al poner if(OrderType() == OP_BUY) buy = true; dentro del if en el que se pregunta el tipo de par, ya discrimina los que no son de ese par y de ese numero mágico.Ok compi, comprendido. Tienes que seleccionar las ordenes, y luego meterle filtros para que solo te cuente las que sean del par donde esta funcionando el EA y del Magic que tenga el EA y una vez que encuentra de ese par y ese Magic, ya mirar que tipo de orden es, si es OP_BUY o es OP_SELL (esto si el EA solo abre ordenes a mercado). Quedaría así, por ejemplo:
Código:bool buy = false, sell = false; for (int i = OrdersTotal() - 1; i >= 0; i--) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES) ) { if (OrderSymbol() == _Symbol && OrderMagicNumber() == Magico) { if(OrderType() == OP_BUY) buy = true; if(OrderType() == OP_SELL) sell = true; } } } if(!buy) { // aquí lo que quieras hacer si no hay compra, (OrderSend o lo que sea) } if(!sell) { // aquí lo que quieras hacer si no hay venta }
Saludos y un abrazo.
Muchas gracias de nuevo, hoy empece mis vacaciones de verano, y voy a estar 15 días fuera así que lo probare en cuanto vuelva.
Un saludo a todos y buen verano!!Foro de Forex Trading United
Aviso Legal Ley Orgánica 15/1999, de 13 de diciembre, de Protección de Datos de Carácter Personal |