MQL5 для дилетантов - страница 2

 
SHerh   :

Так, а где прочитать о кол-ве необходимых Буферов для того или иного построения?

Добавим эту информацию прямо в таблицу видов графических построений индикатора.

Plot Описание Data buffers Color buffers Пример
DRAW_NONE None
1
0
нет
DRAW_LINE Line
1
0
AD.mq5
DRAW_SECTION Sections
1
0
ZigZag.mq5
DRAW_HISTOGRAM Histogram from zero
1
0
Bears.mq5
DRAW_HISTOGRAM2 Histogram between buffers
2
0
нет
DRAW_ARROW Arrow symbol
1
0
ParabolicSAR.mq5
DRAW_ZIGZAG Zigzag
2
0
нет
DRAW_FILLING Color filling
2
0
Price_Channel.mq5
DRAW_BARS Like chart bars
0
нет
DRAW_CANDLES Like chart candles
0
Candles.mq5
DRAW_COLOR_LINE Line with color indexes buffer
1
1
ColorLine.mq5
DRAW_COLOR_SECTION Sections with color indexes buffer
1
1
нет
DRAW_COLOR_HISTOGRAM Histogram from zero with color indexes buffer
1
1
Accelerator.mq5
DRAW_COLOR_HISTOGRAM2 Histogram between buffers with color indexes buffer
2
1
нет
DRAW_COLOR_ARROW Arrow symbol with color indexes buffer
1
1
нет
DRAW_COLOR_ZIGZAG Zigzag with color indexes buffer
1
ZigzagColor.mq5
DRAW_COLOR_BARS Chart bars with color indexes buffer
4
1
ColorBars.mq5
DRAW_COLOR_CANDLES Chart candles with color indexes buffer
4
1
ColorCandlesDaily.mq5
 
SHerh   :


Если правильно понимаю, то логика следующая:

  Правильно. Для наглядности еще можно в CodeBase посмотреть. Вот тут 4 графических построения и 5 буферов: Ichimoku Kinko Hyo.



Так, а где прочитать о кол-ве необходимых Буферов для того или иного построения?

Пока этого в справке нет. Добавим.

Пока можно судить по самим названиям стилей , особых сложностей быть не должно. Линия - 1 буфер, гистограмма - 2 буфера, бары - 4 буфера OHLC итп. Все построения с _COLOR_ в названии +1 буфер для цвета.

 
antt   :
  Правильно. Для наглядности еще можно в CodeBase посмотреть. Вот тут 4 графических построения и 5 буферов: Ichimoku Kinko Hyo.


Пока этого в справке нет. Добавим.

Пока можно судить по самим названиям стилей , особых сложностей быть не должно. Линия - 1 буфер, гистограмма - 2 буфера, бары - 4 буфера OHLC итп. Все построения с _COLOR_ в названии +1 буфер для цвета.



Круто! Степеней свободы :) ...даже для таких дилетантов, как я - стало больше!
 

Используйте вставку кода с форматированием


 
SHerh :

Используйте вставку кода с форматированием


Спасибо! :) ...

Проработал директивы препроцессора ... тип и свойства графических построений ...

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

//+------------------------------------------------------------------------------------------+
//|                                                                            LinePrice.mq5 |
//|                                                                     Copyright 2010, MQL5 |
//|                                                                     "http://www.mql5.ru" |
//+------------------------------------------------------------------------------------------+
//+------------------------------------------------------------------------------------------+
//| Определяем необходимые информационные данные                                             |
//+------------------------------------------------------------------------------------------+
                                                   // Справочник MQL5 / Основы языка 
                                                   // Препроцессор / Свойства программ                                                
#property copyright   "2010, MQL5"                 // Копирайт
#property link        "http://www.mql5.ru"         // Ссылка на сайт
#property version     "1.00"                       // Версия индикатора
#property description "Линия цен"                  // Краткое текстовое описание индикатора
#property description " Тяжело в ученье  "         // Краткое текстовое описание индикатора
//+------------------------------------------------------------------------------------------+
//| Задаём основные параметры индикатора                                                     |
//+------------------------------------------------------------------------------------------+
#property indicator_chart_window                   // Выводить индикатор в окно графика
//#property indicator_separate_window                // Выводить индикатор в отдельное окно

