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),
)