Вопросы от начинающих MQL4 MT4 MetaTrader 4 - страница 116
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Спасибо. break вроде помогло. Посмотрим, что будет дальше.
Нет, не совсем помогло. Работает нормально, только если открываются однотипные позиции. Если же например, сначала открылась СЕЛЛ и ещё не закрылась, а в это время открывается и закрывается БАЙ то СЕЛЛ уже не видит условий для своего закрытия до того момента, как откроется и закроется (по своим условиям) другая СЕЛЛ. И если вдруг опять откроются и закроются БАЙ, то она опять пропускает свои условия закрытия. Пытался определить наличие открытых позиций после закрытия БАЯ с помощью функции И.Кима ExistPositions(), но не понимаю, куда её вставлять, и где расположить Принт, чтобы проконтролировать исполнение. Подскажите.
Нет, не совсем помогло. Работает нормально, только если открываются однотипные позиции. Если же например, сначала открылась СЕЛЛ и ещё не закрылась, а в это время открывается и закрывается БАЙ то СЕЛЛ уже не видит условий для своего закрытия до того момента, как откроется и закроется (по своим условиям) другая СЕЛЛ. И если вдруг опять откроются и закроются БАЙ, то она опять пропускает свои условия закрытия. Пытался определить наличие открытых позиций после закрытия БАЯ с помощью функции И.Кима ExistPositions(), но не понимаю, куда её вставлять, и где расположить Принт, чтобы проконтролировать исполнение. Подскажите.
Неужели никто не знает решения? Не верю.
Вошел на форум - вижу, Вы сами с собой беседуете... Где начало Вашей беседы и о чем речь - понять трудно. Для отладки программы удобнее вместо Print использовать Alert - тогда сразу на экране появляется. Эти Alert ставятся перед проверкой условия if. Еще есть способ отладки с карандашом - идете по программе, как она должна выполняться, и записываете значения переменных. Изменилась - зачеркиваете старое значение и пишете новое. Так делали раньше. Теперь в редакторе MetaEditor есть отладчик, где можно проследить за значениями переменных. Простейшие конструкции надо проверять отдельно, написав скрипт
Неужели никто не знает решения? Не верю.
попробуйте так:
попробуйте так:
Спасибо, попробовал - не закрывает ни одной позиции даже после некоторой корректировки, чтоб компилятор не ругался.
Вошел на форум - вижу, Вы сами с собой беседуете... Где начало Вашей беседы и о чем речь - понять трудно. Для отладки программы удобнее вместо Print использовать Alert - тогда сразу на экране появляется. Эти Alert ставятся перед проверкой условия if. Еще есть способ отладки с карандашом - идете по программе, как она должна выполняться, и записываете значения переменных. Изменилась - зачеркиваете старое значение и пишете новое. Так делали раньше. Теперь в редакторе MetaEditor есть отладчик, где можно проследить за значениями переменных. Простейшие конструкции надо проверять отдельно, написав скрипт
За рекомендации спасибо, только для моей ситуации они не совсем. Для понимания повторю. ниже код пользовательской функции закрытия позиций
, который работает не совсем правильно - закрытие позиций происходит по условиям закрытия первой открытой позиции. То есть, если сначала открыли БАЙ или СЕЛЛ с условием на закрытие 1, а потом открылась вторая такая же позиция, но с условием на закрытие 2, то это условие закрытия игнорируется и вторая позиция, не смотря на другой магик, закрывается тоже по условию 1.
Применил break после закрытия ордера, но получилось решение наполовину: только если открываются однотипные позиции. Если же например, сначала открылась СЕЛЛ и ещё не закрылась, а в это время открывается и закрывается БАЙ то СЕЛЛ уже не видит условий для своего закрытия до того момента, как откроется и закроется (по своим условиям) другая СЕЛЛ. И если вдруг опять откроются и закроются БАЙ, то она опять пропускает свои условия закрытия. И как быть?
а откуда берет данные iCustom?
из буферов пользовательского индикатора, потренируйтесь, к примеру на МА
Применил break после закрытия ордера, но получилось решение наполовину: только если открываются однотипные позиции. Если же например, сначала открылась СЕЛЛ и ещё не закрылась, а в это время открывается и закрывается БАЙ то СЕЛЛ уже не видит условий для своего закрытия до того момента, как откроется и закроется (по своим условиям) другая СЕЛЛ. И если вдруг опять откроются и закроются БАЙ, то она опять пропускает свои условия закрытия. И как быть?
попробуйте заменить break на continue
странно, что мой пример кода ничего не закрывает, возможно дело в нормализации цены
попробуйте заменить break на continue
Заменил. Ругается ошибкой 138 (реквоты). Потом вернул break, и опять 138. Странно, может я раньше не замечал.
из буферов пользовательского индикатора, потренируйтесь, к примеру на МА