//--- Задаём количество ИНДИКАТОРНЫХ БУФЕРОВ
//--- буфер - массив данных (ряд, матрица, многомерная структура (вектор))
#property indicator_buffers 1                      // 1 - кол-во необходимых буферов
//--- Опреляем необходимое количество ГРАФИЧЕСКИХ СЕРИЙ
//--- Графическая серия - Индикаторный буфер, требующий графического отображения
#property indicator_plots   1                      // 1 - кол-во графических серий
//--- Определяем тип и свойства ГРАФИЧЕСКОГО ПОСТРОЕНИЯ (графической)серии
#property indicator_type1   DRAW_LINE              // Линия              / цифра 1 - номер графической серии
#property indicator_color1  Red                    // Цвет               / цифра 1 - номер графической серии
#property indicator_label1  "Line Close"           // Метка              / цифра 1 - номер графической серии
#property indicator_style1  STYLE_SOLID            // Сплошная линия     / цифра 1 - номер графической серии
#property indicator_width1  1                      // 1 - толщина линии  / цифра 1 - номер графической серии
//--- Задаём ВХОДНЫЕ ПАРАМЕТРЫ индикатора
// Справочник MQL5 / Ценовые константы 
input ENUM_APPLIED_PRICE Price=PRICE_CLOSE;        // Ценовая база расчётов
//input ENUM_APPLIED_VOLUME Volume=VOLUME_REAL;      // Торговый объём 
//input ENUM_APPLIED_VOLUME Volume=VOLUME_TICK;      // Тиковый объём

//--- Задаём динамические массивы данных
double LinePrice[];                                // Массив данных
//+------------------------------------------------------------------------------------------+
//| Функция инициализации параметров индикатора                                              |
//+------------------------------------------------------------------------------------------+
int OnInit()
  {
//--- Связываем индикаторный буфер с динамическим массивом данных
   SetIndexBuffer(0,LinePrice,INDICATOR_DATA);                    // Буфер значений для графической реализации
//   SetIndexBuffer(x,имя_массива,INDICATOR_CALCULATIONS);          // Буфер значений, не требующий графической реализации
//   SetIndexBuffer(y,имя_массива,INDICATOR_COLOR_INDEX);           // Буфер для хранения индексов цветов
/*
//--- задаём тип рисования графического объекта
   PlotIndexSetInteger(0,PLOT_DRAW_TYPE,DRAW_ARROW);              // Отрисовка символом Wingdings
   PlotIndexSetInteger(0,PLOT_ARROW,170);                         // Код символа Wingdings
   PlotIndexSetInteger(0,PLOT_DRAW_TYPE,DRAW_LINE);               // Линия             / необходимо - 1 буфер
   PlotIndexSetInteger(0,PLOT_DRAW_TYPE,DRAW_BARS);               // Бары              / необходимо - 4 буфера
   PlotIndexSetInteger(0,PLOT_DRAW_TYPE,DRAW_CANDLES);            // Свечи             / необходимо - 4 буфера
   PlotIndexSetInteger(0,PLOT_DRAW_TYPE,DRAW_FILLING);            // Заливка           / необходимо - 2 буфера
   PlotIndexSetInteger(0,PLOT_DRAW_TYPE,DRAW_HISTOGRAM);          // Гистограммы       / необходимо - 2 буфера
   PlotIndexSetInteger(0,PLOT_DRAW_TYPE,DRAW_SECTION);            // Секции            / необходимо - 1 буфер
   PlotIndexSetInteger(0,PLOT_DRAW_TYPE,DRAW_ZIGZAG);             // Стиль Зигзаг      / необходимо - 2 буфера
   PlotIndexSetInteger(0,PLOT_DRAW_TYPE,DRAW_COLOR_LINE);         // Разноцветная      / необходимо - 2 буфера
   PlotIndexSetInteger(0,PLOT_DRAW_TYPE,DRAW_COLOR_SECTION);      // Разноцветные      / необходимо - 2 буфера
   PlotIndexSetInteger(0,PLOT_DRAW_TYPE,DRAW_COLOR_HISTOGRAM);    // Разноцветные      / необходимо - 2 буфера
   PlotIndexSetInteger(0,PLOT_DRAW_TYPE,DRAW_COLOR_HISTOGRAM2);   // Разноцветные      / необходимо - 3 буфера
   PlotIndexSetInteger(0,PLOT_DRAW_TYPE,DRAW_COLOR_ARROW);        // Разноцветные      / необходимо - 2 буфера
   PlotIndexSetInteger(0,PLOT_DRAW_TYPE,DRAW_COLOR_ZIGZAG);       // Разноцветный      / необходимо - 3 буфера
   PlotIndexSetInteger(0,PLOT_DRAW_TYPE,DRAW_COLOR_BARS);         // Разноцветные      / необходимо - 5 буферов
   PlotIndexSetInteger(0,PLOT_DRAW_TYPE,DRAW_COLOR_CANDLES);      // Разноцветные      / необходимо - 5 буферов
   PlotIndexSetInteger(0,PLOT_DRAW_TYPE,DRAW_NONE);               // Не отрисовывается
*/
/*
//--- задаём стиль отрисовки графического объекта
   PlotIndexSetInteger(0,PLOT_LINE_STYLE,STYLE_SOLID);            // Сплошная
   PlotIndexSetInteger(0,PLOT_LINE_STYLE,STYLE_DOT);              // Пунктирная
   PlotIndexSetInteger(0,PLOT_LINE_STYLE,STYLE_DASH);             // Прерывистая
   PlotIndexSetInteger(0,PLOT_LINE_STYLE,STYLE_DASHDOT);          // Штрих-пунктирная линия
   PlotIndexSetInteger(0,PLOT_LINE_STYLE,STYLE_DASHDOTDOT);       // Штрих - две точки 
*/
/*
//--- задаём цвет отрисовки графического объекта
   PlotIndexSetInteger(0,PLOT_LINE_COLOR,Red);                    // Цвет
   PlotIndexSetInteger(0,PLOT_LINE_COLOR,Blue,Green);             // Массив цветов     / необходимо - 1 буфер
*/
/*
//--- задаём толщину отрисовки графического объекта
   PlotIndexSetInteger(0,PLOT_LINE_WIDTH,1);                      // Толщина
*/
/*
//--- задаём метку для графического объекта
   PlotIndexSetString(0,PLOT_LABEL,"Line price");                 // Метка
*/
/*
// Устанавливаем начало отрисовки графического объекта
   PlotIndexSetInteger(0,PLOT_DRAW_BEGIN,0);                      // Начало отрисовки
*/
// Устанавливаем пустое значение для массива
   PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,EMPTY_VALUE);

