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

Вопрос к evge

Добавлено: 21 июл 2017, 20:26
Den
Конкретно вопрос к evge, поскольку наврядли кто еще сможет подсказать.

Итак, как отметить сигнал индикатора в том месте,где он появился ВНУТРИ БАРА [0].

То есть фактически это GetValue(Last)

Re: Вопрос к evge

Добавлено: 21 июл 2017, 21:44
evge
Это невозможно на текущий момент.

Попробую объяснить, может у меня получится донести.

Представьте график с барами.

Как будет работать отрисовка индикатора на таком графике?

0. Инициализируются параметры индикатора, глобальные переменные.

1. Берется бар очень далеко слева с текущим индексом (допустим 0) (CurrentIndex).
2. Данные этого бара передаются в индикатор под индексом серии 0, т.е. индикатор будет думать что этот далекий в истории бар имеет индекс 0 в серии!!! (это не тоже самое что CurrentIndex)
3. Для индикатора бар с индексом [1] (или -1 кому как удобно) [2] [3] и т.д. это бары которые были до него.
4. Все эти бары имеют только OHLC, Volume, VolumeBid, VolumeAsk, OpenInterest. Никаких данных внутри бара в этом отрисованном очень давно баре НЕТ
5. Для этого бара с индексом 0 выполняется код из Evaluate(), в котором вы естественно можете обратится к предыдущим данным истории указывая смещение назад [1..N] относительно этого бара.
6. Выбирается следующий бар из далекой истории с текущим индексом (CurrentIndex) больше на 1 и всё повторяется с пункта 2.
7. И так до самого последнего (свежего) бара на графике, на котором все действие и закончится.

Что происходит, когда последний бар ещё не отрисовался и меняется?

А происходит всё тоже самое, но с пункта 0, при каждом изменении активного последнего бара. При этом индикатор заново переинициализируется и глобальные переменные очищаются. Это важно, т.к. обратиться при каждом изменении последнего бара к данным глоб. переменных не получится, каждый раз при изменении последнего (рисующегося) бара на графике они будут инициализированы заново.

Поэтому и не получится применить идею сохранения от активного (последнего) бара сигналов куда-то в DoubleList, IntList глоб. переменные и затем по ним на график в истории отрисовать сигналы.

Что бы такую идею реализовать надо суперглобальные переменные индикатора, которые непереинициализируется (не очистятся) после повторной перерисовки индикатора. Но такого в АД4 нет.

Разве что можно реализовать идею через работу с файлами для хранения сигналов :)

Re: Вопрос к evge

Добавлено: 21 июл 2017, 22:18
Den
Это в общем-то было понятно. Думал может есть какие-нибудь программные методы.
Задача-то по сути несложная.
Неудобство визуальное вызывает тот факт, что он выставляет сигнал не всегда там, где он появляется.
Сейчас Last можно получить только в одном случае - Input.Close[0]