Общие вопросы по разработке > Счетчик

Общие вопросы по разработке в Альфа-Директ 4. Обсуждение разработки пользовательских индикаторов, стратегий.
Alex
Сообщения: 15
Зарегистрирован: 18 мар 2016, 13:47

Счетчик

Непрочитанное сообщение Alex » 13 апр 2016, 21:46

Здравствуйте! Помогите создать счетчик в индикаторе, надо чтоб значение переменной каждый раз при вызове 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());
}


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

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

Re: Счетчик

Непрочитанное сообщение evge » 13 апр 2016, 22:21

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

Единственный момент, он увеличивается только в рамках одной перерисовки графика. Если подвигать график или просто дождаться движения цены происходит перерисовка графика и переинициализация индикатора, а с ним и глобальной переменной и он начинает считать её снова с 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 КБ) 8858 просмотров

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

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

Re: Счетчик

Непрочитанное сообщение evge » 13 апр 2016, 22:22

Конечно это странное поведение АД4.

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

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

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

Re: Счетчик

Непрочитанное сообщение evge » 13 апр 2016, 22:29

Ещё пример

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

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

counter-03.png
counter-03.png (13.93 КБ) 8853 просмотра
никогда такого не было и вот опять

Alex
Сообщения: 15
Зарегистрирован: 18 мар 2016, 13:47

Re: Счетчик

Непрочитанное сообщение Alex » 13 апр 2016, 23:29

evge писал(а):Странное конечно поведение, но это давно заметил уже.


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

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

Re: Счетчик

Непрочитанное сообщение evge » 14 апр 2016, 06:52

На самом деле ошибки в количестве нет,

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

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

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

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

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

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

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

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

Alex
Сообщения: 15
Зарегистрирован: 18 мар 2016, 13:47

Re: Счетчик

Непрочитанное сообщение Alex » 14 апр 2016, 14:27

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


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

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

Re: Счетчик

Непрочитанное сообщение evge » 15 апр 2016, 08:46

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


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

Alex
Сообщения: 15
Зарегистрирован: 18 мар 2016, 13:47

Re: Счетчик

Непрочитанное сообщение Alex » 15 апр 2016, 10:00

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


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

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

Re: Счетчик

Непрочитанное сообщение evge » 15 апр 2016, 10:49

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


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

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

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

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


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

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

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