Функция обработки ошибок. Нужна помощь!
Алексей, вы слишком замарачиваетесь по поводу ошибок. "Рынок закрыт" - это значит тиков нет. Нет тиков, нет функции OnTick() - сов не работает просто. Неправильные стопы, новые цены и т.д. это все неверные параметры отправки ордера (либо логические, где вы чего-то не учли, либо параметры недопустимы, типа как открывать BUY по цене BID). Выявляются всего раз. Если вы напишите шаблон для функции OpenOrder(...) работоспособный, больше проблем не будет никогда.
Все прогеры делают по разному. Кто делает кол-во попыток на открытие ордера, кто-то всего разово запускает эту функцию, т.к. тики происходят часто и на каждом тике будет проверяться условия и если на предыдущем тике у вас ордер не открылся из-за например проскальзывания (малое значение), то на этом может запросто открыться, даже ошибки не будет. Для некоторых случае необходимо чтобы ордер открылся во что бы то не стало. Можно сделать по-тупому, через функцию while(условие) которая будет бесконечно пулять ордер, пока тот не откроется.. Можно сделать умно. Либо заранее разместить отложку, либо учесть "не открытие" в коде и соотв. действия из-за этого.
А то что вы с этой обработкой ошибок танцуете, это не оч. хороший путь. Лет 5 или 6 назад я, будучи новичком в mql4 спорил с очень хороший прогером на одном форуме о целесообразности функции обработки ошибок, и он мне доказывал о ее значимости и важности. Но на деле оказалось, что это лишние миллисекунды, отнятые на каждом тике у процессора
Единственно что хочу добавить, что торговые функции должны быть грамотные, без спама на торговый сервер. Тестер вам поможет проверить ваши функции. Проверьте на тестере в рабочий день. Затем проверьте на тестере в выходные. Потом погоняйте на демке. Попробуйте пипсовку. Трейлинг-стоп. Работу с отложками. Разные типы счетов с инстант и маркет исполнением. И все станет понятным. Просто так "начитавшись книжек" (я утрирую) у вас мало что получится. Практика подскажет. Удачи. Если что, обращайтесь с конкретными вопросами, помогу)