FX:GBPJPY   British Pound / Japanese Yen
import backtrader as bt

class MovingAverageCrossover(bt.Strategy):

params = (
("fast_window", 20),
("slow_window", 50),
("order_percentage", 0.95),
("take_profit_percentage", 0.03),
("stop_loss_percentage", 0.02),
)

def __init__(self):
self.fast_average = bt.indicators.SimpleMovingAverage(
self.data.close, period=self.params.fast_window
)
self.slow_average = bt.indicators.SimpleMovingAverage(
self.data.close, period=self.params.slow_window
)

def next(self):
if self.position:
if self.data.close >= self.sell_price:
self.sell()
elif self.data.close < self.stop_loss:
self.sell()
else:
if self.data.close > self.fast_average:
self.buy_price = self.data.close * (1 + self.params.take_profit_percentage)
self.stop_loss = self.data.close * (1 - self.params.stop_loss_percentage)
size = self.params.order_percentage * self.broker.cash
self.buy(size=size)

if __name__ == "__main__":
cerebro = bt.Cerebro()
data = bt.feeds.YahooFinanceData(dataname="AAPL", fromdate="2020-01-01", todate="2021-12-31")
cerebro.adddata(data)
cerebro.addstrategy(MovingAverageCrossover)
cerebro.run()
Disclaimer

The information and publications are not meant to be, and do not constitute, financial, investment, trading, or other types of advice or recommendations supplied or endorsed by TradingView. Read more in the Terms of Use.