import yaml from bt_strategies import SmaCross, TrendMomentumLongStrategy, TrendMomentumLongStrategyTS from bt_utils import run_bt import backtrader as bt from datetime import datetime, timedelta import pandas as pd import matplotlib.dates as mdates with open('config/var_dev.yaml', 'r') as f: config = yaml.safe_load(f) current_date = datetime.now().strftime('%Y-%m-%d') DATE= {'start': config["start_date"], 'end':current_date} cerebro = bt.Cerebro() cerebro.addanalyzer(bt.analyzers.SharpeRatio, _name='sharpe') cerebro.addanalyzer(bt.analyzers.DrawDown, _name='drawdown') #cerebro.addstrategy(MovingAverageStrategy, fast_period=50, slow_period=200, ma_type='sma') cerebro.addstrategy(TrendMomentumLongStrategyTS, sma_fast=2,# 20 sma_slow=30,# 50 rsi_period=14, rsi_upper=80, # 70 rsi_lower=30, atr_period=14, atr_multiplier=1.0, stop_loss_pct=0.5, # 5% stop loss take_profit_pct=0.5 ) # 10% take profit #cerebro.addstrategy(TrendMomentumShortStrategy, sma_fast=10, sma_slow=50, rsi_period=24, rsi_upper=65, rsi_lower=40, atr_period=14, atr_multiplier=2.0) ticker_to_market = config['ticker_to_market'] tckr_symbl = config["market"] market_name = ticker_to_market.get(tckr_symbl, tckr_symbl) run_bt( cerebro=cerebro, date=DATE, market_name=market_name, save_img=config["save_plt"], tckr_symbl=tckr_symbl, interval=config["interval"], auto_period=config["auto_period"], period=config["period"], initial_capital=config["initial_capital"], commission=config["commission"], slippage_percent=config["slippage_percent"], adjust_prices=config.get("adjust_prices", True), )