В прошлых выпусках мы узнали о различных торговых функциях, с помощью которых можно открывать/закрывать позиции, выставлять/модифицировать/удалять ордера: OrderSend(), OrderModify(), OrderDelete(), OrderClose() и OrderClosyBy().
В каждом случае мы исходили из того, что советнику разрешено торговать. Но в реальности это не всегда так.
В данной статье будет рассказано о трех функциях: IsExpertEnabled(), IsTradeContextBusy() и IsTradeAllowed().
Функция IsExpertEnabled()
bool IsExpertEnabled()
Функция IsExpertEnabled() возвращает true, если экспертам разрешено совершать сделки и управлять ордерами. Дело в том, что на уровне настроек клиентского терминала можно запретить ВСЕМ экспертам торговать. Это можно сделать, например, с помощью команды главного меню: Сервис -> Настройки. В появившемся окне выбираем вкладку "Советники", в которой ставим или убираем галочку напротив "Включить советники...".
Более простой способ отключать/включать советников - кнопка .
Если же на уровне настроек терминала работа экспертов запрещена, то функция IsExpertEnabled() вернет false.
Функция IsTradeContextBusy()
В каждый момент времени только один эксперт может торговать. Если в этот момент второй эксперт попытается совершить торговую операцию, то торговая функция вернет ошибку ERR_TRADE_CONTEXT_BUSY (146).
bool IsTradeContextBusy()
Функция IsTradeContextBusy() позволит Вам заблаговременно выявить ситуацию, когда другой эксперт уже пытается торговать (она вернет в этом случае значение true), и избежать нерезультативного вызова торговой функции (которая все равно завершиться с ошибкой). Обычно в таких случаях лучше подождать немного до того момента, когда другой эксперт закончит торговать (тогда функция IsTradeContextBusy() вернет значение false) и только после этого вызывать Вашу торговую функцию.
Функция IsTradeAllowed()
Функция IsTradeAllowed() объединяет все обе предыдущие функции. Она вернет true только в том случае, если торговля экспертов разрешена и торговый поток свободен для торговли, т. е. никакой другой эксперт не совершает в данный момент торговых операций.
bool IsTradeAllowed()
В следующей статье будет рассказано о том, как нужно использовать описанные выше функции на практике.
Есть что сказать? Не стесняйтесь!
Последние статьи:
Видео по теме:
УГОЛОК АДМИНИСТРАТОРА