Данный пример робота служит демонстрацией реализации кастомных элементов на графике с помощью окна параметров робота.
В нем показано:
Где найти робота в проекте?
Для начала открываем папку с проектом и заходим в «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" обрабатывает нажатие кнопки пользователем и выполняет следующие действия:
Пример:
2. Метод "Line on prime chart" обрабатывает нажатие кнопки пользователем и выполняет следующие действия:
1. Проверяет, установлено ли соединение с источником данных. Если соединение не установлено, метод завершает свою работу.
2. Получает список завершённых свечей. Если свечей нет или их меньше 10, метод завершает работу.
3. Если существует предыдущая горизонтальная линия, она удаляется с графика.
4. Создаётся новая горизонтальная линия с заданными свойствами:
1. Значение линии устанавливается по цене закрытия последней свечи.
2. Время начала и окончания линии устанавливается от первой до последней свечи.
3. Линия настраивается для возможности изменения размера, задаются её цвет и толщина.
4. Устанавливаются метка линии, шрифт метки, цвет текста и цвет фона метки.
5. Новая горизонтальная линия добавляется на график.
6. Сохраняется ссылка на созданную линию для возможного дальнейшего удаления или модификации.
Пример:
3. Метод "A segment on prime chart" обрабатывает событие нажатия пользователем кнопки для добавления сегмента (линии) на графике.
1. Проверяет, установлено ли соединение с источником данных. Если соединение не установлено, метод прекращает выполнение.
2. Получает список завершённых свечей. Если свечей нет или их меньше 10, метод завершает работу.
3. Проверяет, существует ли уже сегмент на графике. Если сегмент существует, он удаляется с графика.
4. Создаётся новый объект типа LineHorisontal с заданными параметрами:
1. Значение линии устанавливается на основе цены закрытия пятой свечи с конца.
2. Время начала устанавливается на основе времени начала десятой свечи с конца.
3. Время окончания устанавливается на основе времени начала пятой свечи с конца.
4. Задаются цвет линии и её толщина.
5. Устанавливается метка для сегмента.
5. Новый сегмент добавляется на график.
6. Сохраняется ссылка на созданный сегмент для возможного дальнейшего удаления или модификации.
Пример:
4. Метод "The line to the extra area on the chart" обрабатывает нажатие кнопки пользователем для добавления горизонтальной линии на вторую область графика.
1. Проверяет, установлено ли соединение с источником данных. Если соединение не установлено, метод завершает выполнение.
2. Получает список завершённых свечей из источника данных.
3. Проверяет, есть ли в списке свечей хотя бы 10 элементов. Если свечей меньше 10 или их нет вообще, метод завершает выполнение.
4. Если на графике уже существует линия, она удаляется с графика.
5. Создаётся новый объект типа LineHorisontal с именем "Some line on second area" и привязкой к области графика "MacdArea".
6. Устанавливаются свойства новой линии:
1. Value: Значение линии устанавливается на основе последнего значения из первой серии данных MACD.
2. TimeStart: Время начала линии устанавливается по времени начала первой свечи.
3. TimeEnd: Время окончания линии устанавливается по времени начала последней свечи.
4. Color: Цвет линии устанавливается белым.
5. LineWidth: Толщина линии устанавливается равной 5.
6. Label: Устанавливается метка линии "Some label on second chart".
7. Новая линия добавляется на график.
8. Сохраняется ссылка на созданную линию для возможного дальнейшего удаления или модификации.
Пример:
5. Метод "The slanted line to the main chart" обрабатывает нажатие кнопки пользователем для добавления наклонной линии на графике.
1. Проверяет, установлено ли соединение с источником данных. Если соединение не установлено, метод прекращает выполнение.
2. Получает список завершённых свечей из источника данных.
3. Проверяет, есть ли в списке хотя бы 12 свечей. Если свечей меньше 12 или их нет вообще, метод завершает выполнение.
4. Если на графике уже существует наклонная линия, она удаляется с графика.
5. Создаётся новый объект типа Line с меткой "Inclined line" и привязкой к области графика "Prime".
6. Устанавливаются свойства новой линии:
1. ValueYStart: Значение Y в начале линии устанавливается по цене закрытия 11-й свечи с конца.
2. TimeStart: Время начала линии устанавливается по времени начала 11-й свечи с конца.
3. ValueYEnd: Значение Y в конце линии устанавливается по цене закрытия последней свечи.
4. TimeEnd: Время окончания линии устанавливается по времени начала последней свечи.
5. Color: Цвет линии устанавливается Bisque.
6. LineWidth: Толщина линии устанавливается равной 3.
7. Label: Устанавливается метка линии "Some label on Line Inclined".
7. Новая линия добавляется на график.
8. Сохраняется ссылка на созданную линию для возможного дальнейшего удаления или модификации.
Пример:
6. Метод "Remove all elements" обрабатывает событие нажатия кнопки пользователем для удаления всех элементов с графика и обнуления переменных, хранящих ссылки на созданные элементы.
1. Вызывается метод, который удаляет все вышепоказанные элементы с графика.
2. Происходит присвоение null переменным, которые хранят ссылки на созданные элементы:
1. _lineInclinedOnPrimeChart_lineOnSecondChart
2. _lineSegment
3. _lineOnPrimeChart
4. _point
Вывод: пример «ElementsOnChartSampleBot» будет полезен для реализации ваших идей как готовый шаблон. Этот робот демонстрирует, как создавать и взаимодействовать с различными элементами на графике, используя окно параметров робота.
Комментарии