В данной статье посмотрим на робота с двумя источниками. Один — основной, на котором будет осуществляться торговля, и второй с более старшим таймфреймом, по которому смотрим фильтр.
Это очень популярный подход к торговле, и Вы сможете использовать данного робота в качестве заготовки для ботов с похожей логикой.
Шаг 1. Открываем исходный код робота TwoTimeFramesBot.
Находится он здесь:
Сама логика основана на пробое индикатора Price Channel:
- Входим LONG, если текущая цена пробила верхнюю линию индикатора. И текущая цена на старшем таймфрейме выше скользящей средней на старшем таймфрейме.
- Выходим, если текущая цена пробила нижнюю линию индикатора.
Шаг 2. Конструктор. Создание и использование источников.
- Создание полей для хранения источников. Это нужно, чтобы в любом месте робота можно было потом обратиться к источнику.
- Вызываем у робота процедуру создания источника типа BotTabSimple. Дважды.
- Источники такого типа хранятся в массиве TabsSimple. Первый сохраняем в источник, через который будем торговать. Второй у нас будет с большим таймфреймом.
- Подписываемся на событие завершения свечи у источника для торговли. Там у нас будет основная логика.
- Обратите внимание, при создании индикаторов используются разные источники. И на источнике для торговли у нас будет канал, а на источнике с большим таймфреймом будет скользящая.
Шаг 3. Создание параметров.
В примере можно подсмотреть сразу три типа параметра:
- String – в данном случае перечисление.
- Decimal – число с плавающей запятой.
- Int – целое число.
- Создание полей для хранения параметров. Это нужно, чтобы в любом месте робота можно было потом обратиться к параметру.
- Создание самих параметров.
А так это выглядит в интерфейсе:
Шаг 4. Создание индикаторов.
- Создание полей для хранения индикаторов. Это нужно, чтобы в любом месте робота можно было потом обратиться к индикатору.
- Создание индикатора Price Channel. На источнике для торговли (_tabToTrade).
- Применение к индикатору Price Channel настроек длины из параметров.
- Создание индикатора Simple Moving Average. На втором источнике (_tabBIgTf).
- Применение к индикатору Simple Moving Average настроек длины из параметров.
Ну и бонусом, механизм обновления параметров в индикаторах, когда пользователь обновил параметры в интерфейсе:
- Подписываемся на событие изменения настроек параметров индикаторов.
- Обновляем настройки параметров у индикаторов. Перезагружаем их методом Reload и сохраняем.
Шаг 5. Использование разных источников в логике робота.
- Проверяем, чтобы данные по источнику номер 2 были подключены.
- Берём данные из источника номер 1.
- Берём данные из источника номер 2. Это скользящая средняя и последняя цена на графике.
- Дополнительный фильтр. Смотрим, чтобы цена на старшем таймфрейме была выше, чем скользящая средняя там же.
Шаг 6. Подключение разных источников в интерфейсе и запуск тестера.
Во время тестирования не забывайте, что источники отображаются в визуале в том порядке, в котором создаются.
У нас первый был источник для торговли, на который мы положили сверху индикатор PriceChannel. Здесь у нас таймфрейм 5ть минут:
Второй источник предполагается с более старшим таймфреймом. На него мы положили скользящую среднюю. Здесь таймфрейм 30 минут:
Удачных алгоритмов!
Пост из серии статей «Быстрый старт в программирование на OsEngine».
Комментарии открыты для друзей!
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