Данный пример робота служит демонстрацией реализации кастомных элементов параметров.
В нем показано:
1. Создание индикатора ATR на второй области графика.
2. Создание двух индикаторов SMA на основном чарте.
3. Добавление таблицы для вывода в окно параметров значение индикаторов.
4. Использование окна параметров робота для настройки элементов.

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

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

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

Находим папку «TechSamples» и в ней уже выбираем нашего робота «CustomParamsUseBotSample».
Разбор робота построчно:
Строки 1-9:
Импортируются необходимые пространства имен:
Строки 12-15:
Определяется пространство имен OsEngine.Robots.TechSamples для организации кода и класс ElementsOnChartSampleBot наследует от BotPanel:

Строки 19-20:
Инициализируется панель бота:

Cоздается простая вкладка, сохраняется ссылка на вкладку в _tab для дальнейшего использования.
Строка 22-41:
Создание параметров робота:

Строки 43-56:
Создание индикаторов:

Создание и настройка индикаторов: быстрая и медленная скользящие средние, (SMA) и ATR.
Строка 58:
Подписываемся на событие ParametrChangeByUser:
![]()
При изменениях параметров индикаторов пользователем вызывается данный метод и обновляет их значения.
Строка 60:
Подписывается на событие CandleFinishedEvent:
![]()
Строки 64-66:
Настройка интерфейса параметров:

Строки 69-74:
Создание пользовательской вкладки для значений индикаторов:

Строки 79-136:
Метод, отвечающий за создание таблицы значений индикаторов:

Строки 138-161:
Метод, отвечающий за обновление значений таблицы:
Строки 163-187:
Метод, который создает ячейки в таблице уже для готовых значений:

Строки 191-200:
Метод обновления значений параметров индикаторов:
Строки 202-226:
Этот блок отвечает за набор переменных робота:

Строки 228-236:
Переопределение методов GetNameStrategyType и ShowIndividualSettingsDialog.

Первый метод возвращает имя стратегии, второй - пустой предназначен для отображения индивидуальных настроек.
Строки 240-273:
Этот метод, вызываемый при каждом формировании новой свечи на графике, отвечает за обработку торговых сигналов робота:

Строки 275-296:
Метод, отвечающий за открытие позиции:

Строки 298-320:
Метод, отвечающий за закрытие позиции:

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

1. «Base»:

В ней находятся базовые настройки робота.
2. «Indicators»:

Здесь мы настраиваем наши индикаторы.
3. «Exit settings»:

Настройка значений для логики выхода из позиции.
4. «Indicators values»:

