Пт. Апр 26th, 2024

MQL5: функция возвращает TRUE, если на текущем баре есть закрытая сделка.

Соответственно, если:

if(!getLastBarLastClosePos(Magic))//если закрытых сделок на текущем баре нет
{
//пишем функционал
}

Функция:

bool getLastBarLastClosePos(long mag)
  {
   ulong deal_ticket = -1;            // тикет сделки
   ulong order_ticket;           // тикет ордера, по которому была совершена сделка
   datetime transaction_time;    // время совершения сделки
   long magic; //магик
////--- установим начальную и конечную дату для запроса истории сделок
//   datetime from_date=0;          // с самого начала
//   datetime to_date=TimeCurrent();// по текущий момент
//--- запросим историю сделок в указанном интервале
   HistorySelect(iTime(_Symbol,PERIOD_D1,0),TimeCurrent());
//--- общее количество в списке сделок
   int deals=HistoryDealsTotal();
//--- теперь обработаем каждую сделку
   for(int i=deals; i>0; i--)
     {
      deal_ticket=HistoryDealGetTicket(i);

      if(HistoryDealGetInteger(deal_ticket,DEAL_ENTRY) == DEAL_ENTRY_IN)
         continue;

      order_ticket = ulong(HistoryDealGetInteger(deal_ticket, DEAL_ORDER));
      magic = long(HistoryDealGetInteger(deal_ticket, DEAL_MAGIC));

      if(order_ticket <= 0 || magic != mag)
         continue;
      transaction_time=(datetime)HistoryDealGetInteger(deal_ticket,DEAL_TIME);

      if(transaction_time >= iTime(_Symbol,PERIOD_CURRENT,0))
         return(true);
     }
   return(false);
  }
//+------------------------------------------------------------------+

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

от drivermql

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

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

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