Обсуждение статьи "Тип рисования DRAW_ARROW в мультисимвольных мультипериодных индикаторах"

 

Опубликована статья Тип рисования DRAW_ARROW в мультисимвольных мультипериодных индикаторах:

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

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

Стрелочные индикаторы подразумевают не постоянное наличие данных в их рисуемом буфере. Там, где отображается стрелка — там есть значение в буфере, тогда как в остальные моменты времени в буфере находится пустое значение, установленное для него. Обычно это EMPTY_VALUE, но для буфера возможно установить любое значение, которое будет "пустым", и не будет отображаться на графике. Сделать это можно при помощи функции

PlotIndexSetDouble(buffer_index,PLOT_EMPTY_VALUE,empty_value);

где buffer_index — это индекс буфера, которому устанавливается пустое значение, а empty_value — величина "пустого значения", которое будет установлено для этого буфера.

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

Поясню на примере. На изображении графика М5 помечены бары графика М15:


Здесь мы видим фракталы графика М5, которые необходимо установить на бары графика М15.

Автор: Artyom Trishkin

 

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

А я возьми и напиши ему: "Почему бы не юзать фракталы с М5 на М15". Такая история.

 
Vitaliy Kuznetsov #:

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

А я возьми и напиши ему: "Почему бы не юзать фракталы с М5 на М15". Такая история.

Фрактал не может быть быстрым или медленным в принципе :)

Пока не сформируется два бара от вершины - фрактала нет, вернее что-то есть, но это не фрактал


 
Vitaly Muzichenko #:

Фрактал не может быть быстрым или медленным в принципе :)

Пока не сформируется два бара от вершины - фрактала нет, вернее что-то есть, но это не фрактал


Артем, вставил вашу панель в эксперта, скажите, а что нужно сделать что бы она работала в тестере на визуальном тестировании ?

 
Konstantin Seredkin #:

Артем, вставил вашу панель в эксперта, скажите, а что нужно сделать что бы она работала в тестере на визуальном тестировании ?

Ответ зависит от того, что Вам нужно видеть на панели при визуальном тестировании.

 
Artyom Trishkin #:

Ответ зависит от того, что Вам нужно видеть на панели при визуальном тестировании.

Ну вот к примеру вашь эксперт из прошлых статей TestTrendADX, если его запустить на визуале, данные отображаются только по инициализации, далее ничего не отображается.


 


Если вот так сделать, данные текущего бара и дан6ные индикатора начинают отображаться

//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
//--- Выводим на панель данные текущего бара
   DrawData(0,TimeCurrent());
  }



Только вот не знаю правильно  это я делаю или нет

 
Konstantin Seredkin #:

Ну вот к примеру вашь эксперт из прошлых статей TestTrendADX, если его запустить на визуале, данные отображаются только по инициализации, далее ничего не отображается.


 


Если вот так сделать, данные текущего бара и дан6ные индикатора начинают отображаться



Только вот не знаю правильно  это я делаю или нет

Проблема в том, что в советниках в визуальном режиме тестера не работает OnChartEvent(), в индикаторах работают только события клика мышки по графику. В тестовых индикаторах, про которые Вы говорите, на панели отображаются данные под курсором мышки. Т.е. программа отслеживает расположение курсора и отправляет данные на панель с того бара, который находится под курсором. В визуальном режиме тестера Вам нужно щёлкнуть мышкой по бару, с которого нужно получить данные на панели. Ну или получать данные в OnTick(), но только с текущего бара, как это сделали Вы.

 
Artyom Trishkin #:

Проблема в том, что в советниках в визуальном режиме тестера не работает OnChartEvent(), в индикаторах работают только события клика мышки по графику. В тестовых индикаторах, про которые Вы говорите, на панели отображаются данные под курсором мышки. Т.е. программа отслеживает расположение курсора и отправляет данные на панель с того бара, который находится под курсором. В визуальном режиме тестера Вам нужно щёлкнуть мышкой по бару, с которого нужно получить данные на панели. Ну или получать данные в OnTick(), но только с текущего бара, как это сделали Вы.

Все разобрался, перечитал первую тему.

По сути для вывода своей информации в панель, мне нужен только обработчик событий и вызов DrawData()  В OnTick() и все работает.

Спасибо, давно искал максимально простую панель, для вывода в нее отладочной информации, а то через Comment() почему то скорость тестирования на визуале падает в разы, через панельку скорость как будто и без нее тест. 

 
Konstantin Seredkin #:

Все разобрался, перечитал первую тему.

По сути для вывода своей информации в панель, мне нужен только обработчик событий и вызов DrawData()  В OnTick() и все работает.

Спасибо, давно искал максимально простую панель, для вывода в нее отладочной информации, а то через Comment() почему то скорость тестирования на визуале падает в разы, через панельку скорость как будто и без нее тест. 

Хорошо. Рад, что сами разобрались

 
Artyom Trishkin #:

Хорошо. Рад, что сами разобрались

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

Время еще не пришло ? просто смотрю темы по библиотеке закончились.

 
Konstantin Seredkin #:

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

Время еще не пришло ? просто смотрю темы по библиотеке закончились.

По библиотеке - по продолжению с графикой, пока приостановил разработку из-за неприятного бага, проявляющегося в периодичестком моргании скрытых частей объектов. Пока не выявлю причину, графику делать не стоит, чтобы не накопить ошибок. Но по остальным возможностям библиотеки скоро будет продолжение. А там и до примеров дойдёт.