Срабатывание советника через определенный интервал времени

23.01.2017 в 1:35
admin
Регистрация: 17.02.2011
Сообщений: 4489
Рейтинг: 2880

Искал по инету, но не нашел как сделать, чтобы советник в терминале срабатывал через определенные промежутки времени – через 1, например, 2, 3 минуты и так далее?

Автор: Roman7. Перенесено из Гостевой.

Поделиться в соц. сетях:
Ответов в теме: 4 Просмотров темы: 681

18.12.2013, в 22:00
Roman7
Регистрация: нет
Сообщений: 3
Рейтинг: 0
#1

Владислав, искал по инету, но не нашол как сделать, чтобы советник в терминале срабатывал через определенные промежутки времени – через 1, например, 2, 3 минуты и так далее

+ -
Цитировать Ответить

18.12.2013, в 22:09
admin
Регистрация: 17.02.2011
Сообщений: 4489
Рейтинг: 2880
#2

Глобально объявляем переменные:

extern int Interval = 1;   //период запуска советника, минуты 
datetime time;

в функцию init вставим строчку:

time = TimeCurrent();

в самом начале функции start напишем:

if ( TimeCurrent()-time < Interval*60 )
{
      return (0);
}
   time = TimeCurrent();

Вот и все.

+4 + -
Цитировать Ответить

18.12.2013, в 22:43
Roman7
Регистрация: нет
Сообщений: 3
Рейтинг: 0
#3

Спасибо !!!!!! Работает *YAHOO*

+ -
Цитировать Ответить

23.01.2017, в 01:46
admin
Регистрация: 17.02.2011
Сообщений: 4489
Рейтинг: 2880
#4

Есть еще вариант с событием по таймеру. Таймер для советника может быть только один.
Есть такое событие Timer, которое вызывает функцию:

OnTimer()
{
}

В этой функции мы будем размещать код советника.
Событие Timer генерируется с частотой, определенной в функции:

bool  EventSetTimer(
   int  seconds      // количество секунд
   );

которую следует вызывать из OnInit() (init() – по-старому) при инициализации:

int OnInit()
{
   int second = 60; //60 секунд. 1 раз в минуту
   EventSetTimer(second);
   /*
   остальной код инициализации
   */
   return(INIT_SUCCEEDED);
}
 
void OnTimer()
{
   /*
   код советника
   */
}

Таким образом, мы заставляем советника срабатывать через указанный нами в переменной second интервал времени.
Но следует помнить, что в режиме тестера события не работают:

Обработка событий Timer и ChartEvent в тестере стратегий не поддерживается.

+2 + -
Цитировать Ответить

Подписаться без комментирования