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

Счетчик

Добавлено: 13 апр 2016, 21:46
Alex
Здравствуйте! Помогите создать счетчик в индикаторе, надо чтоб значение переменной каждый раз при вызове Evaluate увеличивалось на единицу. Пробую так:

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

function Initialize()
{
   IndicatorName = "Test";   
   PriceStudy = true;
   AddInput("Input", Inputs.Price);
   AddSeries("Test", DrawAs.Custom, Color.Black);
        AddGlobalVariable("counter", Types.Int, -1);
}

function Evaluate()
{
   ShowMessage((++counter).ToString());
}


ерунда получается...

Re: Счетчик

Добавлено: 13 апр 2016, 22:21
evge
Увеличивается счетчик, всё ок, это видно на гистограмме. Вопрос только в том "сколько раз за одну свечу?" :)

Единственный момент, он увеличивается только в рамках одной перерисовки графика. Если подвигать график или просто дождаться движения цены происходит перерисовка графика и переинициализация индикатора, а с ним и глобальной переменной и он начинает считать её снова с 0. Точка отсчета при этом может быть разной. Странное конечно поведение, но это давно заметил уже.

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

function Initialize()
{
   IndicatorName = "Test";   
   PriceStudy = false;
   AddInput("Input", Inputs.Price);
   AddSeries("Test", DrawAs.Custom, Color.Black);
        AddGlobalVariable("counter", Types.Int, -1);
}

function Evaluate()
{
   counter++;
      Test = counter;
   Test.DrawHistogram();
}


результат 2 скриншота графика. Чуть измененный размер окна графика с перерисовкой индикатора и новой точкой отсчета (почему?):

counter-01.png
Первоначальная гистограмма = 646
counter-01.png (24.27 КБ) 23469 просмотров

counter-02.png
Изменилась цена и перерисовалась гистограмма = 116
counter-02.png (23.8 КБ) 23469 просмотров

Re: Счетчик

Добавлено: 13 апр 2016, 22:22
evge
Конечно это странное поведение АД4.

Почему в первом случае насчитало 646, а во втором 116 точек - это вопрос!?

Возможно и замедление работы АД4 при работе с графиком могут быть связаны и с этим тоже.

Re: Счетчик

Добавлено: 13 апр 2016, 22:29
evge
Ещё пример

вот 34 свечки, а счетчик насчитал 212, это значит примерно 6 раз за свечу вызвалось evaluate()

если предположить что на первой свече было 0 (~6), на гистограмме похоже так и есть.

counter-03.png
counter-03.png (13.93 КБ) 23464 просмотра

Re: Счетчик

Добавлено: 13 апр 2016, 23:29
Alex
evge писал(а):Странное конечно поведение, но это давно заметил уже.


Вот и я про тоже)) Не совсем понятна логика, какие то лишние движения получаются(повторная инициализация). evge, спасибо за консультацию.

Re: Счетчик

Добавлено: 14 апр 2016, 06:52
evge
На самом деле ошибки в количестве нет,

есть невнимательность моя!!!

Шкала гистограммы начинается, в случае первого скриншота, от ~550 и растет до 646
646 - 550 = 96

на втором графике шкала гистограммы уже от 0,

но видно, что первый столбик выше 0, итоговое значение 116

значит они примерно равны и равны количеству свечей видимой области графика.

В последнем (скриншоте) примере аналогично:

Шкала начинается от 180 и максимум на отметке 212
разница 212-180 = 32, что примерно равно количеству свечей.

Вопрос остался только в том, почему при изменении цены или другого сигнала перерисовки графика отсчет может изменится с другой точки истории? Примером служат первые 2 скриншота

Re: Счетчик

Добавлено: 14 апр 2016, 14:27
Alex
evge писал(а):Вопрос остался только в том, почему при изменении цены или другого сигнала перерисовки графика отсчет может изменится с другой точки истории? Примером служат первые 2 скриншота


У меня из-за этого не получается на текущем фрейме нарисовать индикатор со старшего фрейма... Не пойму откуда и когда пересчитывать начинает данные и + все глобальные переменные возвращаются в исходное значение.

Re: Счетчик

Добавлено: 15 апр 2016, 08:46
evge
Alex писал(а):У меня из-за этого не получается на текущем фрейме нарисовать индикатор со старшего фрейма... Не пойму откуда и когда пересчитывать начинает данные и + все глобальные переменные возвращаются в исходное значение.


Зачем Вам начало отсчета?
Посмотрите на мой пример наложения данных вышестоящего ТФ,
он пока ещё не идеален, но работает для М1 ТФ можно применить поверх расчет вышестоящего ТФ. Там не применяется понятие "начало отсчета", там применяется определение начала отсчета вышестоящего ТФ к текущему путем фрагментации.

Re: Счетчик

Добавлено: 15 апр 2016, 10:00
Alex
evge писал(а):Зачем Вам начало отсчета?
Посмотрите на мой пример наложения данных вышестоящего ТФ,
он пока ещё не идеален, но работает для М1 ТФ можно применить поверх расчет вышестоящего ТФ. Там не применяется понятие "начало отсчета", там применяется определение начала отсчета вышестоящего ТФ к текущему путем фрагментации.


evge, не пробовали zz или машку со старшего фрейма рисовать на текущем? Может есть какая наработка...

Re: Счетчик

Добавлено: 15 апр 2016, 10:49
evge
Alex писал(а):evge, не пробовали zz или машку со старшего фрейма рисовать на текущем? Может есть какая наработка...


после моего ответа выше, я доработал немного BarFrame и выложил там код версии 2, где можно использовать серии OHLC в другие индикаторы на вход. Как пример показал для SMA в той теме

попробуйте для других индикаторов на вход подать CL от BarFrame.

Вообще BarFrame я делал как пример того как можно найти точки вышестоящих баров на графике. Всё это усложняется различными отклонениями типа клирингов и пауз торгов.

Индикатор является примером как это можно сделать. Т.е. скажем так - это подсказка :). Пока сам терминал этого не позволяет можно "извращаться" так :)