Описание стрелочных индикаторов

Независимый рейтинг брокеров бинарных опционов за 2020 год:

Описание стрелочных индикаторов

Бонусы для новых трейдеров до 30 000$!

Открытие счета бесплатно, бонусы для новичков 6500 $

Огромный раздел по обучению. Бесплатные прогнозы и стратегии!

Стрелочные и сигнальные

О Разделе «Стрелочные и сигнальные»

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

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

Использование стрелочных индикаторов в торговле

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

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

Стрелочный индикатор для бинарных опционов

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

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

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

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

Лучшие отечественные брокеры (на русском языке):

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

Актуальный стрелочный индикатор

Наиболее актуальным и успешным на рынке торговли считается стрелочный индикатор без перерисовки для размещения на бинарных опционах PATTERN OPTIONS, Genesis. Стрелочный индикатор Genesis является многолетним трудом лучших трейдеров, которые смогли усовершенствовать систему Symphonie trader и избавить ее от существенного несовершенства — это перерисование сигналов.

Многие индикаторные стратегии не позволяют торговать на бинарных опционах должным образом из-за перерисовки.Большинство из стрелочных индикаторов показывают сигнал, а после передвижения стоимости в другом направлении также изменяют свои показатели. Основным преимуществом стрелочного индикатора Genesis является тот факт, что он не меняет свой сигнал во время изменения цены и в большинстве случаев указывает верное направление.

Профессиональные трейдеры отдают свое предпочтение данному индикатору из-за его простоты в использовании и точности сигналов. Индикатор Genesis состоит из четырех линий, а каждая отдельно взятая линия является отдельным индикатором.

Стрелочные и сигнальные

О Разделе «Стрелочные и сигнальные»

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

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

Использование стрелочных индикаторов в торговле

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

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

Рисование стрелочных индикаторов с использованием класса CCanvas

Содержание

Введение

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

Рис.1. Стрелочные приборы

1. Координаты и привязка

Существует два типа расположения прибора на графике — абсолютное и относительное.

При абсолютном расположении координаты представляют собой дистанции в пикселях по осям X и Y от угла привязки.

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

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

На рисунке 2 приведен пример относительного расположения.

Рис.2. Относительное расположение стрелочных приборов

Разберем по порядку настройки каждого прибора:

  • Прибор «gg01»: относительное расположение отключено. Смещение по горизонтали 40, по вертикали 40.
  • Прибор «gg02»: относительное расположение — горизонтальное, опорный объект — «gg01». Смещение от локального начала координат (точка A) по горизонтали 15, по вертикали 0.
  • Прибор «gg03»: относительное расположение — вертикальное, опорный объект — «gg01». Смещение от локального начала координат (точка B) по горизонтали 0, по вертикали 15.
  • Прибор «gg04»: относительное расположение — вертикальное, опорный объект — «gg02». Смещение от локального начала координат (точка C) по горизонтали 50, по вертикали 15.

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

Тип расположения и координаты устанавливаются при помощи функции GaugeCreate().

2. Элементы стрелочного прибора

Стрелочный прибор состоит из двух графических объектов. Один объект называется слоем шкалы, другой — слоем стрелки. Оба графических объекта имеют одинаковые координаты, слой стрелки расположен поверх слоя шкалы. Имя прибора, которое задают во входных параметрах, служит префиксом для имен обоих объектов. Например, если имя прибора «Gauge01», то слой шкалы получит имя «Gauge01_s», а слой стрелки — «Gauge01_n».

Эту статью вы не забудете никогда:  Трейдерам бинарных опционов Рынок переполнен нефтью

На рисунке 3 показано строение стрелочного прибора.

Рис.3. Строение стрелочного прибора

  • бордюр (1)
  • отметки шкалы (5, 6, 7)
  • подписи отметок шкалы (4)
  • выделенные диапазоны (2, 12)
  • надписи (3, 10, 11)

Надписи различают по назначению:

  • описание прибора (3)
  • единицы измерения (11)
  • текущее значение (10)
  • множитель подписей шкалы (не показан)

Отметки шкалы разделяют на:

Подписи есть только у основных отметок, шаг которых устанавливается числовым значением. Шаг средних отметок рассчитывается исходя из заданного количества средних отметок между соседними основными. Шаг малых отметок рассчитывается исходя из заданного количества малых отметок между соседними средними. Допускается отсутствие малых и средних отметок на шкале.

