Beispiel #1
0
def test_ordered_optimize(cerebro: bt.Cerebro):
    cerebro.optstrategy(bt.strategies.MA_CrossOver,
                        slow=[20],
                        fast=[5, 10, 20])
    res = cerebro.run(optreturn=True)

    def df(optresults):
        a = [x.analyzers.tradeanalyzer.get_analysis() for x in optresults]
        return sum([x.pnl.gross.total if 'pnl' in x else 0 for x in a])

    usercolumns = {
        'Profit & Loss': df,
    }

    b = Bokeh(style='bar', output_mode=_output_mode)

    browser = OptBrowser(b,
                         res,
                         usercolumns=usercolumns,
                         sortcolumn='Profit & Loss')
    model = browser.build_optresult_model()

    # browser.start()

    def count_children(obj):
        numo = 1
        if hasattr(obj, "children"):
            numo = count_children(obj.children)
        if hasattr(obj, '__len__'):
            numo += len(obj)
        return numo

    num = count_children(model)

    assert num == 3
Beispiel #2
0
def test_optimize_no_optreturn(cerebro_no_optreturn: bt.Cerebro):
    cerebro_no_optreturn.optstrategy(bt.strategies.MA_CrossOver,
                                     slow=[5, 10, 20],
                                     fast=[5, 10, 20])
    res = cerebro_no_optreturn.run()

    s = backtrader_plotting.schemes.Blackly()
    b = Bokeh(style='bar', output_mode=_output_mode, scheme=s)

    browser = OptBrowser(b, res)
    model = browser.build_optresult_model()

    #browser.start()

    def count_children(obj):
        numo = 1
        if hasattr(obj, "children"):
            numo = count_children(obj.children)
        if hasattr(obj, '__len__'):
            numo += len(obj)
        return numo

    num = count_children(model)

    assert num == 3
Beispiel #3
0
def test_optimize_2strat(cerebro: bt.Cerebro):
    cerebro.optstrategy(bt.strategies.MA_CrossOver,
                        slow=[5, 10, 20],
                        fast=[5, 10, 20])
    cerebro.optstrategy(ToggleStrategy, modbuy=[12, 15], modsell=[17, 19])
    res = cerebro.run()

    b = Bokeh(style='bar', output_mode=_output_mode)

    browser = OptBrowser(b, res)

    with pytest.raises(RuntimeError):
        browser.build_optresult_model()
Beispiel #4
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 #5
0
def test_optimize(cerebro: bt.Cerebro):
    cerebro.optstrategy(bt.strategies.MA_CrossOver,
                        slow=[5, 10, 20],
                        fast=[5, 10, 20])
    res = cerebro.run(optreturn=True)

    b = Bokeh(style='bar', output_mode=_output_mode)

    browser = OptBrowser(b, res)
    model = browser.build_optresult_model()

    # browser.start()

    def count_children(obj):
        numo = 1
        if hasattr(obj, "children"):
            numo = count_children(obj.children)
        if hasattr(obj, '__len__'):
            numo += len(obj)
        return numo

    num = count_children(model)

    assert num == 3
Beispiel #6
0
    "golden_cross": GoldenCross,
    "buy_hold": BuyHold,
    "macd": MacdStrat,
    "macd_opt": MacdStrat,
    "moving_avg": MovingAverage,
    "sar": Sar,
    "adx_macd": AdxMacd
}

#check against - golden_cross, buy_hold, macd, moving_avg, sar
strategy = "sar"

if strategy == "golden_cross_opt":
    cerebro.optstrategy(
        GoldenCross,
        fast=range(40, 60, 10),
        slow=range(160, 220, 20),
        #fast=range(10, 30, 10), slow=range(50, 90, 20),
    )
    cerebro.run(maxcpus=1)
    GoldenCross.show_max()
elif strategy == "macd_opt":
    strats = cerebro.optstrategy(
        MacdStrat,
        fast=range(8, 16, 1),
        slow=range(16, 32, 2),
    )
    cerebro.run(maxcpus=1)
    best_fast, best_slow, best_roi = MacdStrat.show_max()
    print('Best params: fast={}, slow={}, roi={}'.format(
        best_fast, best_slow, best_roi))
    """