Страница 1 из 1

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

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

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

Добавлено: 15 дек 2020, 15:49
evge
Добрый день!

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

Пример

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

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"). Сработает он только при появлении нового бара (с другим дата + время) или при повторном запуске робота, но уже на другом баре.

Проверено на роботе-советнике

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

Добавлено: 15 дек 2020, 20:00
Rusik72
Спасибо. То,что нужно.