Особенности языка mql5, тонкости и приёмы работы - страница 52

 
Alexey Navoykov:
Подправьте код, у вас там в первой функции цифра 5 вместо DealsNum.  Да и проверка на INT_MAX лишена смысла

Спасибо подправил. Проверка на INT_MAX  - если без входных параметров, то советник не тормознется, при этом не будет вызываться расточительная HistorySelect.

 
Ордера в таблице истории отсортированы по времени выставления (не исполнения/отмены). Учитывайте это обстоятельство при вызовах HistorySelect.
 
fxsaber:
Ордера в таблице истории отсортированы по времени выставления (не исполнения/отмены). Учитывайте это обстоятельство при вызовах HistorySelect.

К этому хорошо бы было добавить как обстоит дело со сделками и позициями - чтобы полная картина была.

 
Artyom Trishkin:

К этому хорошо бы было добавить как обстоит дело со сделками и позициями - чтобы полная картина была.

С позициями никак - их в Истории нет. А со сделками однозначно - там только одно время DEAL_TIME.

 
fxsaber:

С позициями никак - их в Истории нет. А со сделками однозначно - там только одно время DEAL_TIME.

Да, но позиции есть в списке текущих.

 
Artyom Trishkin:

Да, но позиции есть в списке текущих.

Прошу пояснить, совсем не понял.

 
fxsaber:

Прошу пояснить, совсем не понял.

PositionsTotal() на хэджевом счёте что вернёт? Количество позиций. Они же в каком-то списке находятся. А сортированы они как? Я вот об этом гооворил.

 
Artyom Trishkin:

PositionsTotal() на хэджевом счёте что вернёт? Количество позиций. Они же в каком-то списке находятся. А сортированы они как? Я вот об этом гооворил.

Понял. Этот момент для себя не прояснял, т.к. не столкнулся с ситуацией, где может быть нужно.

 

В первом проходе пачки заданий Агента (например, при одиночном прогоне тестера) время между запуском советника и первым NewTick-событием может занимать несколько секунд. На следующих проходах пачки это время нулевое.

Последний проход пачки заданий Агент выполняет до 10% дольше, чем предыдущие.

 
// Перемещение папки. Описание такое же, как у FileMove - https://www.mql5.com/ru/docs/files/filemove
bool FolderMove( const string FolderNameSrc, const string FolderNameDst, const int Common_Flag = 0, const int Mode_Flags = FILE_REWRITE )
{
  if (FolderNameSrc == FolderNameDst)
    return(false);

  string FileName;
  const long handle = ::FileFindFirst(FolderNameSrc + "\\*", FileName, Common_Flag);

  bool Res = false;

  if (handle != INVALID_HANDLE)
  {
    do
    {
      const string TmpFileNameSrc = FolderNameSrc + "\\" + FileName;
      const string TmpFileNameDst = FolderNameDst + "\\" + FileName;

      if (::FileIsExist(TmpFileNameSrc, Common_Flag))
        Res = ::FileMove(TmpFileNameSrc, Common_Flag, TmpFileNameDst, Mode_Flags);
      else
      {
        const string TmpFileNameSrc2 = ::StringSubstr(TmpFileNameSrc, 0, ::StringLen(TmpFileNameSrc) - 1);
        const string TmpFileNameDst2 = ::StringSubstr(TmpFileNameDst, 0, ::StringLen(TmpFileNameDst) - 1);

        if (!FolderMove(TmpFileNameSrc2, TmpFileNameDst2, Common_Flag, Mode_Flags))
          Res = ::FolderCreate(TmpFileNameDst2, Mode_Flags & FILE_COMMON);
      }
    }
    while (::FileFindNext(handle, FileName));

    ::FileFindClose(handle);
  }

  return(::FolderDelete(FolderNameSrc, Common_Flag) && Res);
}
Документация по MQL5: Файловые операции / FileMove
Документация по MQL5: Файловые операции / FileMove
  • www.mql5.com
Файловые операции / FileMove - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
Причина обращения: