Изображение блога
OS_Engine_team
OS_Engine_team Блог компании Os_Engine
07 августа 2024, 10:19

Робот с двумя источниками и таймфреймами. Быстрый старт в программировании OsEngine #6

В данной статье посмотрим на робота с двумя источниками. Один — основной, на котором будет осуществляться торговля, и второй с более старшим таймфреймом, по которому смотрим фильтр.

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

Робот с двумя источниками и таймфреймами. Быстрый старт в программировании OsEngine #6 

Шаг 1. Открываем исходный код робота TwoTimeFramesBot.

Находится он здесь:

Робот с двумя источниками и таймфреймами. Быстрый старт в программировании OsEngine #6 

Сама логика основана на пробое индикатора Price Channel:

  1. Входим LONG, если текущая цена пробила верхнюю линию индикатора. И текущая цена на старшем таймфрейме выше скользящей средней на старшем таймфрейме.
  2. Выходим, если текущая цена пробила нижнюю линию индикатора.

 

Шаг 2. Конструктор. Создание и использование источников.

Робот с двумя источниками и таймфреймами. Быстрый старт в программировании OsEngine #6 

  1. Создание полей для хранения источников. Это нужно, чтобы в любом месте робота можно было потом обратиться к источнику.
  2. Вызываем у робота процедуру создания источника типа BotTabSimple. Дважды.
  3. Источники такого типа хранятся в массиве TabsSimple. Первый сохраняем в источник, через который будем торговать. Второй у нас будет с большим таймфреймом.
  4. Подписываемся на событие завершения свечи у источника для торговли. Там у нас будет основная логика.
  5. Обратите внимание, при создании индикаторов используются разные источники. И на источнике для торговли у нас будет канал, а на источнике с большим таймфреймом будет скользящая.

 

Шаг 3. Создание параметров.

В примере можно подсмотреть сразу три типа параметра:

  1. String – в данном случае перечисление.
  2. Decimal – число с плавающей запятой.
  3. Int – целое число.

Робот с двумя источниками и таймфреймами. Быстрый старт в программировании OsEngine #6

  1. Создание полей для хранения параметров. Это нужно, чтобы в любом месте робота можно было потом обратиться к параметру.
  2. Создание самих параметров.

А так это выглядит в интерфейсе:

Робот с двумя источниками и таймфреймами. Быстрый старт в программировании OsEngine #6 

 

Шаг 4. Создание индикаторов.

Робот с двумя источниками и таймфреймами. Быстрый старт в программировании OsEngine #6

  1. Создание полей для хранения индикаторов. Это нужно, чтобы в любом месте робота можно было потом обратиться к индикатору.
  2. Создание индикатора Price Channel. На источнике для торговли (_tabToTrade).
  3. Применение к индикатору Price Channel настроек длины из параметров.
  4. Создание индикатора Simple Moving Average. На втором источнике (_tabBIgTf).
  5. Применение к индикатору Simple Moving Average настроек длины из параметров.

Ну и бонусом, механизм обновления параметров в индикаторах, когда пользователь обновил параметры в интерфейсе:

Робот с двумя источниками и таймфреймами. Быстрый старт в программировании OsEngine #6 

  1. Подписываемся на событие изменения настроек параметров индикаторов.
  2. Обновляем настройки параметров у индикаторов. Перезагружаем их методом Reload и сохраняем.

 

Шаг 5. Использование разных источников в логике робота.

Робот с двумя источниками и таймфреймами. Быстрый старт в программировании OsEngine #6 

  1. Проверяем, чтобы данные по источнику номер 2 были подключены.
  2. Берём данные из источника номер 1.
  3. Берём данные из источника номер 2. Это скользящая средняя и последняя цена на графике.
  4. Дополнительный фильтр. Смотрим, чтобы цена на старшем таймфрейме была выше, чем скользящая средняя там же.

 

Шаг 6. Подключение разных источников в интерфейсе и запуск тестера.

Во время тестирования не забывайте, что источники отображаются в визуале в том порядке, в котором создаются.

У нас первый был источник для торговли, на который мы положили сверху индикатор PriceChannel. Здесь у нас таймфрейм 5ть минут:

Робот с двумя источниками и таймфреймами. Быстрый старт в программировании OsEngine #6

Второй источник предполагается с более старшим таймфреймом. На него мы положили скользящую среднюю. Здесь таймфрейм 30 минут:

Робот с двумя источниками и таймфреймами. Быстрый старт в программировании OsEngine #6

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

Пост из серии статей «Быстрый старт в программирование на OsEngine».

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

Робот с двумя источниками и таймфреймами. Быстрый старт в программировании OsEngine #6

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

Робот с двумя источниками и таймфреймами. Быстрый старт в программировании OsEngine #6

2 Комментария
  • Алексей Теперев
    14 октября 2024, 16:58
    Поясните, пожалуйста, почему на 5-м шаге во втором блоке на рисунке мы берём последнее значение цены закрытия торгуемого инструмента, НО предпоследние значения в DataSeries индикаторов, а не последнее? Это обусловлено особенностями расчёта индикатора?

    • Алексей Ван <o-s-a.net>
      15 октября 2024, 09:30
      Алексей Теперев, Да. Индикатор ценовой канал, перестроится на последней свече. И если мы возьмём по последнему значению, то никогда не получим сигнал пересечения для входа в позицию.

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

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