Discusión sobre el artículo "Cómo manejar el Error 146, "Trade context busy""

 

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:

    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.

Autor: Andrey Khatimlianskii