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

 

Ломаю мозг битый час. Пишу с нуля. Mql5 вижу впервые.

Ситуация. Пишу индикатор, который анализирует цены на заданном периоде; результат анализа - массив точек на графике, меньшего размера, чем массив данных по цене. В примерах по написанию индикаторов (например тут и тут) количество значений в рассчитываемом массиве совпадает с исходным массивом данных. Поэтому там нет заморочек с координатой по времени. А как быть? Двумерный массив, в котором в первой колонке время, а во второй - значения? Или отдельный массив делать? Как тогда он будет отображаться на графике?!

 Спасибо. 

 
kii:

Ломаю мозг битый час. Пишу с нуля. Mql5 вижу впервые.

Ситуация. Пишу индикатор, который анализирует цены на заданном периоде; результат анализа - массив точек на графике, меньшего размера, чем массив данных по цене. В примерах по написанию индикаторов (например тут и тут) количество значений в рассчитываемом массиве совпадает с исходным массивом данных. Поэтому там нет заморочек с координатой по времени. А как быть? Двумерный массив, в котором в первой колонке время, а во второй - значения? Или отдельный массив делать? Как тогда он будет отображаться на графике?!

 Спасибо. 

 

Вы бы свою идею в виде картинки что ли выложили бы...
 
AlexSTAL:
Вы бы свою идею в виде картинки что ли выложили бы...

Работа индикатора

Красная линия - линия, которая должна быть построена индикатором. Видно, что точек 7. У каждой есть координата (x,y): x - время, y - курс.

Соответственно массив данных по курсу для анализа (от 1 до 7-й точки) составляет ~80 "точек"-баров. А мой массив - всего 7.

Например, в одном из примеров (ссылка вверху) массив для отображения индикатором задается так:

double TSIBuffer[];

int OnInit(){

SetIndexBuffer(0,TSIBuffer,INDICATOR_DATA); }

 Соответственно тип  INDICATOR_DATA говорит, что данные массива TSIBuffer будут отображаться на графике. А теперь момент: график имеет две оси, а массив одну(как следует из его определения), но строит всё отлично, т.к. система каким образом понимает, что координаты по времени те же, что и в массиве цены.

Но в моем случае массив для отображения получается должен "иметь две строки": одну - для координаты по времени, и вторую - по курсу. Как сделать это?!

 
kii:

Красная линия - линия, которая должна быть построена индикатором. Видно, что точек 7. У каждой есть координата (x,y): x - время, y - курс.

Соответственно массив данных по курсу для анализа (от 1 до 7-й точки) составляет ~80 "точек"-баров. А мой массив - всего 7.

Например, в одном из примеров (ссылка вверху) массив для отображения индикатором задается так:

 Соответственно тип  INDICATOR_DATA говорит, что данные массива TSIBuffer будут отображаться на графике. А теперь момент: график имеет две оси, а массив одну(как следует из его определения), но строит всё отлично, т.к. система каким образом понимает, что координаты по времени те же, что и в массиве цены.

Но в моем случае массив для отображения получается должен "иметь две строки": одну - для координаты по времени, и вторую - по курсу. Как сделать это?!

На Вашей картинке нарисован стандартный ZigZag (Пользовательские индикаторы, Examples), только алгоритм экстремумов другой....

Ничего изобретать не нужно

 
AlexSTAL:

На Вашей картинке нарисован стандартный ZigZag (Пользовательские индикаторы, Examples), только алгоритм экстремумов другой....

Ничего изобретать не нужно

Посмотрел, но там другой принцип. И к сожалению тоже неясно как там координата по времени рассчитывается...
 
kii:
Посмотрел, но там другой принцип. И к сожалению тоже неясно как там координата по времени рассчитывается...

Вы топором то сразу не рубите....

А лучше подумайте и изучите....

 
kii:

Ломаю мозг битый час. Пишу с нуля. Mql5 вижу впервые.

Ситуация. Пишу индикатор, который анализирует цены на заданном периоде; результат анализа - массив точек на графике, меньшего размера, чем массив данных по цене. В примерах по написанию индикаторов (например тут и тут) количество значений в рассчитываемом массиве совпадает с исходным массивом данных. Поэтому там нет заморочек с координатой по времени. А как быть? Двумерный массив, в котором в первой колонке время, а во второй - значения? Или отдельный массив делать? Как тогда он будет отображаться на графике?!

 Спасибо. 

 

Не понятно в чем проблема. Строите отрезки линий типа OBJ_TREND - там координаты точек задаются в виде: [Дата/Время - Цена].

 

Да, думал, что придется объекты рисовать отдельно, но всё оказалось гораздо проще... после всматривания в код ZigZag'a нашел-таки корень "проблемы", вот он:

PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0.0);

что отсутствовало в коде моего индикатора. Спасибо за помощь.

Причина обращения: