Константы, описывающие различные свойства графиков, разделены на следующие группы:
- Типы событий – события, которые возникают при работе с графиком;
- Периоды графиков – стандартные встроенные периоды;
- Свойства графиков – идентификаторы, используемые в качестве параметров функций для работы с графиками;
- Константы позиционирования — значения параметра функции 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)
Свойства графиков
Идентификаторы семейства перечислений 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Три идентификатора из списка 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);
}