«Кастомные элементы чарта» для OsEngine. Разбор примера построчно ElementsOnChartSampleBot.

16.07.2024 palmax

«Кастомные элементы чарта» для OsEngine. Разбор примера построчно ElementsOnChartSampleBot.

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

 

В нем показано:

  • Создание индикатора MACD на второй области графика.
  • Добавление кнопок для различных действий с элементами графика (добавление точек, линий, сегментов, наклонных линий).
  • Обработка событий нажатия кнопок и взаимодействие с элементами графика.
  • Использование окна параметров робота для настройки элементов.

 

Где найти робота в проекте?

Для начала открываем папку с проектом и заходим в «project».

Далее открываем проект в Visual Studio.

Находим в проекте папку «Robots» и открываем ее.

И наконец-то находим папку «TechSamples» и в ней уже выбираем нашего робота «ElementsOnChartSampleBot».

Разбор робота построчно:

Строки 1-8:

Импортируются необходимые пространства имен:

Строки 11-14:

Определяется пространство имен OsEngine.Robots.TechSamples для организации кода и класс ElementsOnChartSampleBot наследует от BotPanel:

 

 

Строки 19-20:

Инициализируется панель бота:


Cоздается простая вкладка, сохраняется ссылка на вкладку в _tab для дальнейшего использования.

 

Строка 21:

Подписывается на событие CandleFinishedEvent:

Строки 24-26:

Создается индикатор MACD на второй области графика («MacdArea»).

 

Строки 29-45:

Создаются кнопки для добавления различных элементов графика:

 

 

Строки 49-57:

Переопределение методов GetNameStrategyType и ShowIndividualSettingsDialog.

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

 

Строки 59-73:

Объявление полей класса для хранения вкладки, индикатора и кнопок:

 

Строки 75-90:

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

 

 

Обработчики кнопок:

Строки 94-131:

Обработчик события нажатия кнопки для добавления точки на основной график. Проверка готовности вкладки и наличия достаточного количества свечей. Создание и добавление элемента точки на график.

 

Строки 133-172:


Обработчик события нажатия кнопки для добавления горизонтальной линии на основной график. Проверка готовности вкладки и наличия достаточного количества свечей. Создание и добавление горизонтальной линии на график.

 

Строки 174-209:


Обработчик события нажатия кнопки для добавления горизонтального сегмента на основной график. Проверка готовности вкладки и наличия достаточного количества свечей. Создание и добавление сегмента на график.

 

Строки 211-247:

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

 

Строки 249-286:


Обработчик события нажатия кнопки для добавления наклонной линии на основной график. Проверка готовности вкладки и наличия достаточного количества свечей. Создание и добавление наклонной линии на график.

 

Строки 288-296:


Обработчик события нажатия кнопки для очистки всех элементов с графика. Вызов метода ClearChart для очистки графика.

Описание работы методов: 

Заходим в тестер и запускаем нашего робота, открываем окно параметров.

Вид окна параметров робота:

1. Метод «Point on prime chart» обрабатывает нажатие кнопки пользователем и выполняет следующие действия:

  • Проверяет, установлено ли соединение с источником данных. Если нет, метод завершает работу.
  • Извлекает список завершённых свечей. Если свечей нет или их меньше 10, метод завершает работу.
  • Удаляет предыдущую точку на графике, если она существует.
  • Создаёт новую точку на основе данных предпоследней свечи, устанавливая её различные визуальные свойства (координаты, метки, цвета, стиль и размер).
  • Добавляет созданную точку на график и сохраняет её для возможного удаления в будущем.

Пример:

2. Метод «Line on prime chart» обрабатывает нажатие кнопки пользователем и выполняет следующие действия:

  • Проверяет, установлено ли соединение с источником данных. Если соединение не установлено, метод завершает свою работу.
  • Получает список завершённых свечей. Если свечей нет или их меньше 10, метод завершает работу.
  • Если существует предыдущая горизонтальная линия, она удаляется с графика.
  • Создаётся новая горизонтальная линия с заданными свойствами:
    • Значение линии устанавливается по цене закрытия последней свечи.
    • Время начала и окончания линии устанавливается от первой до последней свечи.
    • Линия настраивается для возможности изменения размера, задаются её цвет и толщина.
    • Устанавливаются метка линии, шрифт метки, цвет текста и цвет фона метки.
  • Новая горизонтальная линия добавляется на график.
  • Сохраняется ссылка на созданную линию для возможного дальнейшего удаления или модификации.

Пример:

 