// Устанавливаем имя индикатора
   IndicatorSetString(INDICATOR_SHORTNAME,"Линия цен");
//---
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,       // размер входных таймсерий
                const int prev_calculated,   // обработано баров на предыдущем вызове
                const datetime &time[],      // Time
                const double &open[],        // Open
                const double &high[],        // High
                const double &low[],         // Low
                const double &close[],       // Close
                const long &tick_volume[],   // Volume Tick
                const long &volume[],        // Volume Real
                const int &spread[])         // Spread
  {
//---
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+

Вопрос, чтобы не возвращаться к этому шагу освоения.

Например, ... во входных параметрах индикатора,для указания Ценовой базы расчета - используем:

input ENUM_APPLIED_PRICE Price=PRICE_CLOSE;

А есть возможность создания своих ВЫПАДАЮЩИХ СПИСКОВ (по аналогии)?

 
SHerh   :


А есть возможность создания своих ВЫПАДАЮЩИХ СПИСКОВ (по аналогии)?

Можно, смотрите раздел Input переменные
 
Rosh   :
Можно, смотрите раздел Input переменные


Спасибо! А ведь читал об этом ещё в ноябре :) ... и, извините, за поспешные вопросы.
 

Здравствуйте!

С Рождеством!

Проработал практически все типы графических построений.

Больше всего понравился тип DRAW_HISTOGRAM2, точнее, :) ... он (или его аналог) чаще всего мне необходим.

Поскольку программист из  меня ... явно :) ... проще спросить:

Если, например, на 10 барах, найти max и min данной области цен, а затем на 0 баре данной области задать min значение уровня, а на 9 баре данной области цен задать max значение уровня, то отрисуется ли объект = прямоугольник (на этих 10 барах) на основе заданного типа DRAW_HISTOGRAM2 - ?

Или все же прямоугольник, как гистограмму, так же как и раньше в мт4 ... придется строить с помощью ObjectCreate - ?

 
SHerh   :

Если, например, на 10 барах, найти max и min данной области цен, а затем присвоить 0 бару данной области min значение, а 9 бару данной области цен присвоить max значение, то отрисуется ли объект = прямоугольник на основе заданного типа DRAW_HISTOGRAM2 - ?

Или все же прямоугольник, как гистограмму, так же как и раньше в мт4 ... придется строить с помощью ObjectCreate - ?

Не надо строить объектами, лучше используйте DRAW_FILLING как в этом индикаторе: http://codebase.mql4.com/ru/6149 .

 
antt   :

Не надо строить объектами, лучше используйте DRAW_FILLING как в этом индикаторе: http://codebase.mql4.com/ru/6149 .


Спасибо. Посмотрю. С помощью DATA_FILLING уже пробовал. Получается канал областей. Явно, значит, что то с кодом не так.

Еще раз спасибо за ссылку на код.