Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 1095
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Да при помощи ResultOrder получится тикет ордера.
ОК, с этим проблем теперь не наблюдаю, но очередная проблема появилась при использовании CTrade: вот имею запомненный тикет ордера, могу закрыть по тикету с помощью PositionClose(m_ticket)
а как узнать закрыт ли у меня ордер или нет, в MQL4 это было просто: выбрал ордер через OrderSelect() и проверил if(OrderCloseTime()>0) - если время закрытия не равно 0, то ордер закрыт
как узнать, что ордер закрыт используя СБ CTrade ?
ОК, с этим проблем теперь не наблюдаю, но очередная проблема появилась при использовании CTrade: вот имею запомненный тикет ордера, могу закрыть по тикету с помощью PositionClose(m_ticket)
а как узнать закрыт ли у меня ордер или нет, в MQL4 это было просто: выбрал ордер через OrderSelect() и проверил if(OrderCloseTime()>0) - если время закрытия не равно 0, то ордер закрыт
как узнать, что ордер закрыт используя СБ CTrade ?
Забудьте про ОРДЕР! Есть позиция!
Я ведь сразу спросил: что именно Вам нужно: ОРДЕР, СДЕЛКА или ПОЗИЦИЯ? Не путайте терминологию. После исполнения торгового приказа появляется ПОЗИЦИЯ! Не ОРДЕР!
Поэтому сначала словами опишите, что делаете и что хотите получить. Вместо ОРДЕР применяйте "торговый приказ BUY" и "торговый приказ SELL". В результате получаем "позиция BUY" или "позиция SELL".
ОК, с этим проблем теперь не наблюдаю, но очередная проблема появилась при использовании CTrade: вот имею запомненный тикет ордера, могу закрыть по тикету с помощью PositionClose(m_ticket)
а как узнать закрыт ли у меня ордер или нет, в MQL4 это было просто: выбрал ордер через OrderSelect() и проверил if(OrderCloseTime()>0) - если время закрытия не равно 0, то ордер закрыт
как узнать, что ордер закрыт используя СБ CTrade ?
Если не учитывать, что тикет позиции как правило соответствует тикету ордера, но не факт что абсолютно всегда, то можно воспользоваться без СБ функцией PositionSelectByTicket
В этот код расчета индикатора можно подставить свою формулу расчета?
Например open/2
После исполнения торгового приказа появляется ПОЗИЦИЯ! Не ОРДЕР!
Есть сервера, где можно воспроизвести такую ситуацию
Т.е. имеем одновременно в Терминале вот такой ордер
и такую же позицию от него
Поэтому сначала словами опишите, что делаете и что хотите получить. Вместо ОРДЕР применяйте "торговый приказ BUY" и "торговый приказ SELL". В результате получаем "позиция BUY" или "позиция SELL".
ОК, упростим нашу беседу до примеров в коде, вот на MQL4 код написал - интересует версия для тестрера, т.е минимум проверок и т.п.:
смысл ТС: открываем при первом запуске ордер Buy и запоминаем тикет ордера (работаем по тикету) , затем проверяем закрыт ли ордер - смотрим какого типа был ордер и выставляем противоположный ордер и запоминаем тикет и так по кругу
мне нужен аналогичный пример для воспроизведения на MQL5 с использованием СБ CTrade
ОК, упростим нашу беседу до примеров в коде, вот на MQL4 код написал - интересует версия для тестрера, т.е минимум проверок и т.п.:
смысл ТС: открываем при первом запуске ордер Buy и запоминаем тикет ордера (работаем по тикету) , затем проверяем закрыт ли ордер - смотрим какого типа был ордер и выставляем противоположный ордер и запоминаем тикет и так по кругу
мне нужен аналогичный пример для воспроизведения на MQL5 с использованием СБ CTrade
Сейчас барабашка скажет всё что о вас думает))))
пусть говорит, но нужно по номеру тикета узнать открыта или закрыта позиция, если закрыта, нужно узнать какой тип торгового приказа был у закрытой позиции
(жирным - все равно это ордер! - ибо на хэдж счете ТС)
ОК, упростим нашу беседу до примеров в коде, вот на MQL4 код написал - интересует версия для тестрера, т.е минимум проверок и т.п.:
мне нужен аналогичный пример для воспроизведения на MQL5 с использованием СБ CTrade
Тут уже надо будет постараться.
Итак, основа основ - Идентификатор позиции (POSITION_IDENTIFIER), но ни как не тикет позиции. Это важно, как раз из-за неттинга:
POSITION_IDENTIFIER
Идентификатор позиции - это уникальное число, которое присваивается каждой вновь открытой позиции и не изменяется в течение всей ее жизни. Соответствует тикету ордера, которым была открыта позиция.
Идентификатор позиции указывается в каждом ордере (ORDER_POSITION_ID) и сделке (DEAL_POSITION_ID), которая ее открыла, изменила или закрыла. Используйте это свойство для поиска ордеров и сделок, связанных с позицией.
При развороте позиции в режиме неттинга (единой сделкой in/out) идентификатор позиции POSITION_IDENTIFIER не изменяется. Однако при этом POSITION_TICKET изменяется на тикет ордера, в результате которого произошел разворот. В режиме хеджинга разворот позиции не предусмотрен.
long
Значит нужно запоминать и отслеживать идентификатор позиции (POSITION_IDENTIFIER).
Теперь уточнённая задача: при первом запуске открываем ПОЗИЦИЮ BUY и запоминаем её (ВНИМАНИЕ: запоминать нужно идентификатор позиции, но не тикет). Если позиция была закрыта - открываем противоположную позицию: например жила-была позиция BUY, затем она была закрыта, а значит открывается сразу позиция SELL.
Теперь решить задачу станет намного легче.