Хорошо. Я чуток невнимательно прочёл в первый раз. А вы сколько раз невнимательно прочли? Где там о разнонаправленных ордерах говорится?
По сути ответ был дан сразу самый правильный. Всё это отлавливается при обработке события OnTradeTransaction() где в случае закрытия
позиции по стопу и активация отложенного ордера будут разделены, даже если произошли эти события одновременно.
А тот факт что vvebus совсем не разобрался с возможностями
OnTradeTransaction() очевидны.
Хорошо. Я чуток невнимательно прочёл в первый раз. А вы сколько раз невнимательно прочли? Где там о разнонаправленных ордерах говорится?
Не важно однонаправлены они или разнонаправлены.
Если по логике они исполняются на одном тике, как описано в первом посте, то порядок исполнения не гарантирован. Значит
отложка может сработать раньше чем стоп и это приведет к нежелательным последствиям.
Если по логике они исполняются на одном тике, как описано в первом посте, то порядок исполнения не гарантирован.
Значит отложка может сработать раньше чем стоп и это приведет к нежелательным последствиям.
Ваши извинения приняты.
Как это не важно? Если однонаправленные, то размер позиции увеличится, в противном случае уменьшится вплоть до нуля и даже до изменения
направления.
Только вот я никогда не проверял как будет отработан стоплосс на неттинге, если стоп установлен тогда когда размер позиции был, путь 0.1 а в
момент срабатывания стопа размер позиции стал 0.2, 0.5 или ещё больше. Закроется вся позиция или только начальный размер, тот размер лота
который был в момент установки стоплосса?
Вот для предотвращения таких непонятных случаев на счетах netting, я-бы предпочёл ставить вместо стопов, ордера противоположной
направленности.
Хорошо. Я чуток невнимательно прочёл в первый раз. А вы сколько раз невнимательно прочли? Где там о разнонаправленных ордерах говорится?
По сути ответ был дан сразу самый правильный. Всё это отлавливается при обработке события OnTradeTransaction()
где в случае закрытия позиции по стопу и активация отложенного ордера будут разделены, даже если произошли эти события одновременно.
Да, я не упоминал разнонаправленные ордера, но они есть.. Но не суть.
Alexey Viktorov:
А тот факт что vvebus совсем не разобрался с возможностями
OnTradeTransaction() очевидны.
Может намекнете как по этому событию решить мой вопрос (проверка закрылась ли позиция, причина не важна)?
Да, я не упоминал разнонаправленные ордера, но они есть.. Но не суть.
Может намекнете как по этому событию решить мой вопрос (проверка закрылась ли позиция, причина не важна)?
Все сведется к ENUM_DEAL_ENTRY?
Начните с внимательного чтения документации. Там есть такое
Тип торговой транзакции передается в параметре type структуры MqlTradeTransaction.
Возможные типы торговых транзакций описываются следующим перечислением:
ENUM_TRADE_TRANSACTION_TYPE
Прочитав таблицу этих типов, можно экспериментировать в отладчике, что ускорит понимание.
Если интересует только открытие или закрытие позиций, можно остановиться только на изучении типа TRADE_TRANSACTION_DEAL_ADD
Закрытие позиции я начинаю анализировать с того, что транзакция есть, её тип TRADE_TRANSACTION_DEAL_ADD, но позицию выбрать уже невозможно.
if(trans.type == TRADE_TRANSACTION_DEAL_ADD)
{
if(!PositionSelectByTicket(trans.position))// && PositionGetInteger(POSITION_MAGIC) == magick) && проверить символ и всё что душа пожелает
{
// Здесь уже надо лезть в историю и if(HistoryDealSelect(trans.deal))
{ long hdr = HistoryDealGetInteger(trans.deal, DEAL_REASON);
if(hdr == DEAL_REASON_SL)
;// Здесь действия при условии что позиция закрылась по SL
}
}
}
НО! это для работы на hadge счёте и нет проверки ENUM_DEAL_ENTRY вход в рынок или выход из рынка, в моём варианте в данном
конкретном советнике это не надо. Это уже самостоятельно принимайте решение, надо или нет.
А Вы первый пост ветки читали?
Хорошо. Я чуток невнимательно прочёл в первый раз. А вы сколько раз невнимательно прочли? Где там о разнонаправленных ордерах говорится?
По сути ответ был дан сразу самый правильный. Всё это отлавливается при обработке события OnTradeTransaction() где в случае закрытия позиции по стопу и активация отложенного ордера будут разделены, даже если произошли эти события одновременно.
А тот факт что vvebus совсем не разобрался с возможностями OnTradeTransaction() очевидны.
Хорошо. Я чуток невнимательно прочёл в первый раз. А вы сколько раз невнимательно прочли? Где там о разнонаправленных ордерах говорится?
Не важно однонаправлены они или разнонаправлены.
Если по логике они исполняются на одном тике, как описано в первом посте, то порядок исполнения не гарантирован. Значит отложка может сработать раньше чем стоп и это приведет к нежелательным последствиям.
Ваши извинения приняты.
Не важно однонаправлены они или разнонаправлены.
Если по логике они исполняются на одном тике, как описано в первом посте, то порядок исполнения не гарантирован. Значит отложка может сработать раньше чем стоп и это приведет к нежелательным последствиям.
Ваши извинения приняты.
Как это не важно? Если однонаправленные, то размер позиции увеличится, в противном случае уменьшится вплоть до нуля и даже до изменения направления.
Только вот я никогда не проверял как будет отработан стоплосс на неттинге, если стоп установлен тогда когда размер позиции был, путь 0.1 а в момент срабатывания стопа размер позиции стал 0.2, 0.5 или ещё больше. Закроется вся позиция или только начальный размер, тот размер лота который был в момент установки стоплосса?
Вот для предотвращения таких непонятных случаев на счетах netting, я-бы предпочёл ставить вместо стопов, ордера противоположной направленности.
Я и не собирался извиняться.
Хорошо. Я чуток невнимательно прочёл в первый раз. А вы сколько раз невнимательно прочли? Где там о разнонаправленных ордерах говорится?
По сути ответ был дан сразу самый правильный. Всё это отлавливается при обработке события OnTradeTransaction() где в случае закрытия позиции по стопу и активация отложенного ордера будут разделены, даже если произошли эти события одновременно.
Да, я не упоминал разнонаправленные ордера, но они есть.. Но не суть.
А тот факт что vvebus совсем не разобрался с возможностями OnTradeTransaction() очевидны.
Может намекнете как по этому событию решить мой вопрос (проверка закрылась ли позиция, причина не важна)?
Все сведется к ENUM_DEAL_ENTRY?
Да, я не упоминал разнонаправленные ордера, но они есть.. Но не суть.
Может намекнете как по этому событию решить мой вопрос (проверка закрылась ли позиция, причина не важна)?
Все сведется к ENUM_DEAL_ENTRY?
Закрытие ордера - не событие. Происходит не на стороне MQL, а на сервере. MQL не видит.
технически позиция осталась открытой - но закрытие по SL было и я пока не могу понять как в этом случае отловить это закрытие.
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Вопросы от начинающих MQL5 MT5 MetaTrader 5
fxsaber, 2018.08.02 17:09
Либо
Да, я не упоминал разнонаправленные ордера, но они есть.. Но не суть.
Может намекнете как по этому событию решить мой вопрос (проверка закрылась ли позиция, причина не важна)?
Все сведется к ENUM_DEAL_ENTRY?
Начните с внимательного чтения документации. Там есть такое
Тип торговой транзакции передается в параметре type структуры MqlTradeTransaction. Возможные типы торговых транзакций описываются следующим перечислением:
ENUM_TRADE_TRANSACTION_TYPE
Прочитав таблицу этих типов, можно экспериментировать в отладчике, что ускорит понимание.
Если интересует только открытие или закрытие позиций, можно остановиться только на изучении типа TRADE_TRANSACTION_DEAL_ADD
Закрытие позиции я начинаю анализировать с того, что транзакция есть, её тип TRADE_TRANSACTION_DEAL_ADD, но позицию выбрать уже невозможно.
НО! это для работы на hadge счёте и нет проверки ENUM_DEAL_ENTRY вход в рынок или выход из рынка, в моём варианте в данном конкретном советнике это не надо. Это уже самостоятельно принимайте решение, надо или нет.