Слой стрелки содержит:

На рисунке 3 показаны размеры некоторых элементов стрелочного прибора:

  • d — размер прибора, который соответствует диаметру внешней линии контура прибора
  • b — размер бордюра
  • g — размер пространства между бордюром и элементами шкалы
  • c — размер центра стрелки.

Важно. Единственный размер, который задают в пикселях — это диаметр прибора (на рисунке 3 — размер d). Все остальные размеры элементов и шрифтов задают в условных единицах и их величина рассчитывается как процент от диаметра. Это сделано для простоты масштабирования. Достаточно изменить диаметр, и все остальные размеры будут пропорционально пересчитаны. Коэффициенты для расчета перечислены в разделе «макроподстановки» и могут быть изменены пользователем по желанию.

2.2. Форма корпуса

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

Рис.4. Форма стрелочного прибора

На рисунке 4 показан круглый стрелочный прибор (a) и два стрелочных прибора в форме сектора (b, c). Для установки нужной формы корпуса используется функция GaugeSetCaseParameters().

Самый важный элемент стрелочного прибора. От ее вида зависит удобство восприятия данных оператором. Шкала не должна выглядеть загроможденной, но при этом должна быть достаточно информативной. Выбор крайних значений шкалы, а также шаг основных отметок, требует особого внимания. Функция GaugeSetScaleParameters() позволяет настроить диапазон шкалы, ее поворот, и значения крайних точек (минимум и максимум). Минимум может быть как слева (прямой порядок), так и справа (обратный порядок).

Диапазон шкалы — это угол, образованный двумя радиус-векторами крайних точек шкалы. Пример показан на рисунке 5.

Рис.5. Диапазон шкалы

Поворот шкалы — это угол отклонения биссектрисы угла диапазона шкалы от луча, исходящего из центра прибора вертикально вверх. Пример на рисунке 6.

Рис.6. Угол поворота шкалы

При комбинировании угла диапазона шкалы и угла поворота можно достаточно гибко настроить внешний вид прибора. На рисунке 4(с) прибор с диапазоном 90 градусов и поворотом 45.

Минимум и максимум шкалы — важные параметры, которые следует выбирать исходя из диапазона допустимых значений отображаемой величины. Для удобства допускается отсутствие отметки нуля на шкале. Если величина изменяется в диапазоне от 400 до 600, нет смысла рисовать шкалу от нуля. На рисунке 7 показаны некоторые примеры установки минимума и максимума.

Рис.7. Минимум и максимум шкалы

  • a) значения от 0 до 500, прямой порядок
  • b) значения от -200 до 400, прямой порядок
  • c) значения от -400 до 0, прямой порядок
  • d) значения от 500 до 0, обратный порядок
  • e) значения от 200 до 800, прямой порядок
  • f) значения от 0 до -800, обратный порядок

2.4. Отметки на шкале

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

Выравнивание может быть:

  • по внутреннему краю шкалы
  • по внешнему краю шкалы
  • по центру

На рисунке 8 показаны примеры выравнивания отметок шкалы:

  • a — выравнивание по центру
  • b — по внутреннему краю
  • c — по внешнему краю

Для настройки используется функция GaugeSetMarkParameters().

Расположение подписей отметок относится к настройкам шкалы и устанавливается при помощи функции GaugeSetScaleParameters().

На рисунке 8(a) приведен пример расположения подписей с внутренней стороны шкалы, на рисунке 8(b) и 8(c) — с внешней.

Для того чтобы подписи отметок не занимали слишком много места на шкале, рекомендуется использовать множитель — коэффициент, на который будут разделены все отображаемые значения подписей. Множитель может принимать значения от 0.0001 до 10000. На рисунке 4(c) используется множитель 100, что позволило использовать в подписях отметок однозначные числа вместо трехзначных. На рисунке 1 для индикатора ATR используется множитель 0.0001, что дало возможность не использовать точку и нули в подписях отметок. Множитель устанавливается при помощи функции GaugeSetScaleParameters().

Рис.8. Расположение отметок и подписей

