from fsspec.core import conf import yaml from bt_strategies import * from bt_utils import run_bt from data_utils import get_data import backtrader as bt from datetime import datetime, timedelta import pandas as pd import matplotlib.dates as mdates from tqdm import tqdm from dotenv import load_dotenv # Environment load_dotenv(override=True) with open('config/var_dev.yaml', 'r') as f: config = yaml.safe_load(f) if config["end_date"]=="current": end = datetime.now().strftime('%Y-%m-%d') else: end = config["end_date"] DATE= {'start': config["start_date"], 'end': end} cerebro = bt.Cerebro() cerebro.addanalyzer(bt.analyzers.SharpeRatio, _name='sharpe') cerebro.addanalyzer(bt.analyzers.DrawDown, _name='drawdown') cerebro.addstrategy(TripleMACross, fast_period=5, medium_period=10, slow_period=20) """ cerebro.addstrategy( ScalpingBB, bb_period=20, bb_dev=2.0, rsi_period=14, rsi_oversold=30, rsi_overbought=70, start_hour=14, end_hour=21, position_size=10 ) cerebro.addstrategy(SmaCross, pfast=5, pslow=50) 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(TrendMomentumShortStrategyTS, sma_fast=10, sma_slow=50, rsi_period=24, rsi_upper=65, rsi_lower=40, atr_period=14, atr_multiplier=2.0, stop_loss_pct=0.5, take_profit_pct=0.5) """ ticker_to_market = config['ticker_to_market'] tckr_symbl = config["market"] market_name = ticker_to_market.get(tckr_symbl, tckr_symbl) df = get_data( data_source=config.get("data_source", "yahoofinance"), tckr_symbl=tckr_symbl, interval=config["interval"], date=DATE, adjust_prices=config.get("adjust_prices", True), auto_period=config.get("auto_period", True), period=config.get("period", "60d"), upload_data=config.get("upload_data", False), upload_data_path=config.get("upload_data_path"), ) run_bt( cerebro=cerebro, market_name=market_name, replay=config["replay"], replay_compression=config["replay_compression"], save_img=config["save_plt"], interval=config["interval"], tckr_symbl=tckr_symbl, initial_capital=config["initial_capital"], commission=config["commission"], slippage_percent=config["slippage_percent"], df=df, )