Untitled

 avatar
unknown
plain_text
3 months ago
900 B
4
Indexable
import pandas as pd
import numpy as np
import yfinance as yf
import backtrader as bt

# Data Collection
data = yf.download('AAPL', start='2020-01-01', end='2023-01-01')

# Define Strategy
class SmaCross(bt.Strategy):
    params = (('short_period', 10), ('long_period', 30),)

    def __init__(self):
        self.sma_short = bt.indicators.SimpleMovingAverage(self.data.close, period=self.params.short_period)
        self.sma_long = bt.indicators.SimpleMovingAverage(self.data.close, period=self.params.long_period)

    def next(self):
        if not self.position:
            if self.sma_short > self.sma_long:
                self.buy()
        else:
            if self.sma_short < self.sma_long:
                self.sell()

# Backtesting
cerebro = bt.Cerebro()
data_feed = bt.feeds.PandasData(dataname=data)
cerebro.adddata(data_feed)
cerebro.addstrategy(SmaCross)
cerebro.run()
cerebro.plot()
Editor is loading...
Leave a Comment