Как нарисовать зиг-заг без использования функции SetIndexStyle() ?

 

Вот в общем-то я уже догнал то, что мне нужно для того, чтоб написать код, который болтался на фоне у меня около недели, но как начал переписывать очередной раз в процессе оптимизации я понял, что есть нюансы.

Обычно я создавал массив, далее делал его буфером и добавлял ему свойство рисовать что-либо. Типа так:

double g_ZZPriceBuf[];                              // Буфер цен экстремумов
SetIndexBuffer(0, g_ZZPriceBuf);  
SetIndexStyle(0, DRAW_SECTION);

Но хочу реализовать эту задачу иначе. Без использования этих стандартных свойств индикатора. Всё понятно в общем, но как будет происходить отрисовка.. вопрос. Подскажите, пожалйста, как это вообще делается? Я смотрел в сторону ObjectCreate, но там, как я понял, не подобного типа построения, чтобы рисовать линии ломаные.

 
hoz:

Я смотрел в сторону ObjectCreate, но там, как я понял, не подобного типа построения, чтобы рисовать линии ломаные.

Скажу больше - даже если реализуете через ObjectCreate() (OBJ_TREND в помощь), то чтобы получить данные индикатора через iCustom() придётся скидывать их всё равно в буфер , вобщем гемор ещё тот будет...

А смысл какой?  Почему хотите отказаться от отрисовки через буфер , в чём причина?

 
Sergey Kolemanov:

Скажу больше - даже если реализуете через ObjectCreate() (OBJ_TREND в помощь), то чтобы получить данные индикатора через iCustom() придётся скидывать их всё равно в буфер , вобщем гемор ещё тот будет...

А смысл какой?  Почему хотите отказаться от отрисовки через буфер , в чём причина?

Например, если код индюка перекину в торговый эксперт или ещё что-нить. Вариантов много же. Не хочется привязываться к чему-то..

 
hoz:

Например, если код индюка перекину в торговый эксперт или ещё что-нить. Вариантов много же. Не хочется привязываться к чему-то..

Ну так если индикатор рассчитывать в  эксперте то и отрисовка необязательна, данные Вы ведь рассчитываете для торговли а не для того чтоб на них смотреть. Для того чтоб смотреть и анализировать есть индикатор и здесь оптимальнее всего делать отрисовку через буфер.

 
Sergey Kolemanov:

Ну так если индикатор рассчитывать в  эксперте то и отрисовка необязательна, данные Вы ведь рассчитываете для торговли а не для того чтоб на них смотреть. Для того чтоб смотреть и анализировать есть индикатор и здесь оптимальнее всего делать отрисовку через буфер.

Получится тогда странный подход. Индюк рисует.. ресурсы, тоже самое в индюке, только буфер уже не буфер, а массив, без пустых значений - те же ресурсы. Получится часть ресурсов будет в холостую расходоваться. Это разве нормально?

 
hoz:

Получится тогда странный подход. Индюк рисует.. ресурсы, тоже самое в индюке, только буфер уже не буфер, а массив, без пустых значений - те же ресурсы. Получится часть ресурсов будет в холостую расходоваться. Это разве нормально?

Можно сделать следующим образом. В советнике рассчитать нужные экстремумы ZZ (их обычно требуется немного - десяток последних, может, два). Эти значения можно отобразить при помощи трендовых линий. В итоге не будет лишнего потребления ресурсов. А отобразить десяток-другой графических объектов - не проблема для современной техники.

 
hoz:  Получится тогда странный подход. Индюк рисует.. ресурсы, тоже самое в индюке, только буфер уже не буфер, а массив, без пустых значений - те же ресурсы. Получится часть ресурсов будет в холостую расходоваться. Это разве нормально?

Любой подход всегда странный с какой-либо стороны. Индикатор рисует, а Вы хотите затратить время на программирование его работы из советника. Похоже на попытку изобрести велосипед. В советнике нужны лишь расчеты пары последних вершин - и все. И то лучше iCustom()

 
STARIJ:

Любой подход всегда странный с какой-либо стороны. Индикатор рисует, а Вы хотите затратить время на программирование его работы из советника. Похоже на попытку изобрести велосипед. В советнике нужны лишь расчеты пары последних вершин - и все. И то лучше iCustom()

Не всегда лучше. Иногда гораздо хуже.