Обсуждение статьи "Пошаговое руководство по написанию советников в MQL5 для начинающих" - страница 30
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Tester - "Unsupported filling mode"
Tried on 3 different brokers. Whats the problem?
Попробуйте заменить SYMBOL_FILLING_FOK на SYMBOL_FILLING_IOC.
С уважением, Владимир.
Привет всем (особенно уважаемому автору)
Я кодил по этой статье. Мне очень понравилось и я многому научился.
Спасибо, что написали такую информативную статью.
Однако у меня возникла проблема. Мой советник не выставляет ордера. Я скачал код автора, но он тоже не выставляет ордера.
Поскольку статье уже 13 лет, я предполагаю, что код уже устарел. Может ли кто-нибудь помочь мне?
Мой код находится в файле ниже. Заранее спасибо всем.
Перейдите на страницу с непереведенным английским языком, которая является правильной для скачивания.
Скачать с этой страницы: Пошаговое руководство по написанию эксперта на MQL5 для начинающих - MQL5 Статьи
https://www.mql5.com/en/articles/100
Уважаемые все;
Из этой статьи в нижней части, он имеет полный код mlq5 для загрузки.
Я скачал, чтобы проверить функцию и обнаружил, что программа имеет неправильный алгоритм.
Настройки: EURUSD, M1, 100USD начинаются с 2025/01/01 по 2025/01/31.
Первый ордер - ордер на продажу, затем много ордеров на покупку.
Концепция заключается в том, что должен быть только один ордер, но это происходит со строки 165.
Флаг для проверки того, есть ордер или нет, находится в 2 переменных (Buy_opned, Sell_opened).
Если сейчас уже есть ордер на продажу, то в строке 216 (Ordersend) будет создан новый ордер на покупку, даже если сейчас есть ордер на продажу.
Дождаться следующей свечи флаг Buy_open в операторе строки 172 не может быть установлен на on снова.Почему? Потому что первый ордер - sell, второй - buy.
И да, на следующей свече снова возникнет ордер на покупку в строке 216 (Ordersend) и так будет продолжаться, много ордеров на покупку возникнет до тех пор, пока не закончатся деньги.
Смотрите график здесь.
Смотрите список ордеров.
Спасибо.
Niwath Jeamphue.
Дорогие все;
Из этой статьи в нижней части, он имеет полный код mlq5 для загрузки.
Я скачал, чтобы проверить функцию и обнаружил, что программа имеет неправильный алгоритм.
Настройки: EURUSD, M1, 100USD начинаются с 2025/01/01 по 2025/01/31.
Первый ордер - ордер на продажу, затем много ордеров на покупку.
Концепция заключается в том, что должен быть только один ордер, но это происходит из строки 165
Флаг для проверки наличия или отсутствия ордеров находится отдельно в 2 переменных флага (Buy_opned,Sell_opened).
Если сейчас уже есть ордер на продажу, то в строке 216 (Ordersend) будет создан новый ордер на покупку, даже если сейчас есть ордер на продажу.
Дождаться следующей свечи флаг Buy_open в операторе строки 172 не может быть установлен на on снова.Почему? Потому что первый ордер - sell, второй - buy.
И да, на следующей свече снова появится ордер на покупку в строке 216 (Ordersend) и так будет продолжаться, много ордеров на покупку появятся, пока не закончатся деньги.
Смотрите график здесь.
См. список заказов.
Спасибо.
Ниват Жампхуэ.
Вам не следует использовать PositionSelect(_Symbol), если вы не используете неттинговый счет.
На хеджирующем счете вам нужно правильно выбрать позицию с помощью PositionGetTicket() или PositionSelectByTicket(). Проверьте документацию.
Не следует использовать PositionSelect(_Symbol), если вы не используете неттинговый счет.
На хеджирующем счете необходимо правильно выбрать позицию с помощью PositionGetTicket() или PositionSelectByTicket(). Проверьте документацию.
Спасибо за ваш комментарий. Но я просто хочу сказать всем, что исходный код взят из финальной версии этой статьи.
https://www.mql5.com/ru/articles/download/100/my_first_ea.mq5
Пожалуйста, попробуйте сами, вы поймете мою точку зрения.
Спасибо.
Спасибо за ваш комментарий. Но я хочу сказать, что исходный код взят из окончательного варианта этой статьи.
https://www.mql5.com/ru/articles/download/100/my_first_ea.mq5
Пожалуйста, попробуйте сами, вы поймете мою мысль.
Спасибо.
Эта статья написана в 2010 году, в то время ВСЕ счета были неттинговыми на МТ5, в том числе и на Форекс.
Хеджирующие счета были введены в 2016 году: https: //www.mql5.com/en/articles/2299
Niwath Jeamphue #:
Пожалуйста, попробуйте сами, вы поймете мою точку зрения.
Спасибо.
Здравствуйте. Ваша точка зрения понятна. В прикреплённом файле изменил исходный код советника так, чтобы открывалась только одна позиция, не зависимо от того, какой будете использовать счёт - неттинг или хэдж.
С уважением, Владимир.
Здравствуйте. Я понимаю вашу точку зрения. В приложенном файле я изменил исходный код советника таким образом, чтобы открывалась только одна позиция, независимо от того, какой счет вы используете - неттинг или хедж.
С уважением, Владимир.
Хеджевый счет, MrBrooklin. Спасибо. Но я предпочитаю получать только по ордеру, а не так много ордеров.
Я изменил алгоритм с первоначального
Снять флаг открытия покупок и продаж
If (PositionSelect(_Symbol)==true)
Если обнаружено, что это позиция на покупку, то устанавливаем флаг Buy_opened
Иначе Если найдена позиция на продажу, то установить флаг Sell_opened
Зона1 : Пытаемся открыть ордер на покупку при условии и !флаге Buy_opened
Зона2 : Пытаемся открыть ордер на продажу по условию и !флаг Sell_opened
В новом алгоритме все работает нормально.
If (PositionsTotal() > 0) return
Снимаем флаг открытия позиций на покупку и продажу
Если обнаружено, что это позиция на покупку, то устанавливаем флаг Buy_opened
Иначе Если найдена позиция на продажу, то установить флаг Sell_opened
Зона1 : Пытаемся открыть ордер на покупку при условии и !флаге Buy_opened
Зона2 : Попытаться открыть ордер на продажу по условию и !флаг Sell_opened