Общие вопросы по разработке > Как выяснить причину вызова метода OnUpdate

Общие вопросы по разработке в Альфа-Директ 4. Обсуждение разработки пользовательских индикаторов, стратегий.
Rusik72
Сообщения: 5
Зарегистрирован: 15 дек 2020, 10:43
Поблагодарили: 1 раз

Как выяснить причину вызова метода OnUpdate

Непрочитанное сообщение Rusik72 » 15 дек 2020, 14:01

Добрый день!
Как из метода OnUpdate отличить причину его вызова:
1. Перезапуск робота
2. Новый расчетный бар

Аватара пользователя
evge
Администратор
Сообщения: 1807
Зарегистрирован: 04 фев 2016, 09:46
Откуда: Млечный путь, планета Земля
Благодарил (а): 83 раза
Поблагодарили: 361 раз
Контактная информация:

Re: Как выяснить причину вызова метода OnUpdate

Непрочитанное сообщение evge » 15 дек 2020, 15:49

Добрый день!

Через глобальную переменную, где можно сохранить дату и время предыдущего бара.

Пример

Код: Выделить всё

function Initialize()
{
   StrategyName = "test";
   AddParameter("P1", 0, "", 1);
   AddInput("Input1", Inputs.Candle, 1, true, "GAZP=МБ ЦК");
   LongLimit = 10;
   ShortLimit = -10;
   AddGlobalVariable("BT", Types.DateTime, DateTime.Now);
}

function OnUpdate()
{
   if (BT != BarDate(0) + BarTime(0))
   {
      ShowMessage("Это уже другой (новый) бар!");
   }

   BT = BarDate(0) + BarTime(0);
}


Здесь только первый запуск робота сработает сразу, последующие перезапуски робота не будут вызывать ShowMessage("123"). Сработает он только при появлении нового бара (с другим дата + время) или при повторном запуске робота, но уже на другом баре.

Проверено на роботе-советнике
никогда такого не было и вот опять

Rusik72
Сообщения: 5
Зарегистрирован: 15 дек 2020, 10:43
Поблагодарили: 1 раз

Re: Как выяснить причину вызова метода OnUpdate

Непрочитанное сообщение Rusik72 » 15 дек 2020, 20:00

Спасибо. То,что нужно.


Вернуться в «Общие вопросы по разработке»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 17 гостей