Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 1852
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Ростислав мне это понятно
Мне не по не понятно почему если я блокирую флаг внутри этой функции советник начинает открывать и закрывать за раз 100-200 ордеров
Мне не понятно почему если я блокирую флаг внутри этой функции советник начинает открывать и закрывать за раз 100-200 ордеров
Объясняю на твоем коде:
Изначально флаг
Далее идет открытие ордеров
Далее если появляется условие для закрытия ордеров (у тебя их три)
флаг получает значение "1" и начинает закрывать ордера
и как только все ордера закрыты флаг получает значение "0"
Потому что ели флаг не равен "0", то постоянно вызывает функцию ClosseAll()
Может быть и так при условии что приводит команда на открытие ордера. Вот и происходит своего рода "ЗАЦИКЛИВАНИЕ"
Может быть и так при условии что приводит команда на открытие ордера. Вот и происходит своего рода "ЗАЦИКЛИВАНИЕ"
У тебя кредитка есть?
Заходишь в магазин и покупаешь пиво по одной бутылке за раз и каждый раз расчитываешься картой пока не получишь "0" на карте,
после этого идешь пополняешь карту и опять идешь за пивом
Да. Но замок открывается с одинаковым лотом. И два разнонаправленных ордера открываются одновременно. А хеджирование, это когда сделка вошла в просадку, а трейдер открывает позицию с бОльшим лотом в том же направлении (с разными направлениями я перепутал) подразумевая что цена развернется, чтобы получить прибыль на сделке с бОльшим лотом и перекрыть убыток сделки с меньшим лотом или усредняться до 0. Если что-то перепутал, то поправьте меня.
Хеджирование - это абсолютно не lock, и не частичный lock, а совершенно другая система.
Хеджирование - это абсолютно не lock, и не частичный lock, а совершенно другая система.
Но я же и не говорю, что это losk. Просто перепутал вчера (сказал: нужно открывать противоположную позицию вместо однонаправленной). Время было позднее уже. А сегодня понял где ошибся.
Но я же и не говорю, что это losk. Просто перепутал вчера (сказал: нужно открывать противоположную позицию вместо однонаправленной). Время было позднее уже. А сегодня понял где ошибся.
Тогда всё понятно, бывает и такое :)
Может быть и так при условии что приводит команда на открытие ордера. Вот и происходит своего рода "ЗАЦИКЛИВАНИЕ"
Нужно создать список ордеров, с тикетами, для закрытия (как уже многие здесь говорили). Если робот обнаружил сигнал на выход, то добавлять соответствующие ордера (тикеты) в список на закрытие. Список проходится циклом который отправляет запросы на закрытие (OrderClose). Затем нужно постоянно проверять есть ли открытые ордера с тикетами, которые были добавлены в этот список. Если один или несколько тикетов не обнаружено, то нужно удалять их из списка. Так функция не будет отправлять запрос на закрытие несуществующих ордеров.
Что делать с новыми сигналами и ордерами, которые появились в период заполненного списка? Можно также добавлять их в список закрытия по сигналу выхода. Таким образом, они также закроются в свою очередь. Вот и всё. Создайте такой список и закрываете ордера по тикетам циклически. Можно с интервалом в секунду или несколько секунд на один проход цикла. Осталось реализовать данный алгоритм и всё будет работать.
Нужно создать список ордеров для закрытия (как уже многие здесь говорили) с тикетами. Если робот обнаружил сигнал на выход, то добавлять соответствующие ордера (тикеты) в список на закрытие. Список проходится циклом который отправляет запрос на закрытие (OrderClose). Затем нужно постоянно проверять есть ли открытые ордера с тикетами, которые были добавлены в этот список. Если один или несколько тикетов не обнаружено, то нужно удалять их из списка. Так функция не будет отправлять запрос на закрытие несуществующих ордеров.
Что делать с новыми ордерами, которые появились в период заполненного списка? Можно также добавлять их в список закрытия. Таким образом, они также закроются в свою очередь. Вот и всё. Создайте такой список и закрываете ордера по этикетам циклически. Можно с интервалом в секунду или несколько секунд на один проход цикла. Осталось реализовать данный алгоритм и всё будет работать.
Получиться по очереди будет закрывать каждый?Когда сетка это так долго, ока закроет нужные.
При закрытии последнего, может случиться так, что уже ордеров 10 нужно закрывать и вот по очереди все закрывает и тянется это бесконечно долго.
Получиться по очереди будет закрывать каждый?Когда сетка это так долго, ока закроет нужные.
При закрытии последнего, может случиться так, что уже ордеров 10 нужно закрывать и вот по очереди все закрывает и тянется это бесконечно долго.
Не совсем так. Все ордера и так закрываются по очереди терминалом. В цикле OrderSend может срабатывать очень много раз в секунду (зависит от вашего железа). Но OrderSend всего лишь добавляет соответствующие команды в очередь на закрытие. Затем эти команды терминал отправляет на сервер с заданным интервалом или после получения ответа сервера о предыдущем запросе, а не сразу. Так что, по любому, большое количество ордеров (позиций) закрывается на много медленнее чем один ордер.