Надписи предназначены для отображения дополнительной информации и бывают четырех типов:

  • описание прибора
  • единицы измерения
  • текущее значение
  • множитель

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

Расположение надписи устанавливается при помощи угла и радиуса. Угол задают в градусах, и его величина равняется углу между лучом, исходящим из центра прибора вертикально вверх и воображаемым отрезком, соединяющим центр прибора с центром надписи. Радиус задают в условных величинах. Он может принимать значения от 0 до 10, где 0 соответствует радиусу центра стрелки, а значение 10 соответствует внешнему радиусу шкалы.

На рисунке 9 приведен пример расположения надписей.

  • Надпись «Profit» (описание прибора) имеет координаты: угол 0 и радиус 3.
  • Надпись «0.00» (текущее значение) имеет координаты: угол 225 и радиус 4.
  • Надпись «USD» (единицы измерения) имеет координаты: угол 215 и радиус 8.

Для настройки надписей используется функция GaugeSetLegendParameters().

Рис.9. Координаты надписей

Важно. Надписи не закреплены на шкале и их угол не связан с углом поворота шкалы.

2.6. Выделенные диапазоны

Выделенные диапазоны данных — неотъемлемый элемент любого стрелочного прибора. Они помогают определить, что величина приняла аварийные значения или вошла в какой-то особый диапазон. При помощи функции GaugeSetRangeParameters() можно установить до четырех выделенных диапазонов. Для этого нужно задать крайние значения и цвет выделения. На рисунке 1 у индикатора Profit выделены два диапазона: от 200 до 400 зеленый, сигнализирующий о том, что пора фиксировать прибыль, и от -200 до -400 оранжевый, предупреждающий о большой просадке.

При помощи функции GaugeSetNeedleParameters() настраивается размер центра стрелки и тип закрашивания. Тип закрашивания влияет на ресурсоемкость индикатора, так как слой стрелки полностью перерисовывается при каждом обновлении показаний. На рисунке 10 показаны примеры закрашивания.

  • закрашенная стрелка с использованием алгоритма сглаживания (a)
  • закрашенная стрелка без использования алгоритма сглаживания (b)
  • контур стрелки с использованием алгоритма сглаживания без закрашивания (c)

Рис.10. Способы закрашивания стрелки

Преимущества и недостатки каждого из способов рассмотрим в разделах, касающихся доработки класса CCanvas и оценки ресурсоемкости.

3. Функции

В таблице 1 приведен список функций для рисования стрелочных приборов и настройки их внешнего вида.

Функция Действие
GaugeCalcLocation Считает координаты центра стрелочного прибора
GaugeCreate Создает стрелочный прибор
GaugeDelete Удаляет стрелочный прибор
GaugeNewValue Обновляет положение стрелки и отображаемую величину
GaugeRedraw Перерисовывает стрелочный прибор
GaugeRelocation Изменяет расположение объектов прибора на графике
GaugeSetCaseParameters Устанавливает параметры корпуса стрелочного прибора
GaugeSetLegendParameters Устанавливает параметры надписи
GaugeSetMarkLabelFont Устанавливает шрифт подписей отметок шкалы
GaugeSetMarkParameters Устанавливает параметры отметок шкалы
GaugeSetNeedleParameters Устанавливает параметры стрелки
GaugeSetRangeParameters Устанавливает параметры диапазонов
GaugeSetScaleParameters Устанавливает параметры шкалы

Табл.1. Список функций

Рассмотрим каждую функцию более детально. В том порядке, в котором их рекомендуется вызывать при инициализации.

Создает стрелочный прибор.

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

[out] Ссылка на структуру стрелочного прибора.

[in] Дистанция в пикселях по оси X от угла привязки. При относительном расположении — дистанция от локального начала координат.

[in] Дистанция в пикселях по оси Y от угла привязки. При относительном расположении — дистанция от локального начала координат.

[in] Размер стрелочного прибора. Представлен, как диаметр корпуса.

[in] Имя другого стрелочного прибора, относительно которого задано расположение. Актуально только в том случае, если задано относительное расположение.

[in] Способ относительного расположения. Значение может быть одним из значений перечисления ENUM_REL_MODE.

[in] Угол графика для привязки графического объекта. Значение может быть одним из значений перечисления ENUM_BASE_CORNER.

[in] Объекты на заднем плане.

