Константы графиков

Константы, описывающие различные свойства графиков, разделены на следующие группы:

  • Типы событий – события, которые возникают при работе с графиком;
  • Периоды графиков – стандартные встроенные периоды;
  • Свойства графиков – идентификаторы, используемые в качестве параметров функций для работы с графиками;
  • Константы позиционирования — значения параметра функции ChartNavigate();
  • Отображение графиков — задание внешнего вида графика.

 

Типы событий графика

Существуют 11 видов событий, которые можно обрабатывать с помощью функции предопределенной функции OnChartEvent(). Для пользовательских событий предусмотрено 65535 идентификаторов в диапазоне от CHARTEVENT_CUSTOM до CHARTEVENT_CUSTOM_LAST включительно. Для генерации пользовательского события необходимо использовать функцию EventChartCustom().

ENUM_CHART_EVENT

Идентификатор

Описание

CHARTEVENT_KEYDOWN

Нажатие клавиатуры

CHARTEVENT_MOUSE_MOVE

Перемещение мыши и нажатие кнопок мышки (если для графика установлено свойство CHART_EVENT_MOUSE_MOVE=true)

CHARTEVENT_MOUSE_WHEEL

Нажатие или прокрутка колесика мышки (если для графика установлено свойство CHART_EVENT_MOUSE_WHEEL=true)

CHARTEVENT_OBJECT_CREATE

Создание графического объекта (если для графика установлено свойство CHART_EVENT_OBJECT_CREATE=true)

CHARTEVENT_OBJECT_CHANGE

Изменение свойств графического объекта через диалог свойств

CHARTEVENT_OBJECT_DELETE

Удаление графического объекта (если для графика установлено свойство CHART_EVENT_OBJECT_DELETE=true)

CHARTEVENT_CLICK

Нажатие мышки на графике

CHARTEVENT_OBJECT_CLICK

Нажатие мышки на графическом объекте

CHARTEVENT_OBJECT_DRAG

Перетаскивание графического объекта

CHARTEVENT_OBJECT_ENDEDIT

Окончание редактирования текста в графическом объекте Edit

CHARTEVENT_CHART_CHANGE

Изменение размеров графика или изменение свойств графика через диалог свойств

CHARTEVENT_CUSTOM

Начальный номер события из диапазона пользовательских событий

CHARTEVENT_CUSTOM_LAST

Конечный номер события из диапазона пользовательских событий

Для каждого типа события входные параметры функции OnChartEvent() имеют определенные значения, которые необходимы для обработки этого события. В таблице перечислены события и значения, которые передаются через параметры.

Событие

Значение параметра id

Значение параметра lparam

Значение параметра dparam

Значение параметра  sparam

Событие нажатия клавиатуры

CHARTEVENT_KEYDOWN

код нажатой клавиши

Количество нажатий клавиши,сгенерированных за время её удержания в нажатом состоянии

Строковое значение битовой маски, описывающее статус кнопок клавиатуры

События мышки (если для графика установлено свойство CHART_EVENT_MOUSE_MOVE=true)

CHARTEVENT_MOUSE_MOVE

X координата

Y координата

Строковое значение битовой маски, описывающее статус кнопок мыши

Событие колёсика мышки (если для графика установлено свойство CHART_EVENT_MOUSE_WHEEL=true)

CHARTEVENT_MOUSE_WHEEL

Флаги состояний клавиш и кнопок мышки, координаты X и Y курсора. Описание дано в примере ниже

Значение Delta прокрутки колёсика мышки

Событие создания графического объекта (если для графика установлено свойство CHART_EVENT_OBJECT_CREATE=true)

CHARTEVENT_OBJECT_CREATE

Имя созданного графического объекта

Событие изменения свойств объекта через диалог свойств

CHARTEVENT_OBJECT_CHANGE

Имя измененного графического объекта

Событие удаления графического объекта (если для графика установлено свойство CHART_EVENT_OBJECT_DELETE=true)

CHARTEVENT_OBJECT_DELETE

Имя удаленного графического объекта

Событие щелчка мышки на графике

CHARTEVENT_CLICK

X координата

Y координата

Событие щелчка мышки на графическом объекте

CHARTEVENT_OBJECT_CLICK

X координата

Y координата

Имя графического объекта, на котором произошло событие

Событие перемещения графического объекта при помощи мышки

CHARTEVENT_OBJECT_DRAG

