if(IsTradeAllowed())
derek777:
Подскажите, кто каким методом решал такой вопрос.
У брокера по выходным иногда проскакивают котировки, также бывают котировки в ночь на пятницу, когда уже рынок закрыт. В этом случае эксперт отправит OrderSend и получит ошибку. Чтобы избежать появления этой ошибки и ее обработки всякий раз, планирую запретить торговлю с 00:00 субботы до 00:00 понедельника, что-то типа:
Чаще всего котировки поступают только в понедельник. Так что на реале это никак не отразится, хотя для анализа значение есть.
Актуально для работы советника в тестере и при оптимизации. Необходимо учитывать фактическое время работы брокера.

Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Подскажите, кто каким методом решал такой вопрос.
У брокера по выходным иногда проскакивают котировки, также бывают котировки в ночь на пятницу, когда уже рынок закрыт. В этом случае эксперт отправит OrderSend и получит ошибку. Чтобы избежать появления этой ошибки и ее обработки всякий раз, планирую запретить торговлю с 00:00 субботы до 00:00 понедельника, что-то типа:
MqlDateTime pr_CurrentTime; //переменная для получения текущего времени
TimeGMT(pr_CurrentTime); //по GMT
if(pr_CurrentTime.day_of_week!=0 && pr_CurrentTime.day_of_week!=6) //если не суббота и не воскресенье
{
//здесь код работы с ордерами
}
Есть ли другой вариант, например запрос разрешения торговли на каждом тике через MarketInfo или другую функцию? А то у разных брокеров разные часовые пояса и т.п.
Нашел 6 вариантов:
AccountInfoInteger(ACCOUNT_TRADE_ALLOWED),
AccountInfoInteger(ACCOUNT_TRADE_EXPERT),
MQLInfoInteger(MQL_TRADE_ALLOWED),
TerminalInfoInteger(TERMINAL_TRADE_ALLOWED),
IsTradeAllowed(),
MarketInfo(_Symbol,MODE_TRADEALLOWED),
Какой из них наиболее подходящий?