Este artículo expone el problema que plantea el uso de varios asesores expertos que trabajan de forma simultánea en un mismo Terminal Cliente MT 4. Se dirige a todos aquellos que cuentan con experiencia básica en el manejo del terminal y tienen conocimientos básicos de programación en MQL4.
1. Qué es el "Trade Context" del Terminal Cliente MetaTrader 4
Sacado de la referencia de MetaEditor:
Para operar con expertos y scripts solo se
proporciona un hilo que se lanza en el contexto del programa (el
contexto de trading automático de los expertos y scripts). Por esta
razón, si una operación de trading de un experto ocupa el contexto,
entonces hay otro experto o script que no puede hacer llamadas a las
funciones de trading debido al error 146 (ERR_TRADE_CONTEXT_BUSY).
O mejor dicho, solo un experto (script) puede operar. El Error 146
detendrá a cualquier experto que intente operar en ese momento. En este
artículo encontrará soluciones a este problema.
2. Función IsTradeAllowed()
La forma más sencilla de averiguar si el contexto de trading está ocupado es por medio de la función IsTradeAllowed().
Sacado de la referencia de MetaEditor:
"bool IsTradeAllowed()
Devuelve true si el experto puede operar y el hilo de trading no está ocupado, en caso contrario devuelve false.
Esto significa que se puede operar solo si la función IsTradeAllowed() devuelve TRUE.
La comprobación se tiene que hacer justo antes de la operación de trading.
Artículo publicado Cómo manejar el Error 146, "Trade context busy":
Este artículo expone el problema que plantea el uso de varios asesores expertos que trabajan de forma simultánea en un mismo Terminal Cliente MT 4. Se dirige a todos aquellos que cuentan con experiencia básica en el manejo del terminal y tienen conocimientos básicos de programación en MQL4.
1. Qué es el "Trade Context" del Terminal Cliente MetaTrader 4
Sacado de la referencia de MetaEditor:
O mejor dicho, solo un experto (script) puede operar. El Error 146 detendrá a cualquier experto que intente operar en ese momento. En este artículo encontrará soluciones a este problema.
2. Función IsTradeAllowed()
La forma más sencilla de averiguar si el contexto de trading está ocupado es por medio de la función IsTradeAllowed().
Sacado de la referencia de MetaEditor:
"bool IsTradeAllowed()
Devuelve true si el experto puede operar y el hilo de trading no está ocupado, en caso contrario devuelve false.
Esto significa que se puede operar solo si la función IsTradeAllowed() devuelve TRUE.
La comprobación se tiene que hacer justo antes de la operación de trading.
Autor: Andrey Khatimlianskii