[in] Степень прозрачности шкалы. Может принимать значения от 0 до 255.

[in] Степень прозрачности стрелки. Может принимать значения от 0 до 255.

Вернет true в том случае, если объекты слоя шкалы и слоя стрелки были созданы, иначе вернет false.

Устанавливает параметры корпуса стрелочного прибора.

[out] Ссылка на структуру стрелочного прибора.

[in] Стиль корпуса. Значение может быть одним из значений перечисления ENUM_CASE_STYLE.

[in] Цвет корпуса.

[in] Стиль бордюра. Значение может быть одним из значений перечисления ENUM_CASE_BORDER_STYLE.

[in] Цвет бордюра.

[in] Размер области между внутренней линией бордюра и ближайшим элементом шкалы (на рисунке 3 размер «g»). Значение может быть одним из значений перечисления ENUM_SIZE.

Устанавливает параметры шкалы.

[out] Ссылка на структуру стрелочного прибора.

[in] Диапазон шкалы. Задают как угол, образованный двумя радиус-векторами крайних отметок шкалы. Может принимать значения от 30 до 320 градусов (рисунок 5).

[in] Минимальное значение шкалы при прямой нумерации.

[in] Максимальное значение шкалы при прямой нумерации.

[in] Множитель подписей шкалы. Значение может быть одним из значений перечисления ENUM_MUL_SCALE.

[in] Стиль шкалы. Значение может быть одним из значений перечисления ENUM_SCALE_STYLE.

[in] Отображение линии шкалы.

Устанавливает параметры отметок шкалы.

[out] Ссылка на структуру стрелочного прибора.

[in] Стиль отметок шкалы. Значение может быть одним из значений перечисления ENUM_MARK_STYLE.

[in] Размер отметок. Значение может быть одним из значений перечисления ENUM_SIZE.

[in] Шаг основных отметок шкалы. Основные отметки сопровождаются подписями соответствующих значений.

[in] Количество средних отметок шкалы между соседними основными отметками. Значение может быть любым положительным числом. Ограничений по величине нет. При значении 0 средние отметки отображаться не будут.

[in] Количество малых отметок шкалы между соседними средними отметками (или основными, если средние не отображаются). Значение может быть любым положительным числом. Ограничений по величине нет. При значении 0 малые отметки отображаться не будут.

Устанавливает шрифт подписей отметок шкалы.

[out] Ссылка на структуру стрелочного прибора.

[in] Размер шрифта подписей отметок шкалы. Значение может быть одним из значений перечисления ENUM_SIZE.

Устанавливает параметры надписи.

[out] Ссылка на структуру стрелочного прибора

[in] Тип надписи. Значение может быть одним из значений перечисления ENUM_GAUGE_LEGEND.

[in] Отображать надпись.

[in] Для надписей типа LEGEND_DESCRIPTION или LEGEND_UNITS это отображаемая строка. Для надписи типа LEGEND_MUL данный параметр игнорируется. Для надписи типа LEGEND_VALUE это количество знаков после запятой. Может принимать значения от «0» до «8». Любые другие значения воспринимаются, как «0». Например, строка «2» означает два знака после запятой. Строка «hello» означает 0 знаков после запятой.

[in] Радиус. Расстояние в условных единицах от центра стрелочного прибора до центра надписи (рисунок 9).

[in] Угловая координата. Ее величина равняется углу между лучом, исходящим из центра прибора вертикально вверх и воображаемым отрезком, соединяющим центр прибора с центром надписи (рисунок 9).

[in] Размер шрифта надписи.

Устанавливает параметры выделенного диапазона.

[out] Ссылка на структуру стрелочного прибора.

[in] Индекс диапазона. Может принимать значения от 0 до 3.

[in] Отображать диапазон.

[in] Начальное значение.

[in] Конечное значение.

[in] Каким цветом выделить диапазон.

Устанавливает параметры стрелки.

[out] Ссылка на структуру стрелочного прибора.

[in] Стиль центра стрелки. Значение может быть одним из значений перечисления ENUM_NCENTER_STYLE.

[in] Цвет центра стрелки.

[in] Цвет стрелки.

[in] Способ закрашивания стрелки. Значение может быть одним из значений перечисления ENUM_NEEDLE_FILL.

