Функция IsTradeAllowed мне не помогла, она возвращает true, а после этого сов пытается открыться и получает Market is closed. Эти ошибки у меня были в понедельник на открытии и со вторника на среду в 00:00, для себя сделал sleep на 5 минут чтобы сделки открывались в 00:05, но для торговли на гепах например этот вариант не подойдет.
IsTradeAllowed - эта ф-ция контролит галочку в настройках терминала на разрешение экспертам торговать. И контролит поток внутри терминала, если другая сова ставит ордер то поток будет занят.
MarketInfo(NULL, MODE_TRADEALLOWED) - контролит можно ли торговать по текущей паре.
Просто в обработке этой противной ситуации может быть куча нюансов, как наилучшим образом ее обработать. Имеется ввиду более глобальный взгляд, ну и досадные ошибки в коде или в логике.

