Советник для каждой валютной пары - какой код открыть только один раз для каждой валютной пары? - страница 3
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Я изменил механизм закрытия с:
на
и теперь все работает, как ожидалось. Хотя я не понимаю, почему так происходит. Потому что я действительно не понимаю дополнительные строки во втором коде. Но спасибо вам, ребята!
Я меняю механизм закрытия с:
на
и теперь все работает, как ожидалось. Спасибо вам, ребята!
Я изменил механизм закрытия с:
на
и теперь все работает, как ожидалось. Хотя я не понимаю, почему так происходит. Потому что я действительно не понимаю дополнительные строки во втором коде. Но спасибо вам, ребята!
Ваш второй код правильный, но немного забавный. Откройте MetaEditor, окно навигатора (Ctrl + D), вкладку словарь и выберите MQL4 Reference > Standard constants > Trade operations.
Возможно, это не всегда будет работать ... при закрытии открытых ордеров или удалении отложенных ордеров в цикле вы ДОЛЖНЫ считать вниз, а не вверх ... вам нужно изменить ваш цикл. И вам нужно вернуть chack обратно в Symbol() ... иначе советник для EURUSD будет потенциально закрывать ордера для GBPUSD ... что вам нужно сделать, так это избавиться от continue . .. или сделать == в !=
Просто чтобы понять вас правильно. Вы говорите, что если я изменю первый код на:
то он также должен работать? Потому что я попробовал это, и он снова открывает только один ордер на валютную пару.
Или если я изменю второй код на (k++ на k--), то он также открывает только одну сделку на валютную пару.
Просто чтобы понять вас правильно. Вы говорите, что если я изменю первый код на:
то он также должен работать? Потому что я попробовал это, и он снова открывает только один ордер на валютную пару.
Или если я изменю второй код на (k++ на k--), то он также открывает только одну сделку на валютную пару.
Я говорю о первом коде, о цикле, который вы используете, где вы закрываете ордера ... он должен уменьшаться. ... иначе вы пропустите ордера. Я вижу, что вы убрали continue и добавили { } скобки, очень хорошо :-)
Открытие одного ордера на валютную пару или одного ордера в целом?
Открывать по одному ордеру на валютную пару или по одному ордеру в целом?
Да, в целом, конечно. Хорошо, второй код:
Когда мы говорим о цикле, я думаю, вы имеете в виду это:
На самом деле я бы изменил его на что-то вроде этого:
Эта строка открывает только один ордер на валютную пару (по желанию!).
Является ли цикл правильным в отношении этой проблемы сейчас?
RaptorUK:
Возможно, это не всегда сработает... при закрытии открытых ордеров или удалении отложенных ордеров в цикле вы ДОЛЖНЫ вести отсчет вниз, а не вверх... вам нужно изменить цикл. И вам нужно вернуть chack обратно в Symbol() ... иначе советник для EURUSD будет потенциально закрывать ордера для GBPUSD ... что вам нужно было сделать, так это избавиться от continue . ... или превратить== в !=Да, в целом, конечно. Хорошо, второй код:
Когда мы говорим о цикле, я думаю, вы имеете в виду это:
На самом деле я бы изменил его на что-то вроде этого:
Эта строка открывает только один ордер для каждой валютной пары (как желательно!).
Является ли цикл правильным для решения этой проблемы?
Нет, сделайте так...
Первая позиция ордера равна 0, поэтому если у вас 5 ордеров, то позиции 0, 1, 2, 3, 4 ... поэтому последняя позиция OrdersTotal() - 1 ... поэтому для обратного отсчета вы начинаете с OrdersTotal()-1 и заканчиваете на 0.
Нет, сделайте так...
Первая позиция ордера - 0, поэтому если у вас 5 ордеров, то позиции будут 0, 1, 2, 3, 4 ... последняя - OrdersTotal() - 1 ... поэтому для обратного отсчета вы начинаете с OrdersTotal()-1 и заканчиваете на 0.
Таким образом, это должно выглядеть так:
потому что вы написали это:
или я ошибаюсь?
Так что это должно выглядеть следующим образом:
потому что вы это написали:
или я ошибаюсь?