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

«Кастомные элементы чарта» для 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://t.me/osengine_official_support

 

09:40
191

Комментарии

Нет комментариев. Ваш будет первым!