Backtrader یکی از محبوب‌ترین فریم‌ورک‌های متن‌باز برای تست عقب‌گرد و معامله زنده در پایتون است. سینتکس ساده، مستندات جامع و جامعه قدرتمند آن، این فریم‌ورک را برای مبتدیان و معامله‌گران حرفه‌ای ایده‌آل می‌کند. در این راهنما، نحوه راه‌اندازی اولین استراتژی معاملاتی الگوریتمی خود با استفاده از Backtrader را بررسی خواهیم کرد.

جدید به Backtrader؟ بررسی جامع ما درباره Backtrader را ببینید.


مرحله ۱: نصب Backtrader

می‌توانید Backtrader را با pip نصب کنید:

pip install backtrader

# اختیاری: ممکن است بخواهید matplotlib برای رسم نمودار و pandas برای مدیریت داده‌ها نصب کنید:

pip install matplotlib pandas

مرحله ۲: آماده‌سازی داده‌های تاریخی

Backtrader از فایل CSV، داده‌های Pandas DataFrame و حتی داده‌های زنده از بروکرها پشتیبانی می‌کند. اکنون بیایید یک فایل CSV را بارگذاری کنیم:

import backtrader as bt  
import datetime

data = bt.feeds.YahooFinanceCSVData(
    dataname='your-data.csv',
    fromdate=datetime.datetime(2020, 1, 1),
    todate=datetime.datetime(2023, 12, 31),
    reverse=False
)

مطمئن شوید فایل CSV شما شامل ستون‌هایی مانند: تاریخ، باز شدن، بیشترین، کمترین، بسته شدن، حجم و بسته شدن تعدیل‌شده است.


مرحله ۳: ساخت استراتژی

یک کلاس استراتژی با ارث‌بری از bt.Strategy بسازید. بیایید یک کراس‌اور میانگین متحرک ساده را پیاده کنیم:

class SmaCross(bt.Strategy):
    params = dict(period=20)

    def __init__(self):
        sma = bt.ind.SMA(period=self.p.period)
        self.crossover = bt.ind.CrossOver(self.data.close, sma)

    def next(self):
        if not self.position:
            if self.crossover > 0:
                self.buy()
        elif self.crossover < 0:
            self.close()

مرحله ۴: راه‌اندازی موتور تست عقب‌گرد

حالا یک موتور Cerebro ایجاد کنید — مغز اصلی Backtrader.

cerebro = bt.Cerebro()  
cerebro.addstrategy(SmaCross)  
cerebro.adddata(data)  
cerebro.broker.setcash(10000)  
cerebro.broker.setcommission(commission=0.001)

مرحله ۵: اجرای استراتژی

print('ارزش پرتفوی شروع: %.2f' % cerebro.broker.getvalue())  
cerebro.run()  
print('ارزش نهایی پرتفوی: %.2f' % cerebro.broker.getvalue())

cerebro.plot()

نقاط ورود و خروج استراتژی خود را به‌صورت تصویری مشاهده خواهید کرد، همراه با عملکرد پرتفوی.


مرحله ۶: افزودن ویژگی‌های بیشتر

با کسب تجربه بیشتر، اضافه کردن موارد زیر را در نظر بگیرید:

  • منطق توقف ضرر و کسب سود
  • شاخص‌های متعدد
  • تحلیل‌گرهای سفارشی (شارپ، دراو داون و غیره)
  • بهینه‌سازی پارامترها

Backtrader به صورت بومی از همه این ویژگی‌ها پشتیبانی می‌کند. همچنین می‌توانید آن را برای معامله زنده به Interactive Brokers یا OANDA متصل کنید.


نکات پایانی

  • استراتژی خود را مدولار نگه دارید: منطق، داده‌ها و پارامترها را جدا کنید
  • فرضیات واقعی برای لغزش، کمیسیون‌ها و تأخیر داشته باشید
  • استراتژی را در بازه‌های زمانی و شرایط بازار مختلف اعتبارسنجی کنید

بیشتر بیاموزید

برای یادگیری بیشتر درباره Backtrader و مطالعه بررسی کامل ما، به این راهنمای جامع مراجعه کنید.

به دنبال چارچوب مناسب متن‌باز برای معامله هستید؟ از مقایسه‌ها و بررسی‌های کامل ما شروع کنید.

آزمایش با جسارت. معامله با خرد.