Ejemplo n.º 1
0
def run_backtest_instance(args_namespace, events_log_file, heartbeat, sl, tp,
                          short_window, long_window, equity_filename,
                          trained_model_file):

    trades_filename = 'trades.csv'

    strategy_params = dict(stop_loss_pips=sl,
                           take_profit_pips=tp,
                           trained_model_file=trained_model_file,
                           sma_short_period=short_window,
                           sma_long_period=long_window)

    configuration = Configuration(
        data_handler_name=HistoricCSVDataHandler,
        execution_handler_name=SimulatedExecutionHandler)
    configuration.set_option(Configuration.OPTION_CSV_DIR,
                             args_namespace.data_directory)

    backtest = Backtest(args_namespace.output_directory,
                        args_namespace.symbols,
                        args_namespace.initial_capital_usd, heartbeat,
                        args_namespace.start_date, configuration,
                        DataHandlerFactory(), ExecutionHandlerFactory(),
                        Portfolio, EurUsdDailyForecastStrategy,
                        FixedPositionSize(0.5), TextLogger(events_log_file),
                        [Backtest.LOG_TYPE_EVENTS], strategy_params,
                        equity_filename, trades_filename)
    backtest.run()

    return backtest.stats
def main():

    strategy = get_strategy()
    args_namespace = strategy.create_argument_parser(False).parse_args()

    events_log_file = '{}/events.log'.format(args_namespace.output_directory)

    strategy_params = strategy.get_strategy_params(args_namespace)
    strategy_params['send_notifications'] = True
    strategy_params['webhook'] = os.environ.get('WEBHOOK_PINBAR_NOTIFIER')

    configuration = Configuration(data_handler_name=OandaDataHandler,
                                  execution_handler_name=OandaExecutionHandler)
    configuration.set_option(
        Configuration.OPTION_NUMBER_OF_BARS_PRELOAD_FROM_HISTORY, '0')

    configuration.set_option(Configuration.OPTION_ACCOUNT_ID,
                             os.environ.get('OANDA_API_ACCOUNT_ID'))
    configuration.set_option(Configuration.OPTION_ACCESS_TOKEN,
                             os.environ.get('OANDA_API_ACCESS_TOKEN'))
    configuration.set_option(Configuration.OPTION_TIMEFRAME,
                             args_namespace.time_frame)

    trading = Trading(args_namespace.output_directory,
                      list(args_namespace.symbols), 0, configuration,
                      DataHandlerFactory(), ExecutionHandlerFactory(),
                      Portfolio, strategy, FixedPositionSize(0.01),
                      TextLogger(events_log_file), [Trading.LOG_TYPE_EVENTS],
                      strategy_params, 'equity.csv', 'trades.csv')

    trading.run()
    trading.print_performance()
def main():

    strategy = get_strategy()
    args_namespace = strategy.create_argument_parser(False).parse_args()
    strategy_params_special = strategy.get_strategy_params(args_namespace)

    events_log_file = '{}/events.log'.format(args_namespace.output_directory)

    strategy_params = dict(stop_loss_pips=args_namespace.stop_loss,
                           take_profit_pips=args_namespace.take_profit)
    strategy_params.update(strategy_params_special)

    configuration = Configuration(data_handler_name=OandaDataHandler,
                                  execution_handler_name=OandaExecutionHandler)
    configuration.set_option(Configuration.OPTION_ACCOUNT_ID,
                             os.environ.get('OANDA_API_ACCOUNT_ID'))
    configuration.set_option(Configuration.OPTION_ACCESS_TOKEN,
                             os.environ.get('OANDA_API_ACCESS_TOKEN'))
    configuration.set_option(Configuration.OPTION_TIMEFRAME,
                             args_namespace.time_frame)
    configuration.set_option(
        Configuration.OPTION_NUMBER_OF_BARS_PRELOAD_FROM_HISTORY,
        max(strategy_params['sma_short_period'],
            strategy_params['sma_long_period']))

    trading = Trading(args_namespace.output_directory,
                      list(args_namespace.symbols), 0, configuration,
                      DataHandlerFactory(), ExecutionHandlerFactory(),
                      Portfolio, strategy, FixedPositionSize(0.01),
                      TextLogger(events_log_file), [Trading.LOG_TYPE_EVENTS],
                      strategy_params, 'equity.csv', 'trades.csv')

    trading.run()
    trading.print_performance()
