Изображение блога
OS_Engine_team
OS_Engine_team Блог компании Os_Engine
Вчера в 12:03

Добавление индикаторов на источник BotTabSimple. Индикаторы OsEngine #11

К разным источникам данных индикаторы в OsEngine добавляются немного по-разному.

Всего на данный момент в OsEngine четыре источника, к которым можно добавить индикатор:

  1. BotTabSimple – базовый источник для одного торгового инструмента.
  2. BotTabIndex – источник, преобразующий данные по N торговым инструментам в индекс по какой-то формуле.
  3. BotTabScreener – источник, позволяющий торговать одновременно N торговых инструментов.
  4. BotTabPair – источник для торговли пар инструментов.

Сегодня рассмотрим, как это делается для базового источника одного инструмента (BotTabSimple).

Добавление индикаторов на источник BotTabSimple. Индикаторы OsEngine #11

1. Где исходники?

Посмотреть исходный код робота, показанного ниже в качестве примера, можно, открыв его в проекте OsEngine:

Добавление индикаторов на источник BotTabSimple. Индикаторы OsEngine #11

На ГитХаб данный робот располагается здесь: https://github.com/AlexWan/OsEngine/blob/master/project/OsEngine/Robots/PositionsMicromanagement/AlligatorTrendAverage.cs

Обязательно откройте его исходный код, чтобы посмотреть, как это работает.

Каждый экземпляр этого робота имеет на графике индикатор Alligator:

Добавление индикаторов на источник BotTabSimple. Индикаторы OsEngine #11

2. Конструктор робота. Создание индикаторов и присвоение им параметров.

В конструкторе робота нас должны интересовать следующие вещи:

Добавление индикаторов на источник BotTabSimple. Индикаторы OsEngine #11 

  1. Создание параметров робота. Обратите внимание на их название. Это всё – параметры для настройки индикатора, которые будут ниже использованы по назначению.
  2. Создание индикатора через вызов фабрики индикаторов. И затем добавление индикатора на источник BotTabSimple. На этих двух строках мы остановимся чуть подробнее позже.
  3. Присваивание параметрам индикатора параметров робота. Про это будет отдельная статья.
  4. Сохраняем данные по индикатору.

 

3. Вызов фабрики индикаторов для создания индикатора.

Для того, чтобы в роботе создать индикатор, нужно обратиться к фабрике индикаторов. Вот эта строка:

Добавление индикаторов на источник BotTabSimple. Индикаторы OsEngine #11 

Метод IndicatorsFactory.CreateIndicatorByName имеет следующие параметры:

  1. String class. Название индикатора. То, как он называется в папке Scripts или внутри OsEngine, должно точно совпадать с названием индикатора.
  2. String name. Уникальное имя индикатора. По этому имени данные внутри индикатора будут сохраняться в файловую систему, поэтому обычно нужно использовать «Имя робота» + «Ещё что-то», что здесь и происходит.
  3. Bool canDelete. Можно ли удалить индикатор с графика. Обычно нужно ставить false, чтобы пользователь не мог удалить этот индикатор вручную.

 

4. Добавление индикатора на источник BotTabSimple.

После того, как индикатор создан, необходимо положить его на источник. Для этого:

Добавление индикаторов на источник BotTabSimple. Индикаторы OsEngine #11 

Обращаемся к источнику, на который будем привязывать индикатор, и вызываем у него метод CreateCandleIndicator. На вход метод принимает:

  1. Объект индикатора. В данном случае это _alligator.
  2. String nameArea. Область данных, на которую разместится индикатор. Prime – это основная область, на которой лежат свечи. Впишите сюда любую другую, и индикатор отобразится в новой области данных.

 

5. Установка параметров индикатора, когда пользователь сменил параметры робота.

Это очень важная история для тех, кто хочет оптимизировать своих роботов в оптимизаторе. Необходимо подписаться на событие изменения параметров у робота и передать их в параметры индикатора:

Добавление индикаторов на источник BotTabSimple. Индикаторы OsEngine #11 

  1. Подписываемся на событие изменения параметров робота. Это в том числе происходит и в оптимизаторе, когда он перебирает параметры.
  2. Обработчик события изменения параметров робота.
  3. Первый делом проверяем, соответствуют ли параметры робота параметрам индикатора. Входим в ветку изменения параметров, только если изменились нужные нам.
  4. Устанавливаем новые параметры для индикатора.
  5. Вызываем у индикатора метод Reload(), он перестраивает все значения в индикаторе, затем метод Save().

 

6. Доступ к данным индикатора в логике робота.

А теперь посмотрим, как именно данные индикатора используются в торговой логике робота.

Пример 1. Проверка наличия данных в индикаторе.

Здесь мы смотрим на DataSeries индикатора, и если в них есть 0, выходим из логики:

Добавление индикаторов на источник BotTabSimple. Индикаторы OsEngine #11 

 

Пример 2. Запрос данных для проверки рыночного условия.

А здесь мы запрашиваем последние данные по индикатору для того, чтобы просмотреть потом расположение скользящих средних в Аллигаторе:

Добавление индикаторов на источник BotTabSimple. Индикаторы OsEngine #11 

Удачных алгоритмов!

Комментарии открыты для друзей!

Добавление индикаторов на источник BotTabSimple. Индикаторы OsEngine #11

OsEngine: https://github.com/AlexWan/OsEngine
Поддержка 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

Добавление индикаторов на источник BotTabSimple. Индикаторы OsEngine #11

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

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

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