Имя перемещенного графического объекта

Событие окончания редактирования текста в поле ввода графического объекта «Поле ввода»

CHARTEVENT_OBJECT_ENDEDIT

Имя графического объекта «Поле ввода», в котором завершилось редактирование текста

Событие изменения размеров графика или изменения свойств графика через диалог свойств

CHARTEVENT_CHART_CHANGE

Пользовательское событие с номером N

CHARTEVENT_CUSTOM+N

Значение, заданное функцией EventChartCustom()

Значение, заданное функцией EventChartCustom()

Значение, заданное функцией EventChartCustom()

Пример:

#define KEY_NUMPAD_5 12 
#define KEY_LEFT 37 
#define KEY_UP 38 
#define KEY_RIGHT 39 
#define KEY_DOWN 40 
#define KEY_NUMLOCK_DOWN 98 
#define KEY_NUMLOCK_LEFT 100 
#define KEY_NUMLOCK_5 101 
#define KEY_NUMLOCK_RIGHT 102 
#define KEY_NUMLOCK_UP 104 
//+------------------------------------------------------------------+ 
//| Expert initialization function | 
//+------------------------------------------------------------------+ 
int OnInit() 
{
 //--- 
 Print("Запущен эксперт с именем ",MQL5InfoString(MQL5_PROGRAM_NAME));
 //--- установка флага получения событий создания объектов графика 
 ChartSetInteger(ChartID(),CHART_EVENT_OBJECT_CREATE,true); 
 //--- установка флага получения событий удаления объектов графика 
 ChartSetInteger(ChartID(),CHART_EVENT_OBJECT_DELETE,true);
//--- 
 return(INIT_SUCCEEDED); 
}
//+------------------------------------------------------------------+ 
//| ChartEvent function | 
//+------------------------------------------------------------------+ 
void OnChartEvent(const int id, 
                  // идентификатор события 
                  const long& lparam, // параметр события типа long 
                  const double& dparam, // параметр события типа double 
                  const string& sparam // параметр события типа string) 
{ 
                  //--- нажатие левой кнопкой мышки на графике 
 if(id==CHARTEVENT_CLICK) 
 {
    Print("Координаты щелчка мышки на графике: x = ",lparam," y = ",dparam); 
 }

 //--- нажатие мышкой на графическом объекте 
 if(id==CHARTEVENT_OBJECT_CLICK) 
 {
    Print("Нажатие кнопки мышки на объекте с именем '"+sparam+"'"); 
 }

 //--- нажатие кнопки на клавиатуре 
 if(id==CHARTEVENT_KEYDOWN) 
 {
    switch(lparam) 
    {
        case KEY_NUMLOCK_LEFT: Print("Нажата KEY_NUMLOCK_LEFT"); break;
        case KEY_LEFT: Print("Нажата KEY_LEFT"); break;
        case KEY_NUMLOCK_UP: Print("Нажата KEY_NUMLOCK_UP"); break;
        case KEY_UP: Print("Нажата KEY_UP"); break;
        case KEY_NUMLOCK_RIGHT: Print("Нажата KEY_NUMLOCK_RIGHT"); break;
        case KEY_RIGHT: Print("Нажата KEY_RIGHT"); break;
        case KEY_NUMLOCK_DOWN: Print("Нажата KEY_NUMLOCK_DOWN"); break;
        case KEY_DOWN: Print("Нажата KEY_DOWN"); break;
        case KEY_NUMPAD_5: Print("Нажата KEY_NUMPAD_5"); break;
        case KEY_NUMLOCK_5: Print("Нажата KEY_NUMLOCK_5"); break;
        default: Print("Нажата какая-то неперечисленная клавиша"); 
    }
    ChartRedraw(); 
 }

 //--- удален объекта 
 if(id==CHARTEVENT_OBJECT_DELETE)
 {
    Print("Удален объект с именем ",sparam); 
 }

 //--- создан объект 
 if(id==CHARTEVENT_OBJECT_CREATE) 
 {
    Print("Создан объект с именем ",sparam); 
 }

 //--- перемещен объект или изменены координаты точек привязки 
 if(id==CHARTEVENT_OBJECT_DRAG) 
 {
    Print("Изменение точек привязки объекта с именем ",sparam); 
 }

 //--- изменен текст в поле ввода графического объекта Edit 
 if(id==CHARTEVENT_OBJECT_ENDEDIT) 
 {
    Print("Изменен текст в объекте Edit ",sparam); 
 } 
}

 

Для события CHARTEVENT_MOUSE_MOVE строковой параметр sparam содержит число, представляющее информацию о состоянии клавиш:

Бит

Описание

1

Состояние левой клавиши мыши

2

Состояние правой клавиши мыши

3

Состояние клавиши SHIFT

4

Состояние клавиши CTRL

5

Состояние средней клавиши мыши

6

Состояние первой дополнительной клавиши мыши

7

Состояние второй дополнительной клавиши мыши

Пример:

//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
void OnInit()
{
   //--- включение сообщений о перемещении мыши по окну чарта
   ChartSetInteger(0,CHART_EVENT_MOUSE_MOVE,1);
}

//+------------------------------------------------------------------+
//| MouseState |
//+------------------------------------------------------------------+
string MouseState(uint state)
{
   string res;
   res+="\nML: " +(((state& 1)== 1)?"DN":"UP"); // mouse left
   res+="\nMR: " +(((state& 2)== 2)?"DN":"UP"); // mouse right 
   res+="\nMM: " +(((state&16)==16)?"DN":"UP"); // mouse middle
   res+="\nMX: " +(((state&32)==32)?"DN":"UP"); // mouse first X key
   res+="\nMY: " +(((state&64)==64)?"DN":"UP"); // mouse second X key
   res+="\nSHIFT: "+(((state& 4)== 4)?"DN":"UP"); // shift key
   res+="\nCTRL: " +(((state& 8)== 8)?"DN":"UP"); // control key
   return(res);
}

//+------------------------------------------------------------------+
//| ChartEvent function |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,const long &lparam,const double &dparam,const string &sparam)
{
   if(id==CHARTEVENT_MOUSE_MOVE)
     Comment("POINT: ",(int)lparam,",",(int)dparam,"\n",MouseState((uint)sparam));
}

Для события CHARTEVENT_MOUSE_WHEEL параметры lparam и dparam содержат информацию о состоянии клавиш Ctrl, Shift, кнопок мышки, координатах курсора и величине прокрутки колёсика мышки. Для лучшего понимания запустите этот советник на графике и прокручивайте колёсико мышки, нажимая поочередно различные кнопки и клавиши, описанные в коде.

Пример обработки события CHARTEVENT_MOUSE_WHEEL:

//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
void OnInit()
{
   //--- включение сообщений о прокрутке колесика мышки
   ChartSetInteger(0,CHART_EVENT_MOUSE_WHEEL,1);
   return(INIT_SUCCEEDED);
}

//+------------------------------------------------------------------+
//| ChartEvent function |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,const long &lparam,const double &dparam,const string &sparam)
{
   if(id==CHARTEVENT_MOUSE_WHEEL)
   {
      //--- разберем состояние кнопок и колесика мышки для этого события 
      int flg_keys = (int)(lparam>>32); // флаг состояний клавиш Ctrl, Shift и кнопок мышки
      int x_cursor = (int)(short)lparam; // X-координата, в которой произошло событие колесика мышки
      int y_cursor = (int)(short)(lparam>>16); // Y-координата, в которой произошло событие колесика мышки
      int delta = (int)dparam; // суммарное значение прокрутки колесика, срабатывает при достижении +120 или -120

      //--- обработаем флаг 
      string str_keys="";
      if((flg_keys&0x0001)!=0) str_keys+="LMOUSE ";
      if((flg_keys&0x0002)!=0) str_keys+="RMOUSE ";
      if((flg_keys&0x0004)!=0) str_keys+="SHIFT ";
      if((flg_keys&0x0008)!=0) str_keys+="CTRL ";
      if((flg_keys&0x0010)!=0) str_keys+="MMOUSE ";
      if((flg_keys&0x0020)!=0) str_keys+="X1MOUSE ";
      if((flg_keys&0x0040)!=0) str_keys+="X2MOUSE ";
 
      if(str_keys!="")
        str_keys=", keys='"+StringSubstr(str_keys,0,StringLen(str_keys)-1) + "'";

      PrintFormat("%s: X=%d, Y=%d, delta=%d%s",EnumToString(CHARTEVENT_MOUSE_WHEEL),x_cursor,y_cursor,delta,str_keys);
 }
 }

//+------------------------------------------------------------------+ /*
 Пример вывода
 CHARTEVENT_MOUSE_WHEEL: Ctrl pressed: X=193, Y=445, delta=-120
 CHARTEVENT_MOUSE_WHEEL: Shift pressed: X=186, Y=446, delta=120
 CHARTEVENT_MOUSE_WHEEL: X=178, Y=447, delta=-120
 CHARTEVENT_MOUSE_WHEEL: X=231, Y=449, delta=120
 CHARTEVENT_MOUSE_WHEEL: MiddleButton pressed: X=231, Y=449, delta=120
 CHARTEVENT_MOUSE_WHEEL: LeftButton pressed: X=279, Y=320, delta=-120
 CHARTEVENT_MOUSE_WHEEL: RightButton pressed: X=253, Y=330, delta=120 */

 

Периоды графиков

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

ENUM_TIMEFRAMES

Идентификатор

Описание

PERIOD_CURRENT

Текущий период

PERIOD_M1

1 минута

PERIOD_M2

2 минуты

PERIOD_M3

3 минуты

PERIOD_M4

4 минуты

PERIOD_M5

5 минут

PERIOD_M6

6 минут

PERIOD_M10

10 минут

PERIOD_M12

12 минут

PERIOD_M15

15 минут

PERIOD_M20

20 минут

PERIOD_M30

30 минут

PERIOD_H1

1 час

PERIOD_H2

2 часа

PERIOD_H3

3 часа

PERIOD_H4

4 часа

PERIOD_H6

6 часов

PERIOD_H8

8 часов

PERIOD_H12

12 часов

PERIOD_D1

1 день

PERIOD_W1

1 неделя

PERIOD_MN1

1 месяц

Пример:

 string chart_name="test_Object_Chart";
 Print("Попробуем создать объект Chart с именем ",chart_name);

//--- если такого объекта нет - создадим его
 if(ObjectFind(0,chart_name)<0)
    ObjectCreate(0,chart_name,OBJ_CHART,0,0,0,0,0);

//--- зададим символ
 ObjectSetString(0,chart_name,OBJPROP_SYMBOL,"EURUSD");

//--- зададим координату X для точки привязки
 ObjectSetInteger(0,chart_name,OBJPROP_XDISTANCE,100);

//--- зададим координату Y для точки привязки
 ObjectSetInteger(0,chart_name,OBJPROP_YDISTANCE,100);

//--- установим ширину
 ObjectSetInteger(0,chart_name,OBJPROP_XSIZE,400);

//--- установим высоту
 ObjectSetInteger(0,chart_name,OBJPROP_YSIZE,300);

//--- установим период
 ObjectSetInteger(0,chart_name,OBJPROP_PERIOD,PERIOD_D1);

//--- установим масшаб ( от 0 до 5)
 ObjectSetDouble(0,chart_name,OBJPROP_SCALE,4);

//--- сделаем недоступным для выделения мышкой 
 ObjectSetInteger(0,chart_name,OBJPROP_SELECTABLE,false);

 

Свойства графиков

Идентификаторы семейства перечислений ENUM_CHART_PROPERTY используются в качестве параметров функций для работы с графиками. Аббревиатура r/o в столбце «Тип свойства» означает, что данное свойство предназначено только для чтения и не может быть изменено. Аббревиатура w/o в столбце «Тип свойства» означает, что данное свойство предназначено только для записи и не может быть получено. При обращении к некоторым свойствам необходимо указывать дополнительный параметр-модификатор (modifier), который служит для указания номера подокна графика. 0 означает главное окно.

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

По этой причине не следует ожидать немедленного визуального обновления графика после вызова данных функций. В общем случае обновление графика производится терминалом автоматически по событиям изменения — поступление новой котировки, изменения размера окна графика и т.д. Для принудительного обновления внешнего вида графика используйте команду на перерисовку графика ChartRedraw().

Для функций ChartSetInteger() и ChartGetInteger()

ENUM_CHART_PROPERTY_INTEGER

Идентификатор

Описание

Тип свойства

CHART_SHOW

Признак отрисовки ценового графика. Если установлено значение false, то отключается отрисовка любых атрибутов ценового графика и устраняются все отступы по краям графика: шкалы времени и цены, строка быстрой навигации, метки событий Календаря, значки сделок, тултипы индикаторов и баров, подокна индикаторов, гистограммы объёмов и т.д.

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

Графические объекты отрисовываются всегда независимо от установленного значения свойства CHART_SHOW.

bool

CHART_IS_OBJECT

Признак идентификации объекта «График» (OBJ_CHART) – для графического объекта возвращает true. Для настоящего графика значение равно false

bool   r/o

CHART_BRING_TO_TOP

Показ графика поверх всех других

bool   w/o

CHART_CONTEXT_MENU

Включение/отключение доступа к контекстному меню по нажатию правой клавиши мышки.

Значение CHART_CONTEXT_MENU=false отключает только  контекстное меню графика, при этом контекстное меню для объектов на графике остается доступным.

bool  (значение по умолчанию false)

CHART_CROSSHAIR_TOOL

Включение/отключение доступа к инструменту «Перекрестие» по нажатию средней клавиши мышки

bool  (значение по умолчанию true)

CHART_MOUSE_SCROLL

Прокрутка графика левой кнопкой мышки по горизонтали. Прокрутка по вертикали также будет доступна, если установлено в true значение любого из трех свойств: CHART_SCALEFIX, CHART_SCALEFIX_11 или CHART_SCALE_PT_PER_BAR

При CHART_MOUSE_SCROLL=false прокрутка графика колёсиком мышки будет недоступна

bool

CHART_EVENT_MOUSE_WHEEL

Отправка всем mql5-программам на графике сообщений о событиях колёсика мышки (CHARTEVENT_MOUSE_WHEEL)

bool  (значение по умолчанию true)

CHART_EVENT_MOUSE_MOVE

Отправка всем mql5-программам на графике сообщений о событиях перемещения и нажатия кнопок мышки (CHARTEVENT_MOUSE_MOVE)

bool

CHART_EVENT_OBJECT_CREATE

Отправка всем mql5-программам на графике сообщений о событии создания графического объекта (CHARTEVENT_OBJECT_CREATE)

bool

CHART_EVENT_OBJECT_DELETE

Отправка всем mql5-программам на графике сообщений о событии уничтожения графического объекта (CHARTEVENT_OBJECT_DELETE)

bool

CHART_MODE

Тип графика (свечи, бары или линия)

enum     ENUM_CHART_MODE

CHART_FOREGROUND

Ценовой график на переднем плане

bool

CHART_SHIFT

Режим отступа ценового графика от правого края

bool

CHART_AUTOSCROLL

Режим автоматического перехода к правому краю графика

bool

CHART_KEYBOARD_CONTROL

Разрешение на управление графиком с помощью клавиатуры («Home», «End», «PageUp», «+», «-«, «Стрелка вверх»  и т.д.). Установка CHART_KEYBOARD_CONTROL=false позволяет отключить скроллинг и масштабирование графика, но при этом сохраняется возможность получать события нажатия данных клавиш в OnChartEvent().

bool

CHART_QUICK_NAVIGATION

Разрешение на перехват графиком нажатий клавиш Space и Enter для активации строки быстрой навигации. Строка быстрой навигации автоматически появляется внизу графика при двойном клике мышки или нажатии клавиш Space/Enter. Таким образом можно быстро сменить символ, таймфрейм и дату первого видимого бара.

bool

CHART_SCALE

Масштаб

int       от 0 до 5

CHART_SCALEFIX

Режим фиксированного масштаба

bool

CHART_SCALEFIX_11

Режим масштаба 1:1

bool

CHART_SCALE_PT_PER_BAR

Режим указания масштаба в пунктах на бар

bool

CHART_SHOW_OHLC

Отображение в левом верхнем углу значений OHLC

bool

CHART_SHOW_BID_LINE

Отображение значения Bid горизонтальной линией на графике

bool

CHART_SHOW_ASK_LINE

Отображение значения Ask горизонтальной линией на графике

bool

CHART_SHOW_LAST_LINE

Отображение значения Last горизонтальной линией на графике

bool

CHART_SHOW_PERIOD_SEP

Отображение вертикальных разделителей между соседними периодами

bool

CHART_SHOW_GRID

Отображение сетки на графике

bool

CHART_SHOW_VOLUMES

Отображение объемов на графике

enum     ENUM_CHART_VOLUME_MODE

CHART_SHOW_OBJECT_DESCR

Отображение текстовых описаний объектов (не для всех объектов описания показываются)

bool

CHART_VISIBLE_BARS

Количество баров на графике, доступных для отображения

int     r/o

CHART_WINDOWS_TOTAL

Общее количество окон графика, включая подокна индикаторов

int     r/o

CHART_WINDOW_IS_VISIBLE

Видимость подокон

bool   r/o   модификатор — номер подокна

CHART_WINDOW_HANDLE

Хэндл графика (HWND)

int     r/o

CHART_WINDOW_YDISTANCE

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

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

int     r/o   модификатор — номер подокна

CHART_FIRST_VISIBLE_BAR

Номер первого видимого бара на графике. Индексация баров соответствует таймсерии.

int  r/o

CHART_WIDTH_IN_BARS

Ширина графика в барах

int  r/o

CHART_WIDTH_IN_PIXELS

Ширина графика в пикселях

int  r/o

CHART_HEIGHT_IN_PIXELS

Высота графика в пикселях

int      модификатор — номер подокна

CHART_COLOR_BACKGROUND

Цвет фона графика

color

CHART_COLOR_FOREGROUND

Цвет осей, шкалы и строки OHLC

color

CHART_COLOR_GRID

Цвет сетки

color

CHART_COLOR_VOLUME

Цвет объемов и уровней открытия позиций

color

CHART_COLOR_CHART_UP

Цвет бара вверх, тени и окантовки тела бычьей свечи

color

CHART_COLOR_CHART_DOWN

Цвет бара вниз, тени и окантовки тела медвежьей свечи

color

CHART_COLOR_CHART_LINE

Цвет линии графика и японских свечей «Доджи»

color

CHART_COLOR_CANDLE_BULL

Цвет тела бычьей свечи

color

CHART_COLOR_CANDLE_BEAR

Цвет тела медвежьей свечи

color

CHART_COLOR_BID

Цвет линии Bid-цены

color

CHART_COLOR_ASK

Цвет линии Ask-цены

color

CHART_COLOR_LAST

Цвет линии цены последней совершенной сделки (Last)

color

CHART_COLOR_STOP_LEVEL

Цвет уровней стоп-ордеров (Stop Loss и Take Profit)

color

CHART_SHOW_TRADE_LEVELS

Отображение на графике торговых уровней (уровни открытых позиций, Stop Loss, Take Profit и отложенных ордеров)

bool

CHART_DRAG_TRADE_LEVELS

Разрешение на перетаскивание торговых уровней на графике с помощью мышки. По умолчанию режим перетаскивания включен (значение true)

bool

CHART_SHOW_DATE_SCALE

Отображение на графике шкалы времени

bool

CHART_SHOW_PRICE_SCALE

Отображение на графике ценовой шкалы

bool

CHART_SHOW_ONE_CLICK

Отображение на графике панели быстрой торговли (опция «Торговля одним кликом»)

bool

CHART_IS_MAXIMIZED

Окно графика развернуто

bool

CHART_IS_MINIMIZED

Окно графика свернуто

bool

Для функций ChartSetDouble() и ChartGetDouble()

ENUM_CHART_PROPERTY_DOUBLE

Идентификатор

Описание

Тип свойства

CHART_SHIFT_SIZE

Размер отступа нулевого бара от правого края в процентах

double  (от 10 до 50 процентов)

CHART_FIXED_POSITION

Положение фиксированной позиции графика от левого края в процентах. Фиксированная позиция графика обозначена маленьким серым треугольником на горизонтальной оси времени и показывается только в том случае, если отключена автоматическая прокрутка к правому краю при поступлении нового тика (смотри свойство CHART_AUTOSCROLL). Бар, который находится на фиксированной позиции, остаётся на том же месте при увеличении и уменьшении масштаба.

double

CHART_FIXED_MAX

Фиксированный максимум графика

double

CHART_FIXED_MIN

Фиксированный минимум графика

double

CHART_POINTS_PER_BAR

Значение масштаба в пунктах на бар

double

CHART_PRICE_MIN

Минимум графика

double r/o   модификатор — номер подокна

CHART_PRICE_MAX

Максимум графика

double r/o   модификатор — номер подокна

Для функций ChartSetString() и ChartGetString()

ENUM_CHART_PROPERTY_STRING

Идентификатор

Описание

Тип свойства

CHART_COMMENT

Текст комментария на графике

string

CHART_EXPERT_NAME

Имя эксперта, запущенного на графике с указанным chart_id

string

CHART_SCRIPT_NAME

Имя скрипта, запущенного на графике с указанным chart_id

string

Пример:

 int chartMode=ChartGetInteger(0,CHART_MODE);
 switch(chartMode)
 {
    case(CHART_BARS): Print("CHART_BARS"); break;
    case(CHART_CANDLES): Print("CHART_CANDLES");break;
    default:Print("CHART_LINE");
 }

 bool shifted=ChartGetInteger(0,CHART_SHIFT);

 if(shifted) Print("CHART_SHIFT = true");
   else Print("CHART_SHIFT = false");

 bool autoscroll=ChartGetInteger(0,CHART_AUTOSCROLL);

 if(autoscroll) Print("CHART_AUTOSCROLL = true");
    else Print("CHART_AUTOSCROLL = false");

 int chartHandle=ChartGetInteger(0,CHART_WINDOW_HANDLE);
 Print("CHART_WINDOW_HANDLE = ",chartHandle);
 int windows=ChartGetInteger(0,CHART_WINDOWS_TOTAL);
 Print("CHART_WINDOWS_TOTAL = ",windows);
 if(windows>1)
 {
    for(int i=0;i<windows;i++)
    {
       int height=ChartGetInteger(0,CHART_HEIGHT_IN_PIXELS,i);
       double priceMin=ChartGetDouble(0,CHART_PRICE_MIN,i);
       double priceMax=ChartGetDouble(0,CHART_PRICE_MAX,i);
       Print(i+": CHART_HEIGHT_IN_PIXELS = ",height,"pixels");
       Print(i+": CHART_PRICE_MIN = ",priceMin);
       Print(i+": CHART_PRICE_MAX = ",priceMax);
    }
 }

Позиционирование графика

Три идентификатора из списка ENUM_CHART_POSITION являются возможными значениями параметра position для функции ChartNavigate().

ENUM_CHART_POSITION

Идентификатор

Описание

CHART_BEGIN

Начало графика (самые старые цены)

CHART_CURRENT_POS

Текущая позиция

CHART_END

Конец графика (самые свежие цены)

Пример:

 long handle=ChartOpen("EURUSD",PERIOD_H12);
 if(handle!=0)
 {
    ChartSetInteger(handle,CHART_AUTOSCROLL,false);
    ChartSetInteger(handle,CHART_SHIFT,true);
    ChartSetInteger(handle,CHART_MODE,CHART_LINE);
    ResetLastError();

    bool res=ChartNavigate(handle,CHART_END,150);

    if(!res)
      Print("Navigate failed. Error = ",GetLastError());
    ChartRedraw();
 }

Отображение графиков

Ценовые графики можно отображать тремя способами:

  • в виде баров;
  • в виде свечей;
  • в виде ломаной линии.

Конкретный способ отображения ценового графика задается функцией ChartSetInteger(handle_графика,CHART_MODE, тип_графика), где тип_графика – одно из значений перечисления ENUM_CHART_MODE.

ENUM_CHART_MODE

Идентификатор

Описание

CHART_BARS

Отображение в виде баров

CHART_CANDLES

Отображение в виде японских свечей

CHART_LINE

Отображение в виде линии, проведенной по ценам Close

Для указания режима отображения объемов на ценовом графике используется функция ChartSetInteger(handle_графика, CHART_SHOW_VOLUMES, тип_отображения), где тип_отображения – одно из значений перечисления ENUM_CHART_VOLUME_MODE.

ENUM_CHART_VOLUME_MODE

Идентификатор

Описание

CHART_VOLUME_HIDE

Объемы не показаны

CHART_VOLUME_TICK

Тиковые объемы

CHART_VOLUME_REAL

Торговые объемы

Пример:

//--- получим handle текущего графика
 long handle=ChartID();
 if(handle>0) // если получилось, дополнительно настроим
 {
    //--- отключим автопрокрутку
    ChartSetInteger(handle,CHART_AUTOSCROLL,false);

    //--- установим отступ правого края графика
    ChartSetInteger(handle,CHART_SHIFT,true);

    //--- отобразим в виде свечей
    ChartSetInteger(handle,CHART_MODE,CHART_CANDLES);

    //--- прокрутим на 100 баров от начала истории
    ChartNavigate(handle,CHART_CURRENT_POS,100);

    //--- установить режим отображения тиковых объемов
    ChartSetInteger(handle,CHART_SHOW_VOLUMES,CHART_VOLUME_TICK);
 }