Yedelkin: Особенность POSITION_PRICE_OPEN в том, что если позиция является результатом срабатывания нескольких однонаправленных ордеров, то в качестве цены позиции указывается некая средняя цена исполнения этих ордеров. Поэтому не совсем понятно, почему у Вас срабатывает условие А. Ведь если цены исполнения ордеров являются разными, то совпадения цены исполнения ордера и цены позиции быть не должно.
Интересная информация... Не знаю, но первая закрывается по коду, а вторая - по тп/сл... Тепрерь вот уж точно совсем запутался... Но я решил больше не заморачиваться с идентификацией - утопия. Сейчас запоминаю лот покупки и при наступлении условия - продаю этим лотом (и наоборот). Полагаю, что это наиболее правильный вариант...
Forex_Noob: при дальнейшем переборе открытых позиций сравниваю эту цену с ценой выбранной позиции
Честно говоря, не совсем понятно, зачем надо привязываться к цене исполнения ордера. Наверное, это некий рудимент от МТ4. Вот посудите сами. Мы точно знаем, что по символу может существовать только одна открытая позиция. Допустим, эта позиция сформировалась в результате исполнения двух ордеров объёмами V1 и V2. Соответственно, чтобы "закрыть первый ордер объёмом V1" при наступлении некоего условия А, достаточно дождаться наступления этого условия и отправить противоположнонаправленный ордер с объёмом V1. В результате срабатывания этого ордера объём позиции сократится до V2. Но позиция по символу будет существовать. Затем дожидаемся наступления некоего условия Б, и отправляем второй противоположнонаправленный ордер с объёмом V2.
Forex_Noob: Интересная информация... Не знаю, но первая закрывается по коду, а вторая - по тп/сл... Тепрерь вот уж точно совсем запутался... Но я решил больше не заморачиваться с идентификацией - утопия. Сейчас запоминаю лот покупки и при наступлении условия - продаю этим лотом (и наоборот). Полагаю, что это наиболее правильный вариант...
Почему вторая закрывается по стоп-уровням - это как раз понятно. Не выполняется Ваше условие на совпадение цены исполнения ордера и цены позиции - вот и висит позиция, пока стоп-уровни не сработают.
Yedelkin: Честно говоря, не совсем понятно, зачем надо привязываться к цене исполнения ордера. Наверное, это некий рудимент от МТ4. Вот посудите сами. Мы точно знаем, что по символу может существовать только одна открытая позиция. Допустим, эта позиция сформировалась в результате исполнения двух ордеров объёмами V1 и V2. Соответственно, чтобы "закрыть первый ордер объёмом V1" при наступлении некоего условия А, достаточно дождаться наступления этого условия и отправить противоположнонаправленный ордер с объёмом Vic1. В результате срабатывания этого ордера объём позиции сократится до V2. Но позиция по символу будет существовать. Затем дожидаемся наступления некоего условия Б, и отправляем второй противоположнонаправленный ордер с объёмом V2.
Да я с Вами согласен (см. предыдущий пост). К этому пришел на четвертый день адаптации к MQL5. В этом плане привычная логика MQL4 сильно мешает - приходится изобретать велосипед с квадратными колесами...
Почему вторая закрывается по стоп-уровням - это как раз понятно. Не выполняется Ваше условие на совпадение цены исполнения ордера и цены позиции - вот и висит позиция, пока стоп-уровни не сработают.
Я теперь и сам не знаю. Посмотрю, может остались промежуточные сохранения кода - выложу пикчу 4-ки и 5-ки, где 1-й стоп как и в 4-ке - по требованию, а второй - по тп/сл
Особенность POSITION_PRICE_OPEN в том, что если позиция является результатом срабатывания нескольких однонаправленных ордеров, то в качестве цены позиции указывается некая средняя цена исполнения этих ордеров. Поэтому не совсем понятно, почему у Вас срабатывает условие А. Ведь если цены исполнения ордеров являются разными, то совпадения цены исполнения ордера и цены позиции быть не должно.
Почему вторая закрывается по стоп-уровням - это как раз понятно. Не выполняется Ваше условие на совпадение цены исполнения ордера и цены позиции - вот и висит позиция, пока стоп-уровни не сработают.
Была вот такая тема: Как выбрать все цены по которым открывалась позиция Не знаю, поможет ли в чём-нибудь.
Честно говоря, не совсем понятно, зачем надо привязываться к цене исполнения ордера. Наверное, это некий рудимент от МТ4. Вот посудите сами. Мы точно знаем, что по символу может существовать только одна открытая позиция. Допустим, эта позиция сформировалась в результате исполнения двух ордеров объёмами V1 и V2. Соответственно, чтобы "закрыть первый ордер объёмом V1" при наступлении некоего условия А, достаточно дождаться наступления этого условия и отправить противоположнонаправленный ордер с объёмом Vic1. В результате срабатывания этого ордера объём позиции сократится до V2. Но позиция по символу будет существовать. Затем дожидаемся наступления некоего условия Б, и отправляем второй противоположнонаправленный ордер с объёмом V2.
Да, одновременно пишем. Надо только к этой схеме ещё прибавить всякие проверки на наличие позиции, величину объёма позиции и т.д.
Зато кататься на нём прикольно!
Почему вторая закрывается по стоп-уровням - это как раз понятно. Не выполняется Ваше условие на совпадение цены исполнения ордера и цены позиции - вот и висит позиция, пока стоп-уровни не сработают.
Была вот такая тема: Как выбрать все цены по которым открывалась позиция Не знаю, поможет ли в чём-нибудь.
Да, одновременно пишем. Надо только к этой схеме ещё прибавить всякие проверки на наличие позиции, величину объёма позиции и т.д.
Зато кататься на нём прикольно!
Так вот видимо если ордера сливаются, то цена открытия у них одна (первоначальная)...
Это упущение MQ, при всём уважении.
Специально перечитал F1-Торговля-Торговая деятельность-Изменение позиции.
Доливка отложками и изменение цены при доливке никак не освещены.
PS цена будет средней. Просто на демо поставьте несколько отложек с "круглым" шагом, там, в 10 п, и посмотрите.
Результат:
Было интересно, изменяется ли значение POSITION_PRICE_OPEN при уменьшении объёма позиции.
Вот, для примера набросал (сначала покупаем 3 раза по 0.1 лота, затем продаём):
Результат:
Было интересно, изменяется ли значение POSITION_PRICE_OPEN при уменьшении объёма позиции.
При уменьшении то с чего ей меняться? Есть лот по рубль двадцать, стало пол лота...
Для наглядности надо цену покупки/продажи добавить. Хотя и так понятно.
Во всём виноват хэлп. Там просто пустое место на эту тему.
И название POSITION_PRICE_OPEN вроде как вводит в заблуждение.