Скачать MetaTrader 5

Время совершения сделки?

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Что происходит в MQL5.community? Раздел Стена ответит на этот вопрос!
Lev Ilyukov
1462
Lev Ilyukov 2012.07.07 22:53 

При тестировании советника переменная opentime всё время выдаёт 0. Уже всю голову сломал. Помогите! Часть кода из OnTick:

         HistorySelect(0,TimeCurrent());
         int total = HistoryDealsTotal();
         ulong ticket = HistoryDealGetTicket(total-1);
         HistoryDealSelect(ticket);
         long opentime = HistoryDealGetInteger(ticket,DEAL_TIME);
         long type = HistoryDealGetInteger(ticket,DEAL_TYPE);
         string comment = HistoryDealGetString(ticket,DEAL_COMMENT);
         Print(TimeCurrent(),"   ",opentime);
Anatoli Kazharski
56843
Anatoli Kazharski 2012.07.07 23:10  
lordlev:

При тестировании советника переменная opentime всё время выдаёт 0. Уже всю голову сломал. Помогите! Часть кода из OnTick:

Вот так попробуйте:

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   int i=0;
   ulong hd_ticket=0;
   datetime hd_time=0;
   
   if(HistorySelect(0,TimeCurrent())) // получим историю ордеров. Если история выбрана, то...
     {
      i=HistoryDealsTotal()-1; // получим порядковый номер последней сделки
      //---
      if((hd_ticket=HistoryDealGetTicket((int)i))>0) // получим тикет ордера по его позиции в списке
        {
         hd_time=(datetime)HistoryDealGetInteger(hd_ticket,DEAL_TIME);
         //---
         Print("hd_time: ",hd_time);
        }
     }
  }
Lev Ilyukov
1462
Lev Ilyukov 2012.07.07 23:23  
tol64:

Вот так попробуйте:

Спасибо, всё пашет. Но всё равно я не могу понять в чём ошибка была.
Anatoli Kazharski
56843
Anatoli Kazharski 2012.07.07 23:42  
lordlev:
Спасибо, всё пашет. Но всё равно я не могу понять в чём ошибка была.
Вы два раза пытались выбрать сделку, сначала по номеру, а потом ещё по тикету. Но это ладно, не в этом ошибка. Переменная opentime у Вас long, а нужно datetime.
Документация по MQL5: Торговые функции / HistoryDealSelect
Документация по MQL5: Торговые функции / HistoryDealSelect
  • www.mql5.com
Торговые функции / HistoryDealSelect - Документация по MQL5
Anatoli Kazharski
56843
Anatoli Kazharski 2012.07.08 18:07  
lordlev:
Спасибо, всё пашет. Но всё равно я не могу понять в чём ошибка была.
tol64:
Вы два раза пытались выбрать сделку, сначала по номеру, а потом ещё по тикету. Но это ладно, не в этом ошибка. Переменная opentime у Вас long, а нужно datetime.
Хотя я ошибся, поспешил с ответом (проверил). :) Тип переменной можно и в long указывать, тогда Вы будете получать значение времени в секундах от 1970 года. А чтобы лучше понять, что за ошибка, то всегда нужно проверять на ошибки. То есть, если история сделок выбрана, то идём дальше, если нет, то вывести последнюю ошибку.
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий