Особенности языка mql5, тонкости и приёмы работы - страница 20
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Для хеджа тоже.
За несколько лет у меня мозг заточился под нетинг. Ордер->Сделка->Позиция. Сделок может быть много в позиции (при хедже только одна сделка, гуру поправьте если не так), по типу сделки можно определить что произошло с позицией.
В хедже конечно проще в понимании, но сложнее в сопровождении. ИМХО конечно.
Одна пока позиция существует в рынке. Но когда она закрылась появляется второй ордер и вторая сделка.
ps; Наверное я не прав. См. ps в сообщении ниже.
А трал SL ? Как будешь определять, что закрылось по тралу SL в плюсе?
Ну хорошо, это я не учёл. Тогда сверим цену ордера открывшего позицию и цену ордера закрывшего позицию.
Хотя можно наверное не трогать ордера, а оперировать только сделками.
ps; Нет... Что-то тут не так. Ведь каждое изменение тейка или стопа после открытия позиции есть новый ордер и новая сделка. Видимо с ними и надо работать...
Я не могу проверить, у меня нет позиций со стопами. Только некоторые с тейками.
Когда находишь последнюю сделку DEAL_ENTRY_OUT и выбираешь всю историю позиции HistorySelectByPosition в этом списке есть, для hadge счетов 2 сделки и 2 ордера, открытие позиции и закрытие её. Ордер на основании которого произошло закрытие содержит ORDER_PRICE_OPEN. Дальше проверяешь тип позиции и тип ордера по которому было закрытие... Если ордер имеет противоположный тип, значит это было закрытие. Соответственно цена ордера и есть искомая цена, с небольшим уточнением: Если профит ордера > 0 то это цена ТР, если-же < 0 то позиция закрылась по SL.
Полагаться на комментарий к ордеру, я-бы не стал.
Не всё так просто. Последний ордер в позиции может быть как закрывшим позицию, так и перевернувший её.
А на счет SL и TP - по коменту определить самый простой и надёжный способ. Сравнивать цены для SL и TP будет не всегда работать корректно, так как и SL и TP могут быть как в зоне прибыли так и в зоне убытка. На форуме уже обсуждалось это довольно бурно, ув. Sergeev и дал соответствующее решение по коменту, которое я привел.
Не всё так просто. Последний ордер в позиции может быть как закрывшим сделку, так и перевернувший её.
А на счет SL и TP - по каменту определить самый простой и надёжный способ. Сравнивать цены для SL и TP будет не всегда работать корректно, так как и SL и TP могут быть как в зоне прибыли так и в зоне убытка.
Так я и не говорил что просто. Ордер перевернувший позицию не может быть тейком или стопом. Да и вообще только на счетах netting. На счетах hedging чтобы перевернуть позицию, её надо закрыть противоположной большего объёма. Разве не так?
Тема интересная, но у меня нет возможности проверить по причине уже озвученной. Нет у меня позиций со стопами и тейками, тем более траленных.
Ордер перевернувший позицию не может быть тейком или стопом.
TP и SL это не ордера в системе учета МТ, это свойство позиции. Поэтому по ордерам/сделкам нельзя работать со SL/TP (даже мудрый движек сайта подтверждает ссылкой).
Alexey Viktorov:
На счетах hedging чтобы перевернуть позицию, её надо закрыть противоположной большего объёма. Разве не так?
Нет, не так. На счетах хедж позиция не может быть перевернута, она может быть только закрыта.
TP и SL это не ордера в системе учета МТ, это свойство позиции. Поэтому по ордерам/сделкам нельзя работать со SL/TP (даже мудрый движек сайта подтверждает ссылкой).
Нет, не так. На счетах хедж позиция не может быть перевернута, она может быть только закрыта.
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
MQL5 Как узнать закрылась сделка по стоп-лоссу или нет?
fxsaber, 2017.02.14 19:46
Тикет ордера, который был причиной закрытия позиции, запихнуть сюда#define ORDER_TYPE_STOPLOSS (-2)
int GetOrderType(const ulong OrderTicket)
{
int OrderType=(int)::HistoryOrderGetInteger(OrderTicket,ORDER_TYPE);
if((OrderType==ORDER_TYPE_BUY) || (OrderType==ORDER_TYPE_SELL))
{
const string OrderComment=HistoryOrderGetString(OrderTicket,ORDER_COMMENT);
const string OrderPrice=::DoubleToString(::HistoryOrderGetDouble(OrderTicket,ORDER_PRICE_OPEN),
(int)::SymbolInfoInteger(HistoryOrderGetString(OrderTicket,ORDER_SYMBOL),SYMBOL_DIGITS));
if(OrderComment=="tp "+OrderPrice)
OrderType=ORDER_TYPE_TAKEPROFIT;
else if(OrderComment=="sl "+OrderPrice)
OrderType=ORDER_TYPE_STOPLOSS;
}
return(OrderType);
}
Приведите пример, пожалуйста.
Пример чего? Что свойства позиции после её закрытия недоступны?
Пример того, как Вы определяете, по чему закрылась позиция SL или TP по ордерам и сделкам. Я привел пример определения по коментарию, а как делаете Вы?
Да пока никак не делаю. Даже в mql4 считал бесполезным занятием перебирать историю ордеров. А здесь пока фантазирую в какую-бы сторону я начал копать при необходимости. Чуть раньше я сказал что проверить не могу по простой причине, нет у меня траленных позиций ни в одном терминале, а специально заводить нет желания пока.
Соответственно после закрытия позиции на моих счетах только 2 ордера и 2 сделки относящиеся к позиции. По ним и можно хоть какую-то информацию о позиции получить. Например по какой цене была заявка на открытие и по какой конкретно открылась. Соответственно легко определяется с каким проскальзыванием было открытие позиции.
К комментарию отношусь с опаской ещё с мт4 потому, что встречал что ДЦ затирает весь комментарий по своим каким-то соображениям.