Изображение блога
OS_Engine_team
OS_Engine_team Блог компании Os_Engine
16 июля 2024, 11:25

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

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

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

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

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

 

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

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

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

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

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

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

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

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

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

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

Строки 1-8:

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

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


Строки 11-14:

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

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

 

Строки 19-20:

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

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

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

 

Строка 21:

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

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

Строки 24-26:

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

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

 

Строки 29-45:

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

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

 

Строки 49-57:

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

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

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

 

Строки 59-73:

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

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

Строки 75-90:

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

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

 

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

Строки 94-131:

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

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

 

Строки 133-172:

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

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

 

Строки 174-209:

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

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

 

Строки 211-247:

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

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

 

Строки 249-286:

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

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

 

Строки 288-296:

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

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

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

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

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

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

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

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

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

Пример:

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

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

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

Пример:

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

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

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

Пример:

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

 

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».
  • Новая линия добавляется на график.
  • Сохраняется ссылка на созданную линию для возможного дальнейшего удаления или модификации.

Пример:

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

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».
  • Новая линия добавляется на график.
  • Сохраняется ссылка на созданную линию для возможного дальнейшего удаления или модификации.

Пример:

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

 

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

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

 

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

«Кастомные элементы чарта» для OsEngine. Разбор примера построчно 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

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

0 Комментариев

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн