Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Привет
Этот подход работает только в том случае, если текущий размер позиции равен нулю, а новая сделка успешно исполняется с желаемым размером позиции.
См. код:
Но что если ваш советник разворачивает позицию: из LONG в SHORT или наоборот, и это действие выполняется в двух разных сделках?
После первой сделки булево "position_opened" устанавливается в "TRUE", и советник не может открыть вторую сделку, потому что проверяется условие"if(conditions_to_open && !position_opened)", поэтому вторая сделка будет заблокирована.
А что если позиция открыта лишь частично? Вам нужна вторая сделка, чтобы довести размер позиции до нужного размера.
В итоге, если говорить "коротко", вам всегда нужна функция PositionSelect(Symbol()) для расчета КРУГЛОГО размера позиции, и именно с этого началась вся проблема (и эта тема на форуме).
В критический момент, когда советник вызывает PositionSelect(Symbol()), терминал еще не обновил размер КУРРЕНТНОЙ позиции, и советник работает с неправильным размером позиции и посылает новый двойной ордер на торговый сервер.
Я думаю, что подход из(figurelli) лучше, потому что вы вынуждены ждать, пока советник обновит функцию PositionSelect(Symbol()) до правильного размера позиции.
Привет
Этот подход работает только в том случае, если текущий размер позиции равен нулю, а новая сделка успешно исполняется с желаемым размером позиции.
См. код:
Но что если ваш советник разворачивает позицию: из LONG в SHORT или наоборот, и это действие выполняется в двух разных сделках?
После первой сделки булево "position_opened" устанавливается в "TRUE", и советник не может открыть вторую сделку, потому что проверяется условие"if(conditions_to_open && !position_opened)", поэтому вторая сделка будет заблокирована.
А что если позиция открыта лишь частично? Вам нужна вторая сделка, чтобы довести размер позиции до нужного размера.
В итоге, если говорить "коротко", вам всегда нужна функция PositionSelect(Symbol()) для расчета КРУГЛОГО размера позиции, и именно с этого началась вся проблема (и эта тема на форуме).
В критический момент, когда советник вызывает PositionSelect(Symbol()), терминал еще не обновил размер КУРРЕНТНОЙ позиции, и советник работает с неправильным размером позиции и посылает новый двойной ордер на торговый сервер.
Я думаю, что подход из(figurelli) лучше, потому что вы вынуждены ждать, пока советник обновит функцию PositionSelect(Symbol()).
Вы правы, оба подхода имеют свои ограничения.
Теперь источник этой проблемы четко определен. Каждый должен адаптировать свой код в зависимости от своей стратегии. Я не думаю, что существует общий метод, который можно применить во всех случаях.
Нужна ли нам библиотека OrderSendReliable() для великого и могучего mql5?
Вы правы, оба подхода имеют свои ограничения.
Теперь происхождение этого вопроса определено четко. Каждый должен адаптировать свой код в зависимости от своей стратегии. Я не думаю, что существует общий метод, который может быть применим во всех случаях.
Или нам придется ждать "официального заявления" от самих ребят из Metaquotes.
Есть ли уже ответ от службы поддержки?
Если бы я согласился с вами, вы бы посчитали это бесполезным? .
Я просто учил, что решение Sleeping until Terminating Trading напомнило мне OrderSendReliable(). Я учил, что это можно было бы решить более элегантно.
Это также напоминает мне обработку old_documents ... где идет { и вся торговля должна быть остановлена }.
В любом случае, извините, я не хотел придираться к mql5.
Или нам придется ждать "официального заявления" от самих ребят из Metaquotes.
Есть ли уже ответ от службы поддержки?
Нет. Я как раз думал об этом... Возможно, было бы полезно, если бы все заинтересованные люди написали тикет в ServiceDesk по этому вопросу. Однако я очень скептически отношусь к тому, что MQ захочет изменить этот дизайн. Но мы можем попробовать.
Люди могут написать в ServiceDesk и сообщить номер тикета здесь. Мой
Если бы я согласился с вами, вы бы посчитали это бесполезным?
Я просто учил, что решение Sleeping until Terminating Trading напомнило мне OrderSendReliable(). Я учил, что это можно было бы решить более элегантно.
Это также напоминает мне обработку old_documents ... где идет { и вся торговля должна быть остановлена }.
В любом случае, извините, я не хотел придираться к mql5.
Да, но трудно сказать, связано ли это с плохим кодированием. Двойная торговля была проблемой еще до появления темы о множественной торговле. Традиционно с ней справляется snelle_moda.
Да, но трудно сказать, связано ли это с плохим кодированием. Двойная торговля была проблемой еще до появления темы о множественной торговле. Традиционный способ ее решения - это способ, которым ее решает snelle_moda.