3. Метод «A segment on prime chart» обрабатывает событие нажатия пользователем кнопки для добавления сегмента (линии) на графике.

  • Проверяет, установлено ли соединение с источником данных. Если соединение не установлено, метод прекращает выполнение.
  • Получает список завершённых свечей. Если свечей нет или их меньше 10, метод завершает работу.
  • Проверяет, существует ли уже сегмент на графике. Если сегмент существует, он удаляется с графика.
  • Создаётся новый объект типа LineHorisontal с заданными параметрами:
    • Значение линии устанавливается на основе цены закрытия пятой свечи с конца.
    • Время начала устанавливается на основе времени начала десятой свечи с конца.
    • Время окончания устанавливается на основе времени начала пятой свечи с конца.
    • Задаются цвет линии и её толщина.
    • Устанавливается метка для сегмента.
  • Новый сегмент добавляется на график.
  • Сохраняется ссылка на созданный сегмент для возможного дальнейшего удаления или модификации.

Пример:

 

 

4. Метод «The line to the extra area on the chart» обрабатывает нажатие кнопки пользователем для добавления горизонтальной линии на вторую область графика.

  • Проверяет, установлено ли соединение с источником данных. Если соединение не установлено, метод завершает выполнение.
  • Получает список завершённых свечей из источника данных.
  • Проверяет, есть ли в списке свечей хотя бы 10 элементов. Если свечей меньше 10 или их нет вообще, метод завершает выполнение.
  • Если на графике уже существует линия, она удаляется с графика.
  • Создаётся новый объект типа LineHorisontal с именем «Some line on second area» и привязкой к области графика «MacdArea».
  • Устанавливаются свойства новой линии:
    • Value: Значение линии устанавливается на основе последнего значения из первой серии данных MACD.
    • TimeStart: Время начала линии устанавливается по времени начала первой свечи.
    • TimeEnd: Время окончания линии устанавливается по времени начала последней свечи.
    • Color: Цвет линии устанавливается белым.
    • LineWidth: Толщина линии устанавливается равной 5.
    • Label: Устанавливается метка линии «Some label on second chart».
  • Новая линия добавляется на график.
  • Сохраняется ссылка на созданную линию для возможного дальнейшего удаления или модификации.

Пример:

 

5. Метод «The slanted line to the main chart» обрабатывает нажатие кнопки пользователем для добавления наклонной линии на графике.

  • Проверяет, установлено ли соединение с источником данных. Если соединение не установлено, метод прекращает выполнение.
  • Получает список завершённых свечей из источника данных.
  • Проверяет, есть ли в списке хотя бы 12 свечей. Если свечей меньше 12 или их нет вообще, метод завершает выполнение.
  • Если на графике уже существует наклонная линия, она удаляется с графика.
  • Создаётся новый объект типа Line с меткой «Inclined line» и привязкой к области графика «Prime».
  • Устанавливаются свойства новой линии:
    • ValueYStart: Значение Y в начале линии устанавливается по цене закрытия 11-й свечи с конца.
    • TimeStart: Время начала линии устанавливается по времени начала 11-й свечи с конца.
    • ValueYEnd: Значение Y в конце линии устанавливается по цене закрытия последней свечи.
    • TimeEnd: Время окончания линии устанавливается по времени начала последней свечи.
    • Color: Цвет линии устанавливается Bisque.
    • LineWidth: Толщина линии устанавливается равной 3.
    • Label: Устанавливается метка линии «Some label on Line Inclined».
  • Новая линия добавляется на график.
  • Сохраняется ссылка на созданную линию для возможного дальнейшего удаления или модификации.

Пример:

 

 

6. Метод «Remove all elements» обрабатывает событие нажатия кнопки пользователем для удаления всех элементов с графика и обнуления переменных, хранящих ссылки на созданные элементы.

  • Вызывается метод, который удаляет все вышепоказанные элементы с графика.
  • Происходит присвоение null переменным, которые хранят ссылки на созданные элементы:
    • _lineInclinedOnPrimeChart
    • _lineOnSecondChart
    • _lineSegment
    • _lineOnPrimeChart
    • _point

 

Вывод: пример «ElementsOnChartSampleBot» будет полезен для реализации ваших идей как готовый шаблон. Этот робот демонстрирует, как создавать и взаимодействовать с различными элементами на графике, используя окно параметров робота.

OsEngine: https://github.com/AlexWan/OsEngine
FAQ: https://o-s-a.net/os-engine-faq
Поддержка OsEngine: https://t.me/osengine_official_support

Регистрируйся в АЛОР и получай бонусы: https://www.alorbroker.ru/open
Сайт АЛОР БРОКЕР: https://www.alorbroker.ru
Раздел «Для клиентов»: https://www.alorbroker.ru/openinfo/for-clients
Программа лояльности от АЛОР БРОКЕР и OsEngine: https://smart-lab.ru/company/os_engine/blog/972745.php