Yo haría lo siguiente (teniendo en cuenta la poca información de la que disponemos):
En primer lugar le digo al EA que cuente los trades abiertos. Para ello uso esta función:
int TradesCount(int type) //devuelve el número de operaciones abiertas por tipo de orden, símbolo actual y número mágico { int result = 0; int total = OrdersTotal(); for(int i = 0; i < total; i++) { if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES) == false) continue; if(OrderMagicNumber() != MagicNumber || OrderSymbol() != Symbol() || OrderType() != type) continue; result++; } return(result); }
Con esto, además del símbolo le estamos pidiendo referencias del número mágico.
Sabrás más que de sobra que el número mágico es el identificador de cada gráfico a ojos de un EA.
De esta forma, evitaremos los problemas de que interfiera con otros gráficos.
Y para "integrar" ese código en la parte de envío de nuevas operaciones, yo lo sustituiría de esta forma:
if( (MarketInfo(Symbol(),MODE_SPREAD)<= MS) && (OrdersTotal()==0) ) AbrirOperacion();//Este es el código original
if( (MarketInfo(Symbol(),MODE_SPREAD)<= MS) && (TradesCount(OP_BUY) + TradesCount(OP_SELL) <= 0 ) AbrirOperacion();//Este es el código nuevo
Para futuras ocasiones, por favor, trata de añadir un poco más de código. Un saludo y espero que sea esto lo que buscabas
Yo haría lo siguiente (teniendo en cuenta la poca información de la que disponemos):
En primer lugar le digo al EA que cuente los trades abiertos. Para ello uso esta función:
Con esto, además del símbolo le estamos pidiendo referencias del número mágico.
Sabrás más que de sobra que el número mágico es el identificador de cada gráfico a ojos de un EA.
De esta forma, evitaremos los problemas de que interfiera con otros gráficos.
Y para "integrar" ese código en la parte de envío de nuevas operaciones, yo lo sustituiría de esta forma:
Para futuras ocasiones, por favor, trata de añadir un poco más de código. Un saludo y espero que sea esto lo que buscabas
Muchísimas gracias!
//+------------------------------------------------------------------+ //+ CONTAR OPERACIONES ABIERTAS EN CURRENT CHART + //+------------------------------------------------------------------+ int OPENOP () { int OpenOp = 0; for(int a=0; a<OrdersTotal(); a++) //busca todas las operaciones abiertas de la cuenta, si las hay. { if(!OrderSelect(a,SELECT_BY_POS,MODE_TRADES))continue; //selecciona las operaciones abiertas. if (OrderSymbol()==Symbol() && OrderMagicNumber()==magic) //verifica si pertenecen al gráfico actual. { OpenOp++; //obtiene la cantidad de operaciones abiertas del gráfico actual. } } //Cierre de "for" "a". return(OpenOp); }
Al final quedó así, no había visto tu comentario sin embargo creo que llegamos a lo mismo jeje.
Ya lo probé y funcionó como necesitaba :)
Espero que podamos ayudar a alguien más con esta solución.
Nuevamente: muchas grácias!
Muchísimas gracias!
Al final quedó así, no había visto tu comentario sin embargo creo que llegamos a lo mismo jeje.
Ya lo probé y funcionó como necesitaba :)
Espero que podamos ayudar a alguien más con esta solución.
Nuevamente: muchas grácias!
![MQL5 - Lenguaje de estrategias comerciales para el terminal de cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Usted acepta la política del sitio web y las condiciones de uso
Buen día a todos!
Tengo un problema:
Necesito hacer que mi EA abra una operación solamente cuando no hay otra operación abierta en ese mismo símbolo, y deseo usar el mismo EA en varios símbolos.
Este es el filtro que coloqué para que abra operaciones, me funciona muy bien en 1 símbolo, pero cuando quiero que abra operaciones en varios símbolos no lo hace.
La función "AbrirOperacion()" contiene la estrategia de apertura, y también limito el Spread con el que abrirá la operación.
Me pueden ayudar por favor?