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);
}
//+------------------------------------------------------------------+