Esempio n. 1
0
def runstrat():
    args = parse_args()

    cerebro = bt.Cerebro()

    # Data feed kwargs
    # '15min', '30min', '60min',
    dataframe = read_dataframe(args.data, args.years, ['d'])

    for i in range(len(dataframe)):
        cerebro.adddata(bt.feeds.PandasData(dataname=dataframe[i]))

    cerebro.addstrategy(St)

    cerebro.addanalyzer(bt.analyzers.PyFolio, _name='pyfolio')

    strat = cerebro.run(stdstats=True, runonce=False)

    pyfoliozer = strat[0].analyzers.getbyname('pyfolio')
    returns, positions, transactions, gross_lev = pyfoliozer.get_pf_items()

    transactions.to_csv("transtion.csv")
    if args.plot:
        cerebro.plot(style='line')
        cerebro.plot(style='candle')
def runstrat():
    args = parse_args()

    cerebro = bt.Cerebro()

    # Data feed kwargs
    # '15min', '30min', '60min',
    dataframe = read_dataframe(args.data, args.years, ['15min', '60min', 'd'])

    for i in range(len(dataframe)):
        temp_df = macd_extend_data(dataframe[i])
        cerebro.adddata(
            pandas_divergence(
                dataname=temp_df,
                divergence_top=temp_df.columns.to_list().index(
                    'divergence_top'),
                divergence_bottom=temp_df.columns.to_list().index(
                    'divergence_bottom')))

    cerebro.addstrategy(St)

    cerebro.addanalyzer(bt.analyzers.PyFolio, _name='pyfolio')

    strat = cerebro.run(stdstats=True, runonce=False)

    pyfoliozer = strat[0].analyzers.getbyname('pyfolio')
    returns, positions, transactions, gross_lev = pyfoliozer.get_pf_items()

    transactions.to_csv("transtion.csv")
    if args.plot:
        cerebro.plot(style='line')
def runstrat():
    args = parse_args()

    cerebro = bt.Cerebro(cheat_on_open=True)
    cerebro.broker.setcommission(commission=0.0012, stocklike=True)
    # cerebro.broker.set_coo(True)

    # Data feed kwargs
    # '15min', '30min', '60min',
    # dataframe = read_dataframe(args.data, args.years, ['15min', '60min', 'd'])
    # dataframe = read_dataframe(args.data, args.years, ['d'])

    # for i in range(len(dataframe)):
    #     temp_df = macd_extend_data(dataframe[i])
    #     cerebro.adddata(pandas_divergence(dataname=temp_df,
    #                                       divergence_top=temp_df.columns.to_list().index('divergence_top'),
    #                                       divergence_bottom=temp_df.columns.to_list().index('divergence_bottom')))

    # dataframe = QAIndex2btData("512000", '2017-01-01', '2020-10-13')
    # dataframe = QAStock2btData("000651", '2014-01-01', '2020-10-13')
    dataframe = read_dataframe('000651.csv', '2014-2020', ['d'])[0]
    cerebro.adddata(bt.feeds.PandasData(dataname=dataframe))

    cerebro.addstrategy(St)

    cerebro.addanalyzer(bt.analyzers.DrawDown, _name='DrawDown')
    cerebro.addanalyzer(bt.analyzers.AnnualReturn, _name='AnnualReturn')

    cerebro.addanalyzer(bt.analyzers.PyFolio, _name='pyfolio')

    strat = cerebro.run(stdstats=True, runonce=False)

    drawDown = strat[0].analyzers.DrawDown.get_analysis()
    print("max drawdown: %f", drawDown.max.drawdown)
    annualReturn = strat[0].analyzers.AnnualReturn.get_analysis()
    print("annualReturn: %s", annualReturn)

    pyfoliozer = strat[0].analyzers.getbyname('pyfolio')
    returns, positions, transactions, gross_lev = pyfoliozer.get_pf_items()

    transactions.to_csv("transtion.csv")
    if args.plot:
        # cerebro.plot(style='line')
        cerebro.plot(style='candle')
Esempio n. 4
0
import pandas as pd
import talib
import ta

from BackTraderTest.BackTraderFunc.DataReadFromCsv import read_dataframe
from BackTraderTest.BackTraderFunc.DataResample import data_min_resample

df = pd.DataFrame()

df['close'] = [2, 2, 2, 2, 2, 3, 4, 2, 2, 2]

b = talib.LINEARREG_SLOPE(df['close'], 4)

df = read_dataframe("000651.csv", "2015-2016", "d")[0]

c = ta.add_volume_ta(df,
                     high="high",
                     low="low",
                     close="close",
                     volume="volume")

print(b)
    df_large.loc[(df_large['slope'] > 0) & (df_large['macdTrade']),
                 'firstSignal'] = True
    df_large.loc[(df_large['slope'] > 0) & (df_large['macdTrade'] == False),
                 'firstSignal'] = False

    df_small = data_min_resample(df, timeScaleSmall)
    df_small['fi'] = ta.volume.ForceIndexIndicator(close=df_small['close'],
                                                   volume=df_small["volume"],
                                                   n=2,
                                                   fillna=False).force_index()
    df_small['fi_pre'] = df_small['fi'].shift()
    df_small.loc[(df_small['fi'] > 0) & (df_small['fi_pre'] < 0),
                 'secondSignal'] = True

    df_temp = df_large.resample("d", ).pad()['firstSignal']
    res_df = pd.concat([df_small, df_temp], axis=1, join_axes=[df_small.index])

    res_df['buyPoint'] = 0
    res_df.loc[(res_df['secondSignal']) & (res_df['firstSignal']),
               'buyPoint'] = True

    return res_df


if __name__ == '__main__':

    df = read_dataframe("../samples/mixing-timeframes/000651.csv", "2010-2020",
                        ["60min"])

    TripleScreen_extend_data(df[0], "d", 'w')