File size: 2,657 Bytes
63bad2b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
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,
)