Ошибки, баги, вопросы - страница 3360

 
Andrei Iakovlev #:

Я имел в виду автоматически, без указания доп. проверок.

в любом цикле всегда минимум одна проверка

Вот самый короткий способ полного перебора типа uchar:

uchar c = 255;
   do {
      Print(c);
   } while (c--!=0);
 
fxsaber #:

Перебор всех сделок.

fxsaber #:

Перебор всех сделок.

не всех. Первая (i == 255) исключается

for (uint i = 255; (bool)i--; )
  Print(i);
}
 
Ошибка в документации.

HistoryDealGetTicket

Выбирает сделку для дальнейшей обработки и возвращает тикет сделки в истории. Перед вызовом функции HistoryDealGetTicket() необходимо получить историю сделок и ордеров с помощью функции HistorySelect() или HistorySelectByPosition().

ulong  HistoryDealGetTicket(
   int  index      // номер сделки
   );



ЗЫ HistoryOrderGetTicket, PositionGetTicket, OrderGetTicket - аналогично.

Документация по MQL5: Торговые функции / HistoryDealGetTicket
Документация по MQL5: Торговые функции / HistoryDealGetTicket
  • www.mql5.com
HistoryDealGetTicket - Торговые функции - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Nikolai Semko #:

не всех. Первая (i == 255) исключается

Всех. Внимательнее посмотрите.

 
fxsaber #:

Всех. Внимательнее посмотрите.

речь о всех значениях типа, а не массива

массива всех, а типа не всех

 
Nikolai Semko #:

речь о всех значениях типа, а не массива

Пример из жизни MQL5 EA.

 
fxsaber #:

Перебор всех сделок.

   for(uchar c = 2; (bool)c--; )
   Print("c = ",c);

Результат:

Значение 2 пропущено.

 
fxsaber #:

Пример из жизни MQL5 EA.

да, для массива пример рабочий

 
Nikolai Semko #:

в любом цикле всегда минимум одна проверка

Вот самый короткий способ полного перебора типа uchar:

Работает, спасибо.

 
Nikolai Semko #:

да, для массива пример рабочий

Там несколько тоньше.

ulong HistoryDealGetTicket( int ) { return(0); } // Перегрузка в каком-нибудь далеком mqh.

void OnStart()
{      
  if (HistorySelect(0, INT_MAX))
  {
    for (uint i = HistoryDealsTotal(); (bool)i--; ) // Хорошо - потенциальная перегрузка не сломает результат.
      Print(HistoryDealGetTicket(i));
      
    for (int i = HistoryDealsTotal() - 1; i >= 0; i--) // Классика - плохо из-за потенциальной перегрузки.
      Print(HistoryDealGetTicket(i));
  }
}
Причина обращения: