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

Один раз

Добавлено: 05 июл 2017, 16:39
Владимир Валерьевич
Кто знает как, задать условие в индикаторе, чтобы выполнялось один раз?
Код ниже не работает:

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

function Initialize()
{...
AddGlobalVariable("LastBarIndex", Types.Int, 0);
}

function Evaluate()
{
if ((CurrentIndex != LastBarIndex)  && (CurrentIndex == MaxIndex) )
   { ...
   LastBarIndex = CurrentIndex;
   }

}

Re: Один раз

Добавлено: 05 июл 2017, 17:02
Alexey

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

function Initialize()
{...
AddGlobalVariable("OnInitialize", Types.Boolean, false);
}

function Evaluate()
{
if (!OnInitialize)
   { ...
   OnInitialize = true;
   }

}

Re: Один раз

Добавлено: 05 июл 2017, 17:05
evge

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

function Initialize()
{...
AddGlobalVariable("First", Types.Boolean, true);
}

function Evaluate()
{
if ( First )
   { ...
   First = false;
   }

}

Re: Один раз

Добавлено: 05 июл 2017, 17:06
evge
Alexey, почти сошлись мысли :)

Re: Один раз

Добавлено: 05 июл 2017, 17:19
Alexey
evge писал(а):Alexey, почти сошлись мысли :)

:)

Re: Один раз

Добавлено: 05 июл 2017, 23:01
Владимир Валерьевич
Некорректно задал вопрос.
Нужно, чтобы условие выполнилось один раз на свечке.
Проверка if (Input.Open==Input.Close) тоже не срабатывает

Re: Один раз

Добавлено: 06 июл 2017, 04:13
Den
а если нужное условие будет уже после однократного срабатывания Evaluate() на свече , вы его пропустите ?

Re: Один раз

Добавлено: 06 июл 2017, 14:26
Владимир Валерьевич
Den писал(а):а если нужное условие будет уже после однократного срабатывания Evaluate() на свече , вы его пропустите ?

function Initialize()
{...}
function Evaluate()
{...}
срабатывают каждый раз при изменении цены. А мне необходимо, чтобы часть расчета в индикаторе срабатывала один раз на свечке (можно два-три :) - не критично). Это как в роботе, только не в конце, а вначале формирования свечи.
Проверка if (Input.Open==Input.Close), почему-то не срабатывает, даже если цена стоит на месте.

Re: Один раз

Добавлено: 06 июл 2017, 14:47
Alexey
Владимир Валерьевич писал(а):Некорректно задал вопрос.
Нужно, чтобы условие выполнилось один раз на свечке.
Проверка if (Input.Open==Input.Close) тоже не срабатывает


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

function Initialize()
{...
AddGlobalVariable("PrevIndex", Types.Int, -1);
}

function Evaluate()
{
if (PrevIndex != CurrentIndex)
   { ...
   PrevIndex = CurrentIndex;
   }

}

Re: Один раз

Добавлено: 06 июл 2017, 14:57
Владимир Валерьевич
Alexey писал(а):

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

function Initialize()
{...
AddGlobalVariable("PrevIndex", Types.Int, -1);
}

function Evaluate()
{
if (PrevIndex != CurrentIndex)
   { ...
   PrevIndex = CurrentIndex;
   }

}


Увы. Цена изменилась, "PrevIndex" сбросился на -1.