| 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(TrendMomentumLongStrategyTS, |
| sma_fast=2, |
| sma_slow=30, |
| rsi_period=14, |
| rsi_upper=80, |
| rsi_lower=30, |
| atr_period=14, |
| atr_multiplier=1.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) |
| 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), |
| ) |
|
|
|
|
|
|