Чт. Мар 28th, 2024

Функция позволяет узнать, закрылась ли последняя сделка по тейк-профиту.

Входные параметры — символ и магик.

Функцию можно приспособить под получение любой информации (ну почти) от последней закрытой сделки.


// функция getTPorNotLastPos() возвращает true, если последняя сделка в истории была закрыта по тейк-профиту
// можно переделать под получение любых данных от последней закрытой сделки
bool getTPorNotLastPos(string pair, int mag)
  {
   ulong deal_ticket = -1;            // тикет сделки
   ulong order_ticket;           // тикет ордера,по которому была совершена сделка
   datetime transaction_time;    // время совершения сделки
   long deal_type;              // тип торговой операции
   long deal_entry;              // направление сделки
   long position_ID;             // идентификатор позиции
   double volume;                // объем операции
   string symbol;                // по какому символу была сделка
   double profit = 0;//профит
////--- установим начальную и конечную дату для запроса истории сделок
//   datetime from_date=0;          // с самого начала
//   datetime to_date=TimeCurrent();// по текущий момент
//--- запросим историрю сделок в указанном интервале
   HistorySelect(0,TimeCurrent());
//--- общее количество в списке сделок
   int deals=HistoryDealsTotal();
//--- теперь обработаем каждую сделку
   for(int i=deals; i>0; i--)
     {
      deal_ticket=HistoryDealGetTicket(i);
      volume=HistoryDealGetDouble(deal_ticket,DEAL_VOLUME);
      transaction_time=(datetime)HistoryDealGetInteger(deal_ticket,DEAL_TIME);
      order_ticket=HistoryDealGetInteger(deal_ticket,DEAL_ORDER);
      deal_type=HistoryDealGetInteger(deal_ticket,DEAL_TYPE);
      deal_entry=HistoryDealGetInteger(deal_ticket,DEAL_ENTRY);
      symbol=HistoryDealGetString(deal_ticket,DEAL_SYMBOL);
      position_ID=HistoryDealGetInteger(deal_ticket,DEAL_POSITION_ID);
      //--- сделаем красивое форматирование для номера сделки
      order_ticket = ulong(HistoryDealGetInteger(deal_ticket, DEAL_ORDER));
      profit = HistoryDealGetDouble(deal_ticket,DEAL_PROFIT);
      
      if(order_ticket <= 0 ||  symbol != pair)
         continue;
      break;
     }
     return(HistoryDealGetInteger(deal_ticket,DEAL_REASON)==DEAL_REASON_TP);
  }
//+------------------------------------------------------------------+

Поделись с друзьями:

от drivermql

Добавить комментарий

Ваш адрес email не будет опубликован.

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.