Библиотеки: AccurateTimer - страница 2

 
Maxim Kuznetsov:

всё упомянутое - разные таймеры. На нагруженной машине расхождения будут существенны и естественны

С бибилиотекой расхождений не будет.

 
Maxim Kuznetsov:

всё упомянутое - разные таймеры. На нагруженной машине расхождения будут существенны и естественны

В чем противоречие?

Чтобы убрать эти "естественные" расхождения и была написана библиотека.

 
Andrey Khatimlianskii:

В чем противоречие?

Чтобы убрать эти "естественные" расхождения и была написана библиотека.

они измеряют разные вещи..
 
Maxim Kuznetsov:
они измеряют разные вещи..

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

Но расхождения познаются в сравнении. Возьмите секундный таймер или 100 мс. И посмотрите, какие будут различия опять же с эталоном через 3600 "секунд" эталона и 3600 "секунд" таймера.

 
Maxim Kuznetsov:
они измеряют разные вещи..

Какая разница, что они измеряют?

Есть задача - каждые Х мс выполнять действие, и с помощью обычного таймера это сделать не удастся из-за особенностей его реализации.

Библиотека позволяет закрыть этот пробел.

 
Andrey Khatimlianskii:

Какая разница, что они измеряют?

Есть задача - каждые Х мс выполнять действие, и с помощью обычного таймера это сделать не удастся из-за особенностей его реализации.

Библиотека позволяет закрыть этот пробел.

Да ладно  :) Сначала придумают себе проблему, потом её героически решают. Нет такой задачи. 

 
Rashid Umarov:

Да ладно  :) Сначала придумают себе проблему, потом её героически решают. Нет такой задачи. 

Ну, нет так нет


 
После обновления будет доступно

Frame-режим

Советники в режиме сбора фреймов результатов Оптимизации игнорируют следующие штатные события обычной работы советника: Init, Deinit, NewTick, Trade, TradeTransaction, BookEvent и Timer. Рабочим событием остается только ChartEvent.

Однако, данная библиотека может включить таймер и в этом режиме работы советника, для этого перед вызовом библиотеки нужно прописать следующую строку

#define ACCURATETIMER_FRAME_MODE // Делает рабочим таймер советников, работающих во Frame-режиме

Учитывайте, что в исходном советнике должен быть прописан OnChartEvent (даже пустой), и на OnTimer начинает распространяться соответствующая Frame-уязвимость.

Пример такого советника приложен

// Демонстрация работы таймера советника во Frame-режиме

#define ACCURATETIMER_FRAME_MODE // Делает рабочим таймер советников, работающих во Frame-режиме 
#include <AccurateTimer.mqh>     // Повышение точности штатного таймера

sinput uint Range = 1; // Входной параметр для Оптимизации

#define SETRANGE(A, START, STEP, END) ParameterSetRange(#A, true, A, START, STEP, END)

void OnTesterInit() { SETRANGE(Range, 0, 1, Range); }

void OnTesterDeinit() { EventSetTimer(1); } // В конце Оптимизации установили таймер

// Учитывайте Frame-уязвимость! - https://www.mql5.com/ru/forum/170952/page71#comment_6626688
void OnChartEvent( const int id, const long& lparam, const double& dparam, const string& sparam ) {}
void OnTimer()
{
  static const bool IsFrame = MQLInfoInteger(MQL_FRAME_MODE);
  
  if (IsFrame)
    Print("Hello World!");
}
 

fxsaber:

Frame-режим

Советники в режиме сбора фреймов результатов Оптимизации игнорируют следующие штатные события обычной работы советника: InitDeinitNewTickTradeTradeTransactionBookEvent и Timer. Рабочим событием остается только ChartEvent.

Имхо, частично правильное утверждение. Обсуждалось.

 
Dennis Kirichenko:

Имхо, частично правильное утверждение. Обсуждалось.

Не заметил частичности. Все, как сказал.

Причина обращения: