Crypto Quant: програмна торгівля BTC за допомогою Binance та Backtrader — Частина 2 із 3 PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.

Crypto Quant: програмна торгівля BTC за допомогою Binance і Backtrader — частина 2 з 3


Crypto Quant: програмна торгівля BTC за допомогою Binance та Backtrader — Частина 2 із 3 PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.

У цій частині wя хочу встановити Backtrader і перевірте деякі моделі торгівлі на основі даних Binance, які ми зібрали в попередньому розділі.

Існує безліч статей та відео про Backtrader та його налаштування. Ця популярна бібліотека Python полегшує роботу Quant з тестування торгових стратегій на основі історичних даних, відповідаючи на основне запитання «наскільки вигідно було б торгувати, використовуючи задані стратегії КУПИВЛЯТИ/ПРОДАВАТИ». Спочатку це схоже на математичну алхімію, але потрібно пам’ятати, що історичні дані, ну, історичні! Торгова стратегія, яка працювала вчора, навряд чи спрацює сьогодні… але ми повернемося до цього незабаром.

Інструкції зі встановлення Backtrader ('bt') є тут. Примітка: відомі проблеми з версіями mapplotlib вище 3.2.0, тому будьте обережні.

Посібник із швидкого запуску варто прочитати, знайдіть його тут.

RSI

Те, що ми будемо пробувати з Backtrader, це тестування назад RSI (Показник відносної сили) стратегія торгівлі на історичних криптоданих (для BTC) з початку року.

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

Параметр періоду за замовчуванням дорівнює 14, тож якщо інтервал становить хвилини, то формула включатиме 14 інтервальних тактів даних. Як ми будемо досліджувати далі, кожен технічний індикатор має параметри, які є нашим способом «налаштування» на ринкові умови; ці параметри мають величезний вплив на прибутковість будь-якого даного показника в рамках стратегії.

Backtest.py

Наше налаштування бектесту: backtest.py є спільним тут. Це забезпечить структуру бектесту для нашого запуску тесту, який буде визначено далі. Це досить стандартне налаштування 'bt'. Давайте розглянемо деякі з цього коду, Зауважте, що в Інтернеті є багато прикладів та відеоуроків із тестування на Python.

Тут у визначенні класу ми встановлюємо параметри для нашої стратегії RSI.

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

Команда наступний () Функція в класі стратегії Backtrader - це те, що відбувається після кожного інтервалу "тикання" даних. Ось buy() або sell() відповідно до даних, у даному випадку індикатор RSI та наші пороги.

Тут ми визначаємо runbacktest() функцію, яку буде викликати наш код. Вищезгадана функція стратегії RSI додається до мозок екземпляр

Всі досить стандартні речі Backtrader. Давайте подивимося, як запустити це з нашими даними.

Тестування наших даних

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

тут це код і вихід для цього щоденного похвилинного торгового дня для Bitcoin (BTC):

Придивившись уважніше:

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

Результати за 1 бт зі стандартною стратегією індикатора 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:

Квадратний корінь (число торгів) * Середнє (прибуток від торгів) / StdDev (прибуток від торгів)

Зазвичай ми наполягаємо на принаймні 30 угодах, щоб цей показник був статистично значущим, але поки що ми ігноруємо це, оскільки тестуємо наш бектест за короткий період часу.

Ви можете збільшити розділи сюжету, наприклад:

Тут ми бачимо сигнал купівлі (зелена стрілка вгору), коли значення RSI опускається нижче 30, а потім прибутковий сигнал на продаж як і маркер прибутку (синє коло), коли RSI досягає вище 70. Дивіться значення RSI у правому нижньому куті .

Прибуток (за один день) у розмірі 777.78 доларів США з 18 виграшними та 7 програшними угодами досить непоганий, особливо для торгового дня відносно неглибокої дії (+1.42%). Уявіть, чого ми могли б досягти в бичачий день з великим обсягом!

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

Ви отримуєте run 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

BlueYard Crypto 1

Вихідний вузол: 893616
Часова мітка: Червень 1, 2021