Тоже мне, бином Ньютона.
int nTimer1 = 0; int nTimer2 = 0; int OnInit() { EventSetTimer(1); } void OnTimer() { if(nTimer1 >= 5) { // обработчик 5-секундного таймера ... nTimer1 = 0; } if(nTimer2 >= 7) { // обработчик 7-секундного таймера ... nTimer2 = 0; } nTimer1++; nTimer2++; }
Тоже мне, бином Ньютона.
Я понимаю, что Вы умный.. запараллелить никак? У меня таймер в ms, каждые 100... задержки по 6 сек в минуту... при таком подходе.
input int timer=100; //Main timer in ms
input int watchdog_timer=1; //WatchDog in minutes
int watchdog=watchdog_timer*60*1000;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
if(watchdog <= 0)
_init=INIT_FAILED;
//--- create timer
EventSetMillisecondTimer(timer);
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Timer function |
//+------------------------------------------------------------------+
void OnTimer()
{
//---
watchdog-=timer;
if(watchdog <= 0)
{
watchdog=watchdog_timer*60*1000;
}
}
Я понимаю, что Вы умный.. запараллелить никак? У меня таймер в ms, каждые 100... задержки по 6 сек в минуту... при таком подходе.
У меня таймер в ms, каждые 100... задержки по 6 сек в минуту... при таком подходе.
Это — смотря что там внутри делать.. Можно и за один вызов 6 секунд что-то считать )
Хорошо, что уже решили.
Matvey Alekseev:
Решил вопрос, спасибо!
Решили ? - выкладывайте решение в шапку своей темы.
Или типо никому не дам?
Всем привет!
Есть у кого мысли по поводу реализации двух таймеров в одном советнике? (с разными таймингами соответственно)
набросал интерфейс, имплементацию может сделать сами :-)
/** Интервальный таймер
вариант использования:
class MyTimer: public Timer {
MyTimer(int period,datetime startTime=0):Timer(period,startTime) {
Print("MyTimer created");
}
~MyTimer() {
Print("MyTimer destroyed");
}
bool Clock() {
Print("MyTimer clock");
}
}
TimeService *ts = new TimeService;
MyTimer *new MyTimer(5,TimeCurrent()+5*60); // таймер вызывать раз в 5 сек, начиная с "через 5 мин"
ts.Add(MyTimer);
EventSetTimer(2);
...
void OnTick() {
if ( ((long)(TimeCurrent())%2)==0 ) ts.Clock();
}
void OnTimer() {
ts.Clock()
}
**/
class Timer {
public:
Timer(int period,datetime startTime=0); // должен срабатывать с периодичностью period начиная со startTime (по умолч.прям сразу)
~Timer();
virtual bool Clock(); // будет вызван при истечении period, если вернёт false то след.вызова не будет
public:
int period; // периодичность таймера
datetime startTime; // время начала работы
datetime shedTime; // время след. запланированного вызова (устанавливается службой)
Timer *next; // след. таймер в списке таймеров службы
TimeService *ts; // служба таймеров
};
/* служба таймеров - держит список таймеров и по мере необходимости их вызывает
по идее хватит и одной службы на всё, но можно делать несколько
*/
class TimeService {
public:
TimeService();
~TimeService();
virtual void Clock();// должен вызываться при каждом удобном случае
bool Add(Timer &); // добавить таймер
bool Del(Timer &); // удалить таймер
public:
Timer *first; // список таймеров сорт. по времени вызова (shedTime)
datetime now; // последнее известное время (время вызова Clock)
};
Решили ? - выкладывайте решение в шапку своей темы.
Или типо никому не дам?
int watchdog=1;
int minute_new=0;
void OnTimer()
watchdog=1;
//+------------------------------------------------------------------+
пс:админы верните назад форматирование нормальное или руки оторвите вашим вебам, код невозможно нормально вставить и оформить... постоянно пустые строки - бред...

- www.mql5.com

- 2016.07.29
- Maxim Kuznetsov
- www.mql5.com
int minute_new=0;
void OnTimer()
watchdog=1;
//+------------------------------------------------------------------+
Как-то не видно двух таймеров...
Хотя, если додумать, то получаем то, что дал Sergei Vladimirov сразу же в очень доходчивой форме. Но его в итоге зафукали, потом подумали и выдали его же решение как свое.

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Всем привет!
Есть у кого мысли по поводу реализации двух таймеров в одном советнике? (с разными таймингами соответственно)