Перерисовывает стрелочный прибор. Функцию необходимо вызывать после изменения каких-либо параметров для применения изменений.

[in] Ссылка на структуру стрелочного прибора.

Обновляет положение стрелки и отображаемую величину.

[in] Ссылка на структуру стрелочного прибора.

[in] Текущее значение переменной.

Удаляет графические объекты, составляющие стрелочный прибор. Функцию необходимо вызывать из обработчика OnDeinit().

[in] Ссылка на структуру стрелочного прибора.

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

[in] Ссылка на структуру стрелочного прибора.

Вернет true в том случае, если полученные значения координат отличаются от предыдущих. В противном случае вернет false. Если функция вернула true, необходимо вызвать функцию GaugeRelocation(), чтобы применить рассчитанные параметры.

Размещает графические объекты, составляющие стрелочный прибор, в заданном месте графика. Необходимо вызывать в том случае, если указано относительное расположение, и функция GaugeCalcLocation() вернула результат true.

[in] Ссылка на структуру стрелочного прибора.

4. Перечисления

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

Перечисление Описание
ENUM_CASE_BORDER_STYLE Стиль бордюра
ENUM_CASE_STYLE Стиль корпуса
ENUM_GAUGE_LEGEND Тип надписи
ENUM_MARK_STYLE Стиль отметок шкалы
ENUM_MUL_SCALE Множитель подписей отметок шкалы
ENUM_NCENTER_STYLE Стиль центра стрелки
ENUM_NEEDLE_FILL Способ заливки стрелки
ENUM_REL_MODE Способ относительного расположения
ENUM_SCALE_STYLE Стиль шкалы
ENUM_SIZE Размер

Табл.2. Список перечислений

Стиль бордюра. Значения перечислены в таблице 3.

Идентификатор Описание
CASE_BORDER_NONE Нет бордюра
CASE_BORDER_THIN Тонкий бордюр
CASE_BORDER_THICK Толстый бордюр

Табл.3. Значения ENUM_CASE_BORDER_STYLE

Стиль корпуса. Значения перечислены в таблице 4.

Идентификатор Описание
CASE_ROUND Круглый корпус
CASE_SECTOR Корпус в виде сектора

Табл.4. Значения ENUM_CASE_STYLE

Тип надписи. Значения перечислены в таблице 5.

Идентификатор Описание
LEGEND_DESCRIPTION Описание стрелочного прибора
LEGEND_UNITS Единицы измерения
LEGEND_MUL Множитель подписей шкалы
LEGEND_VALUE Текущее значение переменной

Табл.5. Значения ENUM_GAUGE_LEGEND

Стиль отметок шкалы. Значения перечислены в таблице 6.

Идентификатор Описание
MARKS_INNER Выравнивание отметок по внутреннему краю
MARKS_MIDDLE Выравнивание отметок по центру
MARKS_OUTER Выравнивание отметок по внешнему краю

Табл.6. Значения ENUM_MARK_STYLE

Множитель подписей отметок шкалы. Значения перечислены в таблице 7.

Идентификатор Значение Отображение
MUL_10000 10000 х10k
MUL_1000 1000 х1k
MUL_100 100 х100
MUL_10 10 х10
MUL_1 1 Не отображается
MUL_01 0.1 /10
MUL_001 0.01 /100
MUL_0001 0.001 /1k
MUL_00001 0.0001 /10k

Табл.7. Значения ENUM_MUL_SCALE

Стиль центра стрелки. Значения перечислены в таблице 8.

Идентификатор Описание
NDCS_NONE Не отображать центр стрелки
NDCS_SMALL Отображать малый
NDCS_LARGE Отображать крупный

Табл.8. Значения ENUM_NCENTER_STYLE

Способ закрашивания стрелки. Значения перечислены в таблице 9.

Идентификатор Описание
NEEDLE_FILL Закрашивать стрелку без сглаживания границ
NEEDLE_FILL_AA Закрашивать стрелку со сглаживанием границ
NEEDLE_NOFILL_AA Не закрашивать стрелку со сглаживанием границ

Табл.9. Значения ENUM_NEEDLE_FILL

Способ относительного расположения. Значения перечислены в таблице 10.

