Crypto Quant: программная торговля BTC с использованием Binance и Backtrader — часть 2 из 3 PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

Crypto Quant: программная торговля BTC с использованием Binance и Backtrader - часть 2 из 3


Crypto Quant: программная торговля BTC с использованием Binance и Backtrader — часть 2 из 3 PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

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

Есть множество статей и видео по Backtrader и его настройке. Эта популярная библиотека Python облегчает количественную работу по тестированию торговых стратегий на исторических данных, отвечая на наиболее важный вопрос. «Насколько выгодно было бы торговать с использованием заданных стратегий ПОКУПКА / ПРОДАЖА». Поначалу это похоже на математическую алхимию, но нужно помнить, что исторические данные, ну, исторические! Торговая стратегия, которая работала вчера, вряд ли сработает сегодня… но мы вернемся к этому в ближайшее время.

Инструкции по установке Backtrader ('bt'): здесь. Примечание: существуют известные проблемы с версиями mapplotlib выше 3.2.0, поэтому будьте осторожны.

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

RSI

Здесь мы попробуем с помощью Backtrader протестировать RSI (Индикатор относительной силы) торговая стратегия на исторических данных по криптовалюте (для BTC) с начала года.

Пояснение к индикатору импульса RSI здесь. Он измеряет условия относительной перепроданности и перекупленности для данного торгового актива и параметр «период», который представляет собой количество тиков (торговых интервалов) в обратном направлении.

Параметр периода по умолчанию равен 14, поэтому, если интервал составляет минуты, формула будет включать 14 тактов интервала данных. Как мы рассмотрим далее, каждый технический индикатор имеет параметры, которые позволяют нам «настраиваться» на рыночные условия; эти параметры имеют огромное влияние на прибыльность любого индикатора в стратегии.

Backtest.py

Наша установка для тестирования на истории: бэктест.py разделяется здесь. Это обеспечит структуру бэктест-теста для нашего бэктест-прогона, который будет определен дальше. Это довольно стандартная установка «bt». Давайте рассмотрим этот код, обратите внимание, что в Интернете есть множество примеров и видеоуроков по тестированию на истории Python, из которых можно поучиться..

Здесь, в определении класса, мы устанавливаем параметры для нашей стратегии RSI.

  • подробный: если мы хотим вывести данные журнала во время тестирования на истории
  • мапериод: период скользящей средней, количество учитываемых тиков
  • количество: количество акций для покупки / продажи
  • верхний: верхний порог индикатора перекупленности
  • ниже: нижний порог индикатора перепроданности
  • остановить потери: установка стоп-лосса для продажи

Ассоциация следующий() Функция в классе стратегии Backtrader - это то, что происходит после каждого интервала "тика" данных. Вот покупка () или продажа () в соответствии с данными, в данном случае индикатор RSI и наши пороги.

Здесь мы определяем runbacktest () функция, которая будет вызываться нашим кодом. Вышеупомянутая функция стратегии RSI добавлена ​​к мозг пример.

Все довольно стандартные вещи Backtrader. Давайте посмотрим, как это сопоставить с нашими данными.

Тестирование наших данных

Обязательно получите данные (используя шаги последнего раздела) за период с 1 по 2 января 2021 года, они будут в файле с именем: BTCUSDT-20210101–20210102–1m.csv с 1440 строками CSV, по одной на каждую минуту дня.

Здесь это код и вывод для этого однодневного поминутного торгового дня для биткойнов (BTC):

Присмотревшись:

Параметры просты, мы хотим проанализировать один день торговли, используя индикатор RSI с периодом 12 тиков, без стоп-лосса и лимитами по умолчанию 70,30 для триггеров перекупленности и перепроданности.

1 января результаты bt со стандартной стратегией индикатора RSI

Последняя строка вывода суммирует результаты этого бэктеста:

/BTCUSDT-20210101-20210102-1m.csv, RSI (Pd 12) (SL 0.0%) (U70 L30) Нетто 777.78 долл. США (0.78%) WL 18/7 SQN 1.76

