Crypto Quant: تجارت برنامه‌ای BTC با استفاده از Binance و Backtrader - قسمت 2 از 3 هوش داده‌های PlatoBlockchain. جستجوی عمودی Ai.

Crypto Quant: تجارت برنامه‌ای BTC با استفاده از Binance و Backtrader - قسمت 2 از 3


Crypto Quant: تجارت برنامه‌ای BTC با استفاده از Binance و Backtrader - قسمت 2 از 3 هوش داده‌های PlatoBlockchain. جستجوی عمودی Ai.

در این قسمت wمی خواهم نصب کنم بک تاجر و برخی از مدل‌های معاملاتی را در برابر داده‌های Binance که در بخش قبل جمع‌آوری کردیم، بک تست کنید.

مقالات و ویدیوهای زیادی در مورد Backtrader و راه اندازی آن وجود دارد. این کتابخانه محبوب پایتون، کار Quant را در زمینه بک‌آزمایی استراتژی‌های معاملاتی با داده‌های تاریخی تسهیل می‌کند و به این سؤال اساسی پاسخ می‌دهد. "معامله با استفاده از استراتژی های خرید/فروش چقدر سودآور بود". این در ابتدا شبیه کیمیاگری ریاضی است، اما باید به خاطر داشت که داده های تاریخی، خوب، تاریخی هستند! استراتژی معاملاتی که دیروز کارآمد بود بعید است امروز کار کند... اما ما به زودی به آن باز خواهیم گشت.

دستورالعمل نصب Backtrader ('bt') است اینجا کلیک نمایید. توجه: مشکلات شناخته شده ای در مورد نسخه های mapplotlib بالای 3.2.0 وجود دارد، بنابراین مراقب آن باشید.

راهنمای شروع سریع خواندن ارزشمند است، آن را پیدا کنید اینجا کلیک نمایید.

RSI

آنچه ما در اینجا با Backtrader امتحان خواهیم کرد، بک تست کردن است RSI (شاخص قدرت نسبی) استراتژی تجارت بر روی داده های رمزنگاری تاریخی (برای BTC) از اوایل سال.

شاخص حرکت RSI توضیح داده شده است اینجا کلیک نمایید. شرایط فروش بیش از حد نسبی و خرید بیش از حد را برای یک دارایی معاملاتی معین و یک پارامتر "دوره" که عدد تیک (فواصل معاملات) به عقب است را اندازه گیری می کند.

پارامتر دوره به طور پیش فرض 14 است، بنابراین اگر فاصله زمانی دقیقه باشد، فرمول شامل 14 تیک فاصله زمانی داده می شود. همانطور که در ادامه بررسی خواهیم کرد، هر شاخص فنی دارای پارامترهایی است که روش ما برای "تطبیق" با شرایط بازار است. این پارامترها تأثیر زیادی بر سودآوری هر شاخص معین در یک استراتژی دارند.

Backtest.py

تنظیم پشتیبان ما: backtest.py به اشتراک گذاشته شده است اینجا کلیک نمایید. این ساختار بک‌آست را برای اجرای بک‌آست ما فراهم می‌کند که در ادامه تعریف می‌شود. این یک تنظیم نسبتاً استاندارد 'bt' است. بیایید برخی از این کد را بررسی کنیم، توجه داشته باشید که نمونه‌ها و آموزش‌های ویدیویی زیادی در بک‌آست پایتون وجود دارد که می‌توانید از آنها یاد بگیرید.

در اینجا در تعریف کلاس، ما پارامترهایی را برای استراتژی RSI خود تعیین می کنیم.

  • واژگان: اگر بخواهیم داده های log را در طول بک تست خروجی بگیریم
  • ماپریود: دوره میانگین متحرک، # تیک هایی که باید در نظر گرفته شوند
  • مقدار: تعداد سهام برای خرید/فروش
  • بالا: آستانه بالای شاخص برای خرید بیش از حد
  • کاهش: آستانه پایین نشانگر برای فروش بیش از حد
  • توقف ضرر: تنظیمات توقف ضرر برای فروش

La بعد() تابع در کلاس استراتژی Backtrader چیزی است که پس از هر بازه "تیک" داده ها اتفاق می افتد. در اینجا مطابق داده ها () buy() یا sell() است، در این مورد اندیکاتور RSI و آستانه های ما.

در اینجا ما را تعریف می کنیم runbacktest() تابعی که توسط کد ما فراخوانی می شود. تابع استراتژی RSI فوق الذکر به آن اضافه می شود مغز نمونه.

همه چیزهای نسبتاً استاندارد Backtrader. بیایید ببینیم چگونه این را در برابر داده های خود اجرا کنیم.

بک تست داده های ما

مطمئن شوید که داده ها را (با استفاده از مراحل آخرین بخش) برای 1 ژانویه تا 2 ژانویه 2021 دریافت کنید، این در فایلی به نام: BTCUSDT-20210101–20210102–1m.csv با 1440 خط CSV، یک خط برای هر دقیقه از روز.

اینجا کد و خروجی این یک روز معامله دقیقه به دقیقه برای بیت کوین (BTC) است:

نگاهی دقیق تر:

پارامترها ساده هستند، ما می خواهیم یک روز از معاملات را با استفاده از اندیکاتور RSI با دوره 12 تیک، بدون توقف ضرر و محدودیت های پیش فرض 70,30،XNUMX برای محرک های خرید بیش از حد و فروش بیش از حد مورد تجزیه و تحلیل قرار دهیم.

نتایج 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:

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 یک سفارش فروش خودکار است که زمانی که قیمت نسبت به دستور خرید اجرا شده از سطحی کمتر شود. همانطور که از نام آن پیداست، این می تواند پس از قرار گرفتن در موقعیتی در نوسانات، "توقف ضرر" را انجام دهد.

توقف ضرر

روشی که ما در اینجا 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

تمبر زمان:

بیشتر از متوسط