В этой вкладке параметров находится таблица значений индикаторов.
Для создания такой таблицы нам требуется три следующих метода:
1. CreateTable
2. PaintTable
3. GetRow
Метод CreateTable:
1. Метод "Название" создаёт таблицу (DataGridView) внутри элемента WindowsFormsHost.
2. Создаётся новый объект типа WindowsFormsHost и присваивается переменной.
3. Создаётся новый объект DataGridView с режимом выбора всей строки (DataGridViewSelectionMode.FullRowSelect) и режимом автоматического изменения размера строк, используя метод DataGridFactory.GetDataGridView.
4. Устанавливается режим автоматического изменения размера заголовков столбцов (ColumnHeadersHeightSizeMode.AutoSize).
5. Создаётся объект DataGridViewTextBoxCell (cell0) и его стиль задаётся равным стилю по умолчанию для newGrid.
6. Создаются и настраиваются пять столбцов (DataGridViewColumn):
1. Time: Столбец для отображения времени.
2. Slow Sma: Столбец для отображения медленной скользящей средней (SMA).
3. Fast Sma: Столбец для отображения быстрой скользящей средней (SMA).
4. Atr: Столбец для отображения значения ATR (Average True Range).
5. Len in Atr: Столбец для отображения длины в ATR.
7. Для каждого столбца устанавливаются следующие свойства:
1. CellTemplate: Устанавливается ячейка шаблона (cell0).
2. HeaderText: Устанавливается текст заголовка столбца.
3. ReadOnly: Устанавливается свойство, чтобы столбец был только для чтения.
4. AutoSizeMode: Устанавливается режим автоматического изменения размера столбца.
8. Все созданные и настроенные столбцы добавляются в DataGridView (newGrid.Columns.Add).
9. Свойство Child объекта _host устанавливается равным созданному DataGridView (newGrid).
10. Ссылка на созданный DataGridView сохраняется в переменную.
Метод PaintTable:
1. Обновляет таблицу с использованием данных свечей и индикаторов.
2. Очищает все строки в таблице для подготовки к добавлению новых данных.
3. Извлекает значения быстрой скользящей средней, медленной скользящей средней и ATR из соответствующих серий данных индикаторов.
4. Проходит по всем свечам в списке.
5. Для каждой свечи вызывает метод GetRow, который возвращает строку данных для добавления в таблицу. В метод передаются текущая свеча, соответствующие значения медленной скользящей средней, быстрой скользящей средней и ATR.
6. Добавляет полученную строку в таблицу (_grid.Rows.Add).
Метод GetRow:
1. Создаёт и возвращает строку для таблицы на основе данных свечи и значений индикаторов (медленная и быстрая скользящие средние, ATR).
2. Создаётся новый объект типа DataGridViewRow.
Первая ячейка:
1. Создаётся новый объект DataGridViewTextBoxCell.
2. В ячейку добавляется значение времени начала свечи.
Вторая ячейка:
1. Создаётся новый объект DataGridViewTextBoxCell.
2. В ячейку добавляется значение медленной скользящей средней.
Третья ячейка:
1. Создаётся новый объект DataGridViewTextBoxCell.
2. В ячейку добавляется значение быстрой скользящей средней.
Четвёртая ячейка:
1. Создаётся новый объект DataGridViewTextBoxCell.
2. В ячейку добавляется значение ATR.
Пятая ячейка:
1. Создаётся новый объект DataGridViewTextBoxCell.
2. Если значение ATR не равно нулю, в ячейку добавляется вычисленное значение разницы между быстрой и медленной скользящими средними, делённой на ATR.
3. Возвращает заполненную строку для добавления в таблицу DataGridView.
Вывод: этот пример робота будет полезен для демонстрации, как создавать и настраивать кастомные элементы в окне параметров робота. Он показывает, как добавлять и настраивать индикаторы на графике, а также как создавать таблицу для вывода значений индикаторов, что может служить готовым шаблоном для реализации подобных задач.
P.S.
Os Engine поддержка терминала: https://t.me/osengine_official_support
Обсуждаем в телеграмме: https://t.me/o_s_a_chat
Канал проекта: https://t.me/bad_quant
Общество с ограниченной ответственностью "ВАН ТЕХНОЛОГИИ"
специализируется на разработке программного обеспечения для алгоритмической торговли на биржах.
ИНН 2373023082 ОГРН 1232300013593 т. +7 953 769 56 45 почта: alexey@o-s-a.net
353225, Россия, Краснодарский край, Динской м.р-н,
Васюринское с.п., Васюринская ст-ца, Луначарского ул., д. 142
Основной ОКВЭД: 62.01 - разработка компьютерного программного обеспечения.
Дополнительный ОКВЭД: - 46.66 - 47.41 - 47.99 - 62.02 - 62.09 - 63.11 - 63.11.1 - 82.99 - 95.11
Open Source Algo Trading Platform
Программа предназначена для автоматизации процесса торговли на бирже. Программа обеспечивает реализацию следующих функций: создание автоматизированных торговых систем для торговли на бирже; тестирование автоматизированных торговых систем; скачивание и сохранение исторических данных по торгам на биржах; оптимизация механических торговых систем; подключение к биржам и торговля на них. ОС: Windows 10/11, Windows Server 2012/2016/2019/2022. Язык программирования: C# Внесена в единый реестр российского программного обеспечения (Реестровая запись №30086 от 06.10.2025): https://reestr.digital.gov.ru/reestr/4075388/
Комментарии