RSI период 12, 0 (нет) стоп-лосс, (U) на лимит 70 (L) лимит 30, чистая прибыль (за один день) $ 777.78 при 18 прибыльных и 7 убыточных сделках.

Последняя цифра SQN, «Число качества системы» (SQN), которое предназначено для помощи трейдерам в определении сильных сторон, желательности и качества торговой системы. Стратегия хорошего качества считается выгодной и эффективной *.

Следующие значения SQN предполагают следующие «качества»:

  • 1.6–1.9 Ниже среднего
  • 2.0–2.4 Среднее
  • 2.5–2.9 Хорошо
  • 3.0–5.0 Отлично
  • 5.1–6.9 Превосходно
  • 7.0 - Святой Грааль

Формула SQN:

SquareRoot (NumberTrades) * Среднее (TradesProfit) / StdDev (TradesProfit)

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

Вы можете увеличивать фрагменты сюжета, например:

Здесь мы видим сигнал на покупку (зеленая стрелка вверх), когда значение RSI опускается ниже 30, а затем прибыльный сигнал на продажу в виде маркера прибыли (синий кружок), когда RSI достигает значения выше 70. См. Значения RSI в правом нижнем углу. .

Прибыль (за один день) в размере 777.78 долларов при 18 прибыльных и 7 убыточных сделках - это неплохо, особенно для торгового дня с относительно неглубокой активностью (+ 1.42%). Представьте, чего мы могли бы достичь в бычий день с большим объемом!

Параметры модели

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

Показательный пример: в тот же день торговли BTC, но с периодом RSI 20, а не 12, выигрыш / проигрыш 2/3 и чистая прибыль - 21.51 $ (включая торговые комиссии). Это большая разница по сравнению с прошлым тестом!

Вы также можете поэкспериментировать с различными лимитами RSI (кроме установленных по умолчанию 70/30) и параметрами стоп-лосса. Стоп-лосс - это автоматический ордер на продажу, когда цена опускается ниже некоторого уровня относительно исполненного ордера на покупку. Как следует из названия, это может служить для «остановки убытков» после входа в нестабильную позицию.

Stop-Loss

Мы устанавливаем стоп-лосс следующим образом:

  • 0 : без установки стоп-лосса, дождитесь, пока индикатор сработает ордер на продажу
  • 0.00x : стоп-лосс на% ниже цены покупки, 0.001 на 0.1% ниже
  • -0.0x: скользящий стоп-лосс будет следовать за сделкой по мере роста цены, 0.01 - это скользящий стоп-лосс на 1% ниже цены покупки

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

Здесь, в нашем backtest.py, мы настраиваем это с помощью backtrader:

Вот тот же прогон, который мы только что проанализировали, но со скользящим стоп-лоссом 0.1%.

Чистая прибыль в размере 383.67 доллара при 12 победах и 12 поражениях, намного лучше, чем у нас был предыдущий убыток. На графике видно, что скользящий стоп-лосс защищает многие сделки от убытков, поскольку индикатор ожидает сигнала продажи (перекупленности).

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

  • диапазон периодов от 10 до 30 интервалов (20 вариантов)
  • установка стоп-лосса (представим 5 разных практических вариантов)
  • порог перекупленности / перепроданности (представим пока 5 вариантов)

Это будет 20x5x5 или 500 различных вариаций на каждый день. Было бы смешно исследовать эти параметры вручную, и все же мы хотим знать, какие параметры были наиболее прибыльными и самого высокого торгового качества, а какие нет.

Квантовая алхимия!

Это подводит нас к следующему этапу исследования Crypto Quant. Мы можем методом грубой силы определить наиболее прибыльные и качественные параметры торговой стратегии для данного периода торговли, а затем посмотреть, как они будут действовать.

Source: https://medium.com/@gk_/crypto-quant-programmatic-trading-of-btc-using-binance-and-backtrader-part-2-of-3-d8af44c93e2b?source=rss——-8—————–cryptocurrency

Отметка времени:

Больше от Medium