Ejemplo n.º 4
0
def main():
    strategy = get_strategy()
    args_namespace = strategy.create_argument_parser().parse_args()
    strategy_params_special = strategy.get_strategy_params(args_namespace)

    heartbeat = 0

    events_log_file = '{}/events.log'.format(args_namespace.output_directory)

    strategy_params = dict(stop_loss_pips=args_namespace.stop_loss,
                           take_profit_pips=args_namespace.take_profit)
    strategy_params.update(strategy_params_special)

    configuration = Configuration(data_handler_name=OandaDataHandler,
                                  execution_handler_name=OandaExecutionHandler)

    configuration.set_option(Configuration.OPTION_ACCOUNT_ID,
                             os.environ.get('OANDA_API_ACCOUNT_ID'))
    configuration.set_option(Configuration.OPTION_ACCESS_TOKEN,
                             os.environ.get('OANDA_API_ACCESS_TOKEN'))
    configuration.set_option(Configuration.OPTION_TIMEFRAME,
                             TimeFrame.TIME_FRAME_S5)

    trading = Trading(args_namespace.output_directory, args_namespace.symbols,
                      heartbeat, configuration, DataHandlerFactory(),
                      ExecutionHandlerFactory(), Portfolio, get_strategy(),
                      FixedPositionSize(0.01), TextLogger(events_log_file),
                      [Trading.LOG_TYPE_EVENTS], strategy_params, 'equity.csv',
                      'trades.csv')

    trading.run()
    trading.print_performance()
def main():

    strategy = get_strategy()
    args_namespace = strategy.create_argument_parser(True).parse_args()

    events_log_file = '{}/events.log'.format(args_namespace.output_directory)

    strategy_params = strategy.get_strategy_params(args_namespace)
    strategy_params['send_notifications'] = False
    strategy_params['webhook'] = ''

    configuration = Configuration(
        data_handler_name=HistoricCSVDataHandler,
        execution_handler_name=SimulatedExecutionHandler)

    configuration.set_option(Configuration.OPTION_CSV_DIR,
                             args_namespace.data_directory)

    simulation = Backtest(
        args_namespace.output_directory,
        args_namespace.symbols,
        args_namespace.initial_capital_usd,
        0,
        args_namespace.start_date,
        configuration,
        DataHandlerFactory(),
        ExecutionHandlerFactory(),
        Portfolio,
        strategy,
        FixedPositionSize(0.5),
        TextLogger(events_log_file),
        [Backtest.LOG_TYPE_EVENTS],
        strategy_params,
        'equity.csv',
        'trades.csv',
    )

    simulation.run()
    simulation.print_performance()
Ejemplo n.º 6
0
def main():

    strategy = get_strategy()
    args_namespace = strategy.create_argument_parser(True).parse_args()
    strategy_params_special = strategy.get_strategy_params(args_namespace)

    events_log_file = '{}/events.log'.format(args_namespace.output_directory)

    strategy_params = dict(stop_loss_pips=args_namespace.stop_loss,
                           take_profit_pips=args_namespace.take_profit)
    strategy_params.update(strategy_params_special)

    configuration = Configuration(
        data_handler_name=HistoricCSVDataHandler,
        execution_handler_name=SimulatedExecutionHandler)
    configuration.set_option(Configuration.OPTION_CSV_DIR,
                             args_namespace.data_directory)

    backtest = Backtest(
        args_namespace.output_directory,
        args_namespace.symbols,
        args_namespace.initial_capital_usd,
        0,
        args_namespace.start_date,
        configuration,
        DataHandlerFactory(),
        ExecutionHandlerFactory(),
        Portfolio,
        strategy,
        FixedPositionSize(0.5),
        TextLogger(events_log_file),
        [Backtest.LOG_TYPE_EVENTS],
        strategy_params,
        'equity.csv',
        'trades.csv',
    )

    backtest.run()
    backtest.print_performance()