ゆとり世代の自由研究

勉強が一生終わりません

backtesting.pyのサンプルコード

from backtesting import Backtest, Strategy
from backtesting.lib import crossover
from backtesting.test import SMA
from pandas_datareader import data

code = '6758'
start = '2021/01/01'
end = '2023/07/20'

df = data.DataReader(code+'.JP', 'stooq', start, end)


class SmaCross(Strategy):
    def init(self):  # 初期設定
        price = self.data.Close
        self.ma1 = self.I(SMA, price, 10)
        self.ma2 = self.I(SMA, price, 20)

    def next(self):  # 売買条件
        if crossover(self.ma1, self.ma2):
            self.buy()
        elif crossover(self.ma2, self.ma1):
            self.sell()
            # self.position.close(): 保有ポジションの手仕舞


# ここでBacktestを使用
bt = Backtest(df, SmaCross, commission=.002,
              exclusive_orders=True)
stats = bt.run()
bt.plot()

print(stats)