def test_simple(self): cerebro = Cerebro() cerebro.addstrategy(TestStrategy) # 'apiKey' and 'secret' are skipped config = { 'enableRateLimit': True, 'nonce': lambda: str(int(time.time() * 1000)) } feed = CCXTFeed( exchange='binance', dataname='BNB/USDT', # valid values are: # ticks, microseconds, seconds, minutes, daily, weekly, monthly timeframe=TimeFrame.Minutes, fromdate=dt.datetime(2019, 1, 28, 3, 30), todate=dt.datetime(2019, 1, 28, 10, 00), compression=15, ohlcv_limit=2, # required to make calls to binance exchange work currency='BNB', config=config, retries=5, # drop_newest=True, # historical=False, debug=True, ) # Add the feed cerebro.adddata(feed) # Run the strategy cerebro.run()
def run(symbol, prices, strategy): # initialize the Cerebro engine cerebro = Cerebro() cerebro.broker.setcash(100000) # add OHLC data feed feed = bt.feeds.PandasData(dataname=prices) cerebro.adddata(feed) cerebro.addstrategy(strategy=strategy, ticker=symbol) cerebro.run()
def run_bt_multiple(): cerebro = Cerebro() df = get_pickle('tiingo', 'SPY') data = PandasData(dataname=df) cerebro.adddata(data) cerebro.addanalyzer(Returns) cerebro.optstrategy(StrategyFetcher, idx=[0, 1]) results = cerebro.run() strats = [x[0] for x in results] for i, strat in enumerate(strats): rets = strat.analyzers.returns.get_analysis() print('Strategy {} Name {}:\n - analyzer: {}\n'.format( i, strat.__class__.__name__, rets))
def backtesting(config): cerebro = Cerebro() cerebro.addstrategy(TestStrategy) cerebro.adddata(CCXTFeed(exchange='binance', dataname='BNB/USDT', timeframe=TimeFrame.Minutes, fromdate=datetime(2019, 1, 1, 0, 0), todate=datetime(2019, 1, 1, 0, 2), compression=1, ohlcv_limit=2, currency='BNB', config=config, retries=5)) finished_strategies = cerebro.run() return finished_strategies
from backtrader import Cerebro, TimeFrame from BackTraderQuik.QKStore import QKStore # Хранилище QUIK import Strategy as ts # Торговые системы if __name__ == '__main__': # Точка входа при запуске этого скрипта cerebro = Cerebro() # Инициируем "движок" BackTrader # Склейка фьючерсов (Rollover) symbols = ['SPBFUT.SiH9', 'SPBFUT.SiM9', 'SPBFUT.SiU9', 'SPBFUT.SiZ9', 'SPBFUT.SiH0', 'SPBFUT.SiM0', 'SPBFUT.SiU0', 'SPBFUT.SiZ0', 'SPBFUT.SiH1', 'SPBFUT.SiM1', 'SPBFUT.SiU1', 'SPBFUT.SiZ1'] # Тикеры для склейки store = QKStore() # Хранилище QUIK (QUIK на локальном компьютере) # store = QKStore(Host='<Ваш IP адрес>') # Хранилище QUIK (К QUIK на удаленном компьютере обращаемся по IP или названию) data = [store.getdata(dataname=symbol, timeframe=TimeFrame.Minutes, compression=5) for symbol in symbols] # Получаем по ним исторические данные cerebro.rolloverdata(name='Si', *data, checkdate=True, checkcondition=True) # Склеенный тикер cerebro.addstrategy(ts.PrintStatusAndBars) # Добавляем торговую систему cerebro.run() # Запуск торговой системы cerebro.plot() # Рисуем график. Требуется matplotlib версии 3.2.2 (pip install matplotlib==3.2.2)
import os, sys, argparse import pandas import backtrader from backtrader import Cerebro from strategies.BuyAndHold import BuyAndHold from strategies.GoldenCross import GoldenCross cerebro = backtrader.Cerebro() pricesData = pandas.read_csv('SPY.csv', index_col='Date', parse_dates=True) # initializing Cerebro cerebro = Cerebro() cerebro.broker.setcash(100000) feed = backtrader.feeds.PandasData(dataname=pricesData) # add data feed cerebro.adddata(feed) strategies = {"golden_cross": GoldenCross, "buy_hold": BuyAndHold} parser = argparse.ArgumentParser() # parse command line arguments parser.add_argument("strategy", help="Which strategy to run", type=str) args = parser.parse_args() if not args.strategy in strategies: print("Invalid strategy, must select one of {}".format(strategies.keys())) sys.exit() cerebro.addstrategy(strategy=strategies[args.strategy]) cerebro.run() cerebro.plot() # plot the chart
import datetime as dt from backtrader import Cerebro, TimeFrame from backtrader_binance import BinanceStore from .strategy import RSIStrategy if __name__ == '__main___': cerebro = Cerebro(quicknotify=True) store = BinanceStore( api_key='YOUR_BINANCE_KEY', api_secret='YOUR_BINANCE_SECRET', coin_refer='BTC', coin_target='USDT') broker = store.getbroker() cerebro.setbroker(broker) from_date = dt.datetime.utcnow() - dt.timedelta(minutes=1261) data = store.getdata( dataname='BTCUSDT', fromdate=from_date, timeframe=TimeFrame.Minutes, compression=60) cerebro.addstrategy(RSIStrategy) cerebro.adddata(data) cerebro.run()