Библиотечная функция. Вот код.
Функция работает с отложенными ордерами. Заложен алгоритм. Находим (если есть) отложенник и сравниваем его цену входа и стоп с имеющимися данными. Далее если не совпадает, то удаляет отложенник и выставляет новый опять же с имеющимися данными. Если данные совпадают, то программа должна НЕ трогать этот отложенник. Если отложенников нет, то выставляется отложенник опять же с имеющимися данными цены входа и стопа. Программа организована так, что отложенник может быть только один или может не быть, но два и более не будут ни когда.
Проблема. Программа находит отложенник и тупо удаляет его и выставлят опять новый отложенник точно с такими же данными, как и у удаленного. Получается, что оператор continue не работает (так как я думаю )) он должен работать). В моем понимании если мы нашли отложенник и у него совпадают параметры оператор continue должен отправить на следущую этерацию цикла for, а он у меня очевидно этого не делает и программа попадает в else где удаляет тупо нужный мне отложенник и выставляет такой же. Как мне этого избежать? Конечно можно вместо continue поставить return и по идее должно сработать железно, но когда то учили меня, что это плохой способ написания кода, когда прерывается не до конца выполненный оператор for.
Заранее Вам благодарен за ответ.
// Большая просьба - для вставки кода пользоваться кнопкой SRC (Vinin) //
Поищите по форуму "Сравнение действительных чисел". Вам поможет
Спасибо за исправление и ответ.
Поищите по форуму "Сравнение действительных чисел". Вам поможет
Я посмотрел. Но я получаю свои числа из расчетов и их нормализую до пятого знака. Программа их сравнивает, больше раз одно и тоже число полученное одним и тем же способом при этом нормализовано в конце обработке. В журнале фиксируется удаление и постановка ордера с теми же параметрами. В журнале до пятого знака, но и нормализованы числа были до пятого знака. Там больше нет "хвостиков" после пятого знака и получается, что оператор if не срабатывает(?) странно как то ... Я думал, что continue не срабатывает, как я хочу. Запутался.
Я посмотрел. Но я получаю свои числа из расчетов и их нормализую до пятого знака. Программа их сравнивает, больше раз одно и тоже число полученное одним и тем же способом при этом нормализовано в конце обработке. В журнале фиксируется удаление и постановка ордера с теми же параметрами. В журнале до пятого знака, но и нормализованы числа были до пятого знака. Там больше нет "хвостиков" после пятого знака и получается, что оператор if не срабатывает(?) странно как то ... Я думал, что continue не срабатывает, как я хочу. Запутался.
Сделайте Print() в проблемных местах и проверяйте как, когда и почему выполняется.
Сделайте Print() в проблемных местах и проверяйте как, когда и почему выполняется.
Я в операторе if каждое число еще раз нормализовал теперь до 4 знака и все вроде заработало. Грубовато немного. Спасибо.
Я в операторе if каждое число еще раз нормализовал теперь до 4 знака и все вроде заработало. Грубовато немного. Спасибо.
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Библиотечная функция. Вот код.
Функция работает с отложенными ордерами. Заложен алгоритм. Находим (если есть) отложенник и сравниваем его цену входа и стоп с имеющимися данными. Далее если не совпадает, то удаляет отложенник и выставляет новый опять же с имеющимися данными. Если данные совпадают, то программа должна НЕ трогать этот отложенник. Если отложенников нет, то выставляется отложенник опять же с имеющимися данными цены входа и стопа. Программа организована так, что отложенник может быть только один или может не быть, но два и более не будут ни когда.
Проблема. Программа находит отложенник и тупо удаляет его и выставлят опять новый отложенник точно с такими же данными, как и у удаленного. Получается, что оператор continue не работает (так как я думаю )) он должен работать). В моем понимании если мы нашли отложенник и у него совпадают параметры оператор continue должен отправить на следущую этерацию цикла for, а он у меня очевидно этого не делает и программа попадает в else где удаляет тупо нужный мне отложенник и выставляет такой же. Как мне этого избежать? Конечно можно вместо continue поставить return и по идее должно сработать железно, но когда то учили меня, что это плохой способ написания кода, когда прерывается не до конца выполненный оператор for.
Заранее Вам благодарен за ответ.
// Большая просьба - для вставки кода пользоваться кнопкой SRC (Vinin) //