}
//-------------------------------------------------------------- 10 --
Alert ("Скрипт закончил работу -----------------------------");
return; // Выход из start()
}
//-------------------------------------------------------------- 11 --
Блок обработки ошибок также претерпел некоторые изменения. Если при закрытии
рыночных ордеров необходимо учитывать возможность возникновения ошибок,
связанных с изменением цен (ошибки 135 и 136), то при удалении отложенных ордеров
подобные ошибки не возникают. По этой же причине нигде в программе не используется
функция RefreshRates() с целью обновления текущих цен.
Некоторую сложность вызывает обработка таких ошибок, как 4 и 137 (см. Коды ошибок).
Например, при получении ошибки 137 программа может принять к сведению
информацию о том, что "брокер занят". Но возникает естественный вопрос: когда он
освободится, чтобы пользователь мог продолжить торговлю? Ошибка 137 не содержит
такой информации. Поэтому вопрос о том, как правильно составить программу обработки
подобных ошибок, программист должен решить сам. В простом случае можно повторить
торговый приказ после некоторой паузы (в данном примере - 3 секунды). С другой
стороны, в результате серии неудачных попыток удаления (или в общем случае закрытия,
открытия или модификации) ордера сервер может вернуть ошибку 141 - слишком много
запросов. В результате этой ошибки скрипт deleteorder.mq4 прекратит работу. В целом,
подобные конфликты не являются вопросами программирования. В подобных случаях
следует связаться со службой поддержки дилингового центра и выяснить причины отказа
в исполнении торгового приказа.
Ошибка 145 может возникнуть в том случае, если отложенный ордер (в общем случае и
стоп-приказ рыночного ордера) находится слишком близко к рыночной цене. Эта ошибка
не возникает, если торговля ведётся на спокойном рынке в размеренном темпе. Если же на
рынке происходят резкие изменения цены, брокер может решить, что некоторый ордер в
ближайшее время будет открыт, и не позволит его удалить (или модифицировать). Эта
ошибка учитывается в скрипте как непреодолимая и приводит завершению программы
(нет смысла лишний раз тревожить брокера торговыми приказами). Если через некоторое
время цена изменится, можно повторить попытку удаления ордера, снова запустив скрипт
на исполнение.
В общем случае, для предотвращения ошибки 145 необходимо учитывать уровень
заморозки, установленный дилинговым центром. Уровень заморозки - это значение,
652