File size: 1,865 Bytes
725cb3b | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | 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),
)
|