Особенности языка mql5, тонкости и приёмы работы - страница 19
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Каким образом можно определить время открытия последней позиции, время закрытия последней позиции?
Да и вообще, хотелось бы знать общие принципы и алгоритмы получения информации по открытым/закрытым позициям на mql5.
Что необходимо учитывать, какие особенности существуют на данный момент?
Дело в том, что я использую MQL4-синтаксис, который в 1000 раз легче и понятнее MQL5-синтаксиса при работе с торговой частью.
Вы отлично знаете, как легко в три строчки и понятно для каждого решается Ваша задача на MQL4. Поэтому именно так и решаю.
Для ответа на все вопросы по MQL5 заглядываю в исходник библиотеки. Там были учтены все нюансы, что мне известны.
На данный момент можно констатировать, что Hedge и Netting-позиции сильно отличаются. Например, в Netting можно на протяжении месяцев иметь всегда только одну позицию, при этом постоянно торговать. Поэтому Netting-позиции в штатном понимании MT5 - это нечто непродуманное и, соответственно, неудобное. Поэтому для того же Netting возможно создание своей сущности позиций. На том же MT4 можно вполне иметь Netting-позиции, но с гораздо более понятным взаимодействием.
Откройте позу на 1 лот. Затем закройте на 0.99 и на столько же долейте. И так несколько раз.
Hedge удобен не тем, что можно иметь разнонаправленные позиции, а тем, что может быть несколько позиций по одному символу ОДНОГО направления. Вот именно такую работу с позициями в Netting-системах вижу удобной. А не то, что в MT5.
В идеале, при работе на Netting-счетах у Вас всегда должна быть таблица, полностью соответствующая MT4-стейтментам. Потому что только такие таблицы дают сразу понимание, что и как происходило на торговом счете. А не MT5-стейтменты.
Что же касается MT5-Hedge, то там все просто. CloseBy, правда, не копал. Поэтому не знаю.
Не всегда возможно узнать SL/TP-уровни закрытой позиции.
А вот это уже интересно... Столкнулся с необходимостью точно знать что последняя закрытая позиция закрыта по тейк-профит.
Есть какая-либо возможность это точно узнать?
А вот это уже интересно... Столкнулся с необходимостью точно знать что последняя закрытая позиция закрыта по тейк-профит.
Есть какая-либо возможность это точно узнать?
Делаю как посоветовали:
Делаю как посоветовали:
Хорошо, а как узнать, что последняя сделка привела к закрытию или развороту позиции?
Если позиция закрыта, или развёрнута, то тогда и имеет смысл проверять её данные, которые потребуются для логики советника: объём, факт закрытия по тейку или стопу, и пр...
Иначе, если у последней сделки обнаружен факт закрытия по тейку, но позиция осталась, то нет смысла проверять данные по последней закрытой позиции (она ведь ещё есть).
Вообще конечно сложновато быстро переключиться на логику МТ5-ордерной системы после четвёрочной - уж больно много вопросов появляется при обдумывании логики поведения советника, которая завязана на данные о последней закрытой позиции - в четвёрке всё прозрачно - позиция имеет свой тип, и она последняя - подходит - берём данные и используем. Но тут ... хэдж, неттинг... и нужно чтобы одинаковый результат был ... и поехали думки вразнос...
Хорошо, а как узнать, что последняя сделка привела к закрытию или развороту позиции?
1. Если позиция закрыта, или развёрнута, то тогда и имеет смысл проверять её данные, которые потребуются для логики советника: объём, факт закрытия по тейку или стопу, и пр...
2. Иначе, если у последней сделки обнаружен факт закрытия по тейку, но позиция осталась, то нет смысла проверять данные по последней закрытой позиции (она ведь ещё есть).
Вообще конечно сложновато быстро переключиться на логику МТ5-ордерной системы после четвёрочной - уж больно много вопросов появляется при обдумывании логики поведения советника, которая завязана на данные о последней закрытой позиции - в четвёрке всё прозрачно - позиция имеет свой тип, и она последняя - подходит - берём данные и используем. Но тут ... хэдж, неттинг... и нужно чтобы одинаковый результат был ... и поехали думки вразнос...
1. Проверить тип сделки, IN, OUT или IN/OUT
2. Если позиция закрылась по SL или TP, то её уже нет, закрылась она, проверять тип сделки не нужно.
1. Проверить тип сделки, IN, OUT или IN/OUT
2. Если позиция закрылась по SL или TP, то её уже нет, закрылась она, проверять тип сделки не нужно.
Это справедливо для неттинга? Или для хеджа тоже? Разве на хеджевом счёте не может быть несколько позиций в одну сторону? Или всё же позиция - она одна, и .... А что "и"? ... Блин... сам не знаю что "и"... Вопросов много, ответы пока не укладываются в голове.
Для хеджа тоже.
За несколько лет у меня мозг заточился под нетинг. Ордер->Сделка->Позиция. Сделок может быть много в позиции (при хедже только одна сделка, гуру поправьте если не так), по типу сделки можно определить что произошло с позицией.
В хедже конечно проще в понимании, но сложнее в сопровождении. ИМХО конечно.
Для хеджа тоже.
За несколько лет у меня мозг заточился под нетинг. Ордер->Сделка->Позиция. Сделок может быть много в позиции (при хедже только одна сделка, гуру поправьте если не так), по типу сделки можно определить что произошло с позицией.
В хедже конечно проще в понимании, но сложнее в сопровождении. ИМХО конечно.
А вот это уже интересно... Столкнулся с необходимостью точно знать что последняя закрытая позиция закрыта по тейк-профит.
Есть какая-либо возможность это точно узнать?
Когда находишь последнюю сделку DEAL_ENTRY_OUT и выбираешь всю историю позиции HistorySelectByPosition в этом списке есть, для hadge счетов 2 сделки и 2 ордера, открытие позиции и закрытие её. Ордер на основании которого произошло закрытие содержит ORDER_PRICE_OPEN. Дальше проверяешь тип позиции и тип ордера по которому было закрытие... Если ордер имеет противоположный тип, значит это было закрытие. Соответственно цена ордера и есть искомая цена, с небольшим уточнением: Если профит ордера > 0 то это цена ТР, если-же < 0 то позиция закрылась по SL.
Полагаться на комментарий к ордеру, я-бы не стал.
Когда находишь последнюю сделку DEAL_ENTRY_OUT и выбираешь всю историю позиции HistorySelectByPosition в этом списке есть, для hadge счетов 2 сделки и 2 ордера, открытие позиции и закрытие её. Ордер на основании которого произошло закрытие содержит ORDER_PRICE_OPEN. Дальше проверяешь тип позиции и тип ордера по которому было закрытие... Если ордер имеет противоположный тип, значит это было закрытие. Соответственно цена ордера и есть искомая цена, с небольшим уточнением: Если профит ордера > 0 то это цена ТР, если-же < 0 то позиция закрылась по SL.
Полагаться на комментарий к ордеру, я-бы не стал.