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