
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Абсолютно ничего сложного. И историческое значение этой функции я менять не прошу.
Пусть она возвращает значение флага, как и в третьей версии, и эта функциональность вполне согласуется с ее названием.
Мне же надо знать в реальном времени, свободен или занят торговый поток. Не разрешена ли торговля, а могу ли я торговать, когда она разрешена. Я же привел пример, когда IsTradeAllowed работает некорректно. Что в этом-то сложного?
На самом деле, нужно как-то различать TradeAllowed, то есть разрешено ли торговать вообще, и TradeContextBusy, то есть открыт или занят торговый канал в текущий момент времени в реалтайм.
Почему МЫ должны это делать. Пусть терминал сам выстраивает ордера в очередь. Но это так, к слову.
Я первый :))) по совету Славы (и по его коду) ввел семафоры. Они помогают СЛАБО. По крайней мере, от кластера ошибок, любовно окрещенных трейдерами "ошибка номер 6". Вот окончательный код.
Помогает сочетание (см. код выше) таймаута и семафора. Ошибок становится меньше, просто за счет увеличения числа попыток (см. код ниже :) и пауз между ними.
Как видно, функция будет пытаться продать 5 раз, и только если все 5 попыток провалятся, начнет выдавать алерты.
В deinit эксперта делаем проверку UninitializeReason( ), и если она говорит, что терминал закрывается, обнуляем всё что можно =)))
Я в свое время предлагал скрип startup, исполняемый МТ при перезапуске.