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