MT4-вариант не предлагаю...
Бежать с конца списка сделок и смотреть ту, что DEAL_REASON_TP.
MT4-вариант не предлагаю...
Бежать с конца списка сделок и смотреть ту, что DEAL_REASON_TP.
DEAL_REASON_TP.
в момент сделковая вроде? в истории она есть?
DEAL_REASON_TP.
в момент сделковая вроде? в истории она есть?
Не понял вопроса.
Не понял вопроса.
ерунда, если не мешается онтрейды в главном окне, DEAL_REASON_TP. подойдет
ерунда, если не мешается онтрейды в главном окне, DEAL_REASON_TP. подойдет
DEAL_REASON_TP можно поискать барабашки, сохранял его проверку скрипт, не могу найти где у себя
Народ. Че та заработался.
Надо найти последнюю позицию Закрытую по ТП.
Где искать ? В ордерах или в сделках или еще где.
У кого есть готовый код ?
Пример онлайн работы (через OnTradeTransaction).
- Ловим транзакцию 'TRADE_TRANSACTION_DEAL_ADD' (добавление сделки в историю)
- Пытаемся найти сделку (которая породила эту транзакцию) в торговой истории
- Если тип сделки BUY или SELL ('DEAL_TYPE_BUY' || 'DEAL_TYPE_SELL')
- Если эта сделка - сделка выход из рынка ('DEAL_ENTRY_OUT')
- Если эта сделка произошла в результате срабатывания Тейк профит ('DEAL_REASON_TP')
- Получаем в торговой истории все сделки принадлежащие к позиции и распечатываем небольшую информацию по каждой сделке
//+------------------------------------------------------------------+ //| Last Deal Take Profit activation.mq5 | //| Copyright © 2020, Vladimir Karputov | //+------------------------------------------------------------------+ #property copyright "Copyright © 2020, Vladimir Karputov" /* barabashkakvn Trading engine 3.143 */ #include <Trade\DealInfo.mqh> //--- CDealInfo m_deal; // object of CDealInfo class //--- input parameters input int Input1=9; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //--- } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { //--- } //+------------------------------------------------------------------+ //| TradeTransaction function | //+------------------------------------------------------------------+ void OnTradeTransaction(const MqlTradeTransaction &trans, const MqlTradeRequest &request, const MqlTradeResult &result) { //--- get transaction type as enumeration value ENUM_TRADE_TRANSACTION_TYPE type=trans.type; //--- if transaction is result of addition of the transaction in history if(type==TRADE_TRANSACTION_DEAL_ADD) { ResetLastError(); if(HistoryDealSelect(trans.deal)) m_deal.Ticket(trans.deal); else { Print(__FILE__," ",__FUNCTION__,", ERROR: ","HistoryDealSelect(",trans.deal,") error: ",GetLastError()); return; } if(m_deal.DealType()==DEAL_TYPE_BUY || m_deal.DealType()==DEAL_TYPE_SELL) { if(m_deal.Entry()==DEAL_ENTRY_OUT) { long deal_reason=-1; if(m_deal.InfoInteger(DEAL_REASON,deal_reason)==DEAL_REASON_TP) { long position_id=m_deal.PositionId(); if(HistorySelectByPosition(position_id)) { uint total = HistoryDealsTotal(); ulong ticket= 0; //--- for all deals for(uint i=0; i<total; i++) { //--- try to get deals ticket if((ticket=HistoryDealGetTicket(i))>0) { //--- get deals properties long lng_time=HistoryDealGetInteger(ticket,DEAL_TIME); datetime dat_time=(datetime)lng_time; long entry = HistoryDealGetInteger(ticket,DEAL_ENTRY); //long type = HistoryDealGetInteger(ticket,DEAL_TYPE); double volume =HistoryDealGetDouble(ticket,DEAL_VOLUME); double price = HistoryDealGetDouble(ticket,DEAL_PRICE); Print(dat_time,", ",DoubleToString(price,8)); } } } } } } } } //+------------------------------------------------------------------+
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
найти последнюю позицию закрытую по Тейкупрофиту
Vladimir Karputov, 2020.11.07 06:15
- Если эта сделка - сделка выход из рынка ('DEAL_ENTRY_OUT')
Лишнее.
Вообще, Reason-схема подходит не всегда. На том же RannForex после первого реджекта тейка логика становится совсем другой. Т.е. реализация тейка зависит от софта брокера.
Пример онлайн работы (через OnTradeTransaction).
- Ловим транзакцию 'TRADE_TRANSACTION_DEAL_ADD' (добавление сделки в историю)
- Пытаемся найти сделку (которая породила эту транзакцию) в торговой истории
- Если тип сделки BUY или SELL ('DEAL_TYPE_BUY' || 'DEAL_TYPE_SELL')
- Если эта сделка - сделка выход из рынка ('DEAL_ENTRY_OUT')
- Если эта сделка произошла в результате срабатывания Тейк профит ('DEAL_REASON_TP')
- Получаем в торговой истории все сделки принадлежащие к позиции и распечатываем небольшую информацию по каждой сделке
Спасибо за пример кода. как раз то что нужно, хотя уже и решил свою проблему как отдохнул и подумал.

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Народ. Че та заработался.
Надо найти последнюю позицию Закрытую по ТП.
Где искать ? В ордерах или в сделках или еще где.
У кого есть готовый код ?