Идентификатор Описание
RELATIVE_MODE_NONE Относительное расположение отключено
RELATIVE_MODE_HOR Горизонтальное
RELATIVE_MODE_VERT Вертикальное
RELATIVE_MODE_DIAG По диагонали

Табл.10. Значения ENUM_REL_MODE

Стиль шкалы. Значения перечислены в таблице 11.

Идентификатор Описание
SCALE_INNER Подписи отметок с внутренней стороны шкалы
SCALE_OUTER Подписи отметок с наружной стороны шкалы

Табл.11. Значения ENUM_SCALE_STYLE

Размер. Значения перечислены в таблице 12.

Идентификатор Описание
SIZE_SMALL Малый
SIZE_MIDDLE Средний
SIZE_LARGE Крупный

Табл.12. Значения ENUM_SIZE

5. Макроподстановки

Коэффициенты для размеров:

Цвета по умолчанию:

6. Доработка класса CCanvas


6.1. Рисование отрезка со сглаживанием

Метод LineAA позволяет рисовать отрезок с использованием алгоритма сглаживания. Но при рисовании отметок шкалы, расположенных по кругу, появляется одна проблема. При пересчете координат начала и конца отрезка из полярной системы координат в прямоугольную, получаются дробные числа, которые округляются до целых, и расположение меток становится «кривым», что показано на рисунке 11(b).

Поэтому был добавлен метод LineAA2, который отличается от LineAA только тем, что тип входных параметров x1, y1, x2, y2 изменен на double. Это позволяет передать дробные значения координат и избавиться от описанной проблемы, что видно на рисунке 11(с).

На рисунке 11 для сравнения показаны примеры рисования отметок шкалы разными методами:

Рис. 11. Рисование отметок шкалы разными методами (увеличение 200%)

6.2. Закрашивание области со сглаженными границами

Метод Fill предназначен для закрашивания области, ограниченной отрезками, нарисованными без использования алгоритма сглаживания. Если попробовать закрасить им область, ограниченную отрезками, нарисованными методом LineAA, то область будет закрашена не полностью, что видно на рисунке 12(a).

Рис.12. Закрашивание области со сглаженными границами (увеличение 200%)

В связи с этим был добавлен метод Fill2. Разница в том, что он закрашивает не цвет фона, а любой цвет, который отличается от цвета отрезков, ограничивающих область. Это позволяет закрасить полутона, которые не закрашивает метод Fill. На рисунке 12(b) приведен пример.

Тем не менее, и у этого метода есть недостатки. При наличии острого угла небольшой величины, часть его остается не закрашенной, что показано на рисунке 12(c). В связи с этим был найден следующий выход.

1) Сначала весь холст (слой стрелки) закрашиваем цветом, которым должна быть закрашена стрелка:

2) Затем рисуем стрелку, состоящую из трех отрезков, методом LineAA2:

3) После этого закрашиваем область вокруг стрелки прозрачным цветом методом Fill2:

Описанный способ не самый оптимальный, но позволяет красиво рисовать стрелку.

Рис.13. Стрелки, закрашенные разными методами

На рисунке 13 показаны стрелки, закрашенные разными методами.

  • a) Стрелка состоящая из трех отрезков, нарисованных методом LineAA2 и закрашенная методом Fill2.
  • b) Стрелка, нарисованная методом FillTriangle.
  • c) Стрелка состоящая из трех отрезков, нарисованных методом LineAA2 без закрашивания.

Как видно, стрелка на рисунке 13(b) имеет угловатый вид при небольшом отклонении от углов, кратных 90 градусам. Кроме того, наблюдается смещение стрелки от центра, что обусловлено округлением значений координат вершин при пересчете из полярной системы координат в прямоугольную. Однако при этом данный метод самый экономный с точки зрения ресурсоемкости (этот вопрос рассмотрим позже). Стрелка на рисунке 13(c) является компромиссом между двумя методами, описанными выше. Она состоит из отрезков, нарисованных методом LineAA2, но без закрашивания.

7. Примеры применения

Разберем применение библиотеки стрелочных приборов на нескольких примерах.


7.1. Индикатор текущей прибыли

Начнем с простейшего. Приведенный ниже пример демонстрирует необходимый минимум для добавления стрелочного прибора в советник или индикатор.

