Beispiel #1
0
    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()
Beispiel #3
0
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))
Beispiel #4
0
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
Beispiel #5
0
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)
Beispiel #6
0
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()