Spaces:
Runtime error
Runtime error
| 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, | |
| ) | |