Данный пример робота служит демонстрацией реализации кастомных элементов на графике с помощью окна параметров робота.
В нем показано:
· Создание индикатора 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
Комментарии