Приветствую, коллеги! Представляю вашему вниманию переработанную версию робота, которым я пользовался (точнее, непрерывно допиливал :)) с 2020 по 2021 год.
Специально для конкурса был сделан порт с API v1 на v2, добавлены страницы со статистикой и тестированием на исторических данных, а также произведена общая полировка интерфейса.
Ознакомиться с решением вживую можно по адресу: http://92.255.78.150:7777/ui (десктопный+мобильный) Там подключен read-only токен.
- портфель
- настройки
- инструмент
- список отслеживания
- тестирование
- графики инструмента дневной, недельный, месячный и полугодовой
- статистика
Перед запуском нужно создать свой .env-файл на основе .env.example. Все параметры прокомментированы внутри.
Требуется node v14 и выше. Для конкурса проект разрабатывался на node v16.13.2.
Также используется БД postgresql v12.3. На других версиях не тестировалось. Если в системе установлены docker и docker-compose, то БД можно поднять командой docker-compose up -d db
.
Сам сервер запускается командой npm start
.
В основе алгоритма лежит пересечение двух скользящих средних, быстрой и медленной, на часовых интервалах. По ним робот определяет момент просадки инстумента, что и служит сигналом для покупки. А сигналом для продажи, в свою очередь, служит достижение указанного значения take profit. Дополнительно можно включить проверку по RSI. Подробнее см. раздел "Настройки робота".
Для тестирования имеется параметр DRY_RUN в .env, который блокирует выставление заявок. В остальном тестирование максимально приближено к реальности.
Изначально для отображения графиков статистики использовалось решение от Zoho Analytics (бесплатное). Но по условиям конкурса добавлена своя встроенная статистика. В рамках неё отображены два основных показателя эффективности алгоритма: доходность по месяцам и доходность по инструментам. Также отображаются события (покупки и продажи) текущего дня на главной странице.
В связи с тем, что доступный в API период для часового таймфрейма не превышает неделю, тестирование ограничивается одним событием покупки-продажи. Этого достаточно, чтобы убедиться в работоспособности стратегии и перебрать ключевые параметры для большей эффективности.
DAYS - на сколько дней назад проверять историю цены SLOW - период медленной MA FAST - период быстрой MA
При какой доходности открывать заявку на продажу
В какой момент падения создавать заявку
Сколько часов выждать до следующей заявки по этому инструменту
Большая чувствительность MA
Принудительная покупка независимо от сигнала
На какое значение свечи ориентироваться
Сколько часов должно длиться падение, прежде чем создать заявку
При каком уровне кэша прекратить покупки
При какой заполненности портфеля прекратить покупки
После какого количества покупок в день прекратить покупки
Дополнительная проверка по RSI