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)