Для начала нужно объявить структуру стрелочного прибора. Затем в функции инициализации создать стрелочный прибор при помощи GaugeCreate() и вызвать функцию рисования GaugeRedraw(). Для обновления показаний использовать GaugeNewValue(), которая в данном примере вызывается из обработчика OnCalculate().

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

Рис.14. Внешний вид стрелочного прибора по умолчанию

Добавим возможность настройки диапазона шкалы и угла поворота. Для этого в список входных параметров добавится еще два.

В коде инициализации добавим вызов функции установки параметров шкалы.

Здесь, кроме новых входных параметров, будут также установлены:

  • новые значения минимума и максимума (-200 и 400 соответственно)
  • множитель подписей отметок шкалы (MUL_1)
  • стиль шкалы (SCALE_INNER — подписи отметок внутри)
  • цвет отметок шкалы (clrBlack)

Так как мы изменили крайние значения шкалы, желательно откорректировать шаг основных отметок. Чтобы не было нагромождения текста, оптимальным будет шаг 100. При этом установим одну среднюю отметку между соседними основными и 4 малые между соседними средними. Таким образом, минимальный шаг отметок у нас получился 10.

Выделим на шкале два диапазона данных. Диапазон с индексом 0, который начинается от значения 200 и заканчивается значением 400, будет выделен цветом clrLimeGreen. Диапазон с индексом 1, который начинается от значения -100 и заканчивается значением -200, будет выделен цветом clrCoral.

Настроим отображение надписей. Установим описание прибора, единицы измерения и текущее значение с одним знаком после запятой. Рассмотрим по порядку.

Отображаемая строка «Profit», радиус 3, угол 0, размер шрифта 14 условных единиц.

Отображаемая строка «USD», радиус 8, угол 215, размер шрифта 10 условных единиц.

Здесь строка «1» означает формат отображения — один знак после запятой. Координаты: радиус 4, угол 255. Размер шрифта 20 условных единиц.

Итак, после дополнительных настроек стрелочный прибор будет иметь вид, показанный на рисунке 15.

Рис.15. Внешний вид стрелочного прибора после дополнительной настройки

7.2. Индикатор Dashboard

Рассмотрим более сложный пример — индикатор Dashboard. Его внешний вид показан на рисунке 1. Индикатор отображает текущую прибыль, спред, уровень свободной маржи в процентах, и текущие значения технических индикаторов ATR, Force Index и RSI.

Для начала объявим массив структур стрелочного прибора.

После этого создадим и настроим стрелочные приборы.

В левом нижнем углу будет находиться индикатор уровня маржи. Он будет иметь абсолютные координаты, а все остальные индикаторы будут располагаться относительно него или соседнего индикатора.

Продолжаем выстраивать нижний ряд. Следующий — индикатор текущей прибыли.

Замыкает нижний ряд индикатор спреда.

Индикатор ATR, левый в верхнем ряду, располагается относительно индикатора свободной маржи.

Индикатор RSI располагается относительно индикатора спреда, над ним.

Индикатор Force Index — над индикатором текущей прибыли.

Рисование стрелочных приборов можно выполнить в цикле.

При наступлении события OnCalculate() пересчитываем текущие значения и вызываем для каждого индикатора функцию GaugeNewValue().

Обратите внимание, что в данном примере нет смысла вызывать GaugeRelocation() из события OnChartEvent(). Хотя здесь и используется относительное расположение, но поскольку стрелочные приборы инициализируются все вместе, исключается ситуация, когда изменилось расположение или размер одного из них, и нужно пересчитать координаты другого.

8. Оценка ресурсоемкости

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

Скрипт запускает каждый из способов рисования стрелки в цикле по 1000 раз и измеряет затраченное на это время в миллисекундах.

Рис.16. Результаты тестирования ресурсоемкости

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

Заключение

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

Отдельное внимание следует обратить на ресурсоемкость. Длительные вычисления в обработчике OnCalculate() могут вызвать зависания терминала. Поэтому рекомендуется использовать компромиссный способ рисования стрелки (сглаживание без закрашивания).

Эту статью вы не забудете никогда:  Курс Британского Фунта к доллару GBPUSD
Здесь за открытие счета начисляется бонус:
Понравилась статья? Поделиться с друзьями:
Топ лучших брокеров бинарных опционов
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: