Как узнать закрыт ли последний ордер по стоплоссу (меньше 0 )

 

 Как узнать закрыт ли последний ордер по стоплоссу (меньше 0 ) т Важно выбор по символу, т.е. нужен перебор всех ордеров в истории и далее выбрать последний закрытый ордер по нужному символу

Допустим а мт4 - Посмотреть последнюю позицию легко, а тут как?

Запутался.

 

Я уже все перепробовал, 

уже просмотрел все советники которые нашел в поиске.

 Подскажите пожалуйста. 

 

HistorySelect(0,TimeCurrent());
 for(int i=0;i<HistoryOrdersTotal();i++){ 
 HistoryOrderSelect(HistoryOrderGetTicket(i));
     if(HistoryOrderGetString(HistoryOrderGetTicket(i-1),ORDER_SYMBOL)==sy)return(1);
}
 
Посмотри историю сделок. Нужно использовать HistoryDealsTotal() и соответствующие остальные функции и идентификаторы:  HistoryDealGetTicket(),  HistoryDealGetString() и т.д.
 
tol64:
Посмотри историю сделок. Нужно использовать HistoryDealsTotal() и соответствующие остальные функции и идентификаторы:  HistoryDealGetTicket(),  HistoryDealGetString() и т.д.

пробовал и с историей сделок. 

 

 

HistorySelect(0,TimeCurrent());
 for(int i=0;i<HistoryDealsTotal();i++){ 
 HistoryDealSelect(HistoryDealGetTicket(i));
   double cl=HistoryDealGetDouble(HistoryDealGetTicket(i),DEAL_PRICE);
   double op=HistoryDealGetDouble(HistoryDealGetTicket(i-1),DEAL_PRICE);
   long typeor=HistoryDealGetInteger(HistoryDealGetTicket(i-1),DEAL_TYPE);
      Print(typeor,"  ", cl," ",op," ",HistoryDealsTotal());

   if(typeor==DEAL_TYPE_BUY && HistoryDealGetString(HistoryDealGetTicket(i-1),DEAL_SYMBOL)==sy)
     {
      if(op>cl)
        {
           return(1);
        }
     }
   if(typeor==DEAL_TYPE_SELL && HistoryDealGetString(HistoryDealGetTicket(i-1),DEAL_SYMBOL)==sy)
     {
      if(cl>op)
        {
          return(1);
        }
     }
}

   return(0);

 

результат:

   0  0.0 0.0 1

 
Vladon:

пробовал и с историей сделок. 

...

Пример:

//+------------------------------------------------------------------+
//| ВОЗВРАЩАЕТ ЦЕНУ ПОСЛЕДНЕЙ СДЕЛКИ ТЕКУЩЕЙ ПОЗИЦИИ                 |
//+------------------------------------------------------------------+
double GetPriceLastDealCurrPos()
  {
   int total=0; // Всего сделок в списке выбранной истории
   ulong ticket=0; // Тикет сделки
   string deal_symbol=""; // Символ сделки
   double deal_price=0.0; // Цена
//---
// Если история позиции получена
   if(HistorySelect(pos.time,TimeCurrent()))
     {
      // Получим количество сделок в полученном списке
      total=HistoryDealsTotal();
      //---
      // Пройдем в цикле по всем сделкам в полученном списке
      // от последней сделки в списке к первой
      for(int i=total-1; i>=0; i--)
        {
         // Если тикет сделки по её позиции в списке получен, то...
         if((ticket=HistoryDealGetTicket(i))>0)
           {
            deal_symbol=HistoryDealGetString(ticket,DEAL_SYMBOL); // получим символ сделки
            deal_price=HistoryDealGetDouble(ticket,DEAL_PRICE); // получим цену сделки
            //---
            // Если символ сделки и текущий символ равны, остановим цикл
            if(deal_symbol==_Symbol) { break; }
           }
        }
     }
//---
   return(deal_price);
  }
//---

 

 
tol64:

Пример:

 

Спасибо огромное буду пробовать. 
 
Еще раз спасибо огромное. Получилось то что я хотел.
Причина обращения: