Ломаю мозг битый час. Пишу с нуля. Mql5 вижу впервые.
Ситуация. Пишу индикатор, который анализирует цены на заданном периоде; результат анализа - массив точек на графике, меньшего размера, чем массив данных по цене. В примерах по написанию индикаторов (например тут и тут) количество значений в рассчитываемом массиве совпадает с исходным массивом данных. Поэтому там нет заморочек с координатой по времени. А как быть? Двумерный массив, в котором в первой колонке время, а во второй - значения? Или отдельный массив делать? Как тогда он будет отображаться на графике?!
Спасибо.
Вы бы свою идею в виде картинки что ли выложили бы...
Красная линия - линия, которая должна быть построена индикатором. Видно, что точек 7. У каждой есть координата (x,y): x - время, y - курс.
Соответственно массив данных по курсу для анализа (от 1 до 7-й точки) составляет ~80 "точек"-баров. А мой массив - всего 7.
Например, в одном из примеров (ссылка вверху) массив для отображения индикатором задается так:
double TSIBuffer[]; int OnInit(){ SetIndexBuffer(0,TSIBuffer,INDICATOR_DATA); }
Соответственно тип INDICATOR_DATA говорит, что данные массива TSIBuffer будут отображаться на графике. А теперь момент: график имеет две оси, а массив одну(как следует из его определения), но строит всё отлично, т.к. система каким образом понимает, что координаты по времени те же, что и в массиве цены.
Но в моем случае массив для отображения получается должен "иметь две строки": одну - для координаты по времени, и вторую - по курсу. Как сделать это?!
Красная линия - линия, которая должна быть построена индикатором. Видно, что точек 7. У каждой есть координата (x,y): x - время, y - курс.
Соответственно массив данных по курсу для анализа (от 1 до 7-й точки) составляет ~80 "точек"-баров. А мой массив - всего 7.
Например, в одном из примеров (ссылка вверху) массив для отображения индикатором задается так:
Соответственно тип INDICATOR_DATA говорит, что данные массива TSIBuffer будут отображаться на графике. А теперь момент: график имеет две оси, а массив одну(как следует из его определения), но строит всё отлично, т.к. система каким образом понимает, что координаты по времени те же, что и в массиве цены.
Но в моем случае массив для отображения получается должен "иметь две строки": одну - для координаты по времени, и вторую - по курсу. Как сделать это?!
На Вашей картинке нарисован стандартный ZigZag (Пользовательские индикаторы, Examples), только алгоритм экстремумов другой....
Ничего изобретать не нужно
На Вашей картинке нарисован стандартный ZigZag (Пользовательские индикаторы, Examples), только алгоритм экстремумов другой....
Ничего изобретать не нужно
Посмотрел, но там другой принцип. И к сожалению тоже неясно как там координата по времени рассчитывается...
Вы топором то сразу не рубите....
А лучше подумайте и изучите....
Ломаю мозг битый час. Пишу с нуля. Mql5 вижу впервые.
Ситуация. Пишу индикатор, который анализирует цены на заданном периоде; результат анализа - массив точек на графике, меньшего размера, чем массив данных по цене. В примерах по написанию индикаторов (например тут и тут) количество значений в рассчитываемом массиве совпадает с исходным массивом данных. Поэтому там нет заморочек с координатой по времени. А как быть? Двумерный массив, в котором в первой колонке время, а во второй - значения? Или отдельный массив делать? Как тогда он будет отображаться на графике?!
Спасибо.
Не понятно в чем проблема. Строите отрезки линий типа OBJ_TREND - там координаты точек задаются в виде: [Дата/Время - Цена].
Да, думал, что придется объекты рисовать отдельно, но всё оказалось гораздо проще... после всматривания в код ZigZag'a нашел-таки корень "проблемы", вот он:
PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0.0);
что отсутствовало в коде моего индикатора. Спасибо за помощь.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Ломаю мозг битый час. Пишу с нуля. Mql5 вижу впервые.
Ситуация. Пишу индикатор, который анализирует цены на заданном периоде; результат анализа - массив точек на графике, меньшего размера, чем массив данных по цене. В примерах по написанию индикаторов (например тут и тут) количество значений в рассчитываемом массиве совпадает с исходным массивом данных. Поэтому там нет заморочек с координатой по времени. А как быть? Двумерный массив, в котором в первой колонке время, а во второй - значения? Или отдельный массив делать? Как тогда он будет отображаться на графике?!
Спасибо.