def __init__(self, data_frame: pd.DataFrame = None, **kwargs):
        self._commission = self.default('commission', 0.003, kwargs)
        self._base_instrument = self.default('base_instrument', USD, kwargs)
        self._quote_instrument = self.default('quote_instrument', BTC, kwargs)
        self._initial_balance = self.default('initial_balance', 10000, kwargs)
        self._min_trade_size = self.default('min_trade_size', 1e-6, kwargs)
        self._max_trade_size = self.default('max_trade_size', 1e6, kwargs)
        self._min_trade_price = self.default('min_trade_price', 1e-8, kwargs)
        self._max_trade_price = self.default('max_trade_price', 1e8, kwargs)
        self._randomize_time_slices = self.default('randomize_time_slices',
                                                   False, kwargs)
        self._min_time_slice = self.default('min_time_slice', 128, kwargs)

        self._price_column = self.default('price_column', 'close', kwargs)
        self.data_frame = self.default('data_frame', data_frame)

        slippage_model = self.default('slippage_model', 'uniform', kwargs)
        self._slippage_model = slippage.get(slippage_model) if isinstance(
            slippage_model, str) else slippage_model()

        self._initial_step = 0
        self._final_step = len(self._data_frame) - 1

        if self._randomize_time_slices:
            self._initial_step = np.random.randint(
                0,
                len(self._data_frame) - self._min_time_slice - 2)
            self._final_step = np.random.randint(
                self._initial_step + self._min_time_slice,
                len(self._data_frame) - 1)
Example #2
0
    def __init__(self, data_frame: pd.DataFrame = None, **kwargs):
        super().__init__(dtype=self.default('dtype', np.float16),
                         feature_pipeline=self.default('feature_pipeline',
                                                       None))
        self._commission_percent = self.default('commission_percent', 0.3,
                                                kwargs)
        self._base_precision = self.default('base_precision', 2, kwargs)
        self._instrument_precision = self.default('instrument_precision', 8,
                                                  kwargs)
        self._min_trade_price = self.default('min_trade_price', 1e-6, kwargs)
        self._max_trade_price = self.default('max_trade_price', 1e6, kwargs)
        self._min_trade_amount = self.default('min_trade_amount', 1e-3, kwargs)
        self._max_trade_amount = self.default('max_trade_amount', 1e6, kwargs)
        self._min_order_amount = self.default('min_order_amount', 1e-3, kwargs)

        self._initial_balance = self.default('initial_balance', 1e4, kwargs)
        self._observation_columns = self.default(
            'observation_columns', ['open', 'high', 'low', 'close', 'volume'],
            kwargs)
        self._price_column = self.default('price_column', 'close', kwargs)
        self._window_size = self.default('window_size', 1, kwargs)
        self._pretransform = self.default('pretransform', True, kwargs)
        self._price_history = None

        self.data_frame = self.default('data_frame', data_frame)

        model = self.default('slippage_model', 'uniform', kwargs)
        self._slippage_model = slippage.get(model) if isinstance(
            model, str) else model()
Example #3
0
    def __init__(self, data_frame: pd.DataFrame = None, **kwargs):
        super().__init__(
            dtype=self.default('dtype', np.float32),
            feature_pipeline=self.default('feature_pipeline', None),
            **kwargs
        )

        self._commission_percent = self.default('commission_percent', 0.075, kwargs)
        self._base_precision = self.default('base_precision', 5, kwargs)
        self._instrument_precision = self.default('instrument_precision', 1, kwargs)
        self._initial_balance = self.default('initial_balance', 1, kwargs)
        self._price_column = self.default('price_column', 'close', kwargs)
        self._pretransform = self.default('pretransform', True, kwargs)
        self._stop_loss_percent = self.default('stop_loss_percent', 30, kwargs)
        self.leverage = self.default('leverage', 1, kwargs)
        self.n_env = self.default('n_env', 1, kwargs)
        self.data_frame = self.default('data_frame', data_frame)
        self._current_step = 0
        model = self.default('slippage_model', 'uniform', kwargs)
        self._slippage_model = slippage.get(model) if isinstance(model, str) else model()
        self.last_direction = 0
        self.total_margin = 0
        self.total_profit = 0
        self.profit = 0
        self.hold_profit = 0
        self.total_position = 0
        self.profit_percent = 0
        self.total_profit_percent = 0
        self.entry_price = 0
        self.last_price = 0
    def __init__(self, data_frame: pd.DataFrame = None, **kwargs):
        super().__init__(
            dtype=self.default('dtype', np.float32),
            feature_pipeline=self.default('feature_pipeline', None),
            **kwargs
        )

        self._commission_percent = self.default('commission_percent', 0.3, kwargs)
        self._base_precision = self.default('base_precision', 2, kwargs)
        self._instrument_precision = self.default('instrument_precision', 8, kwargs)
        self._initial_balance = self.default('initial_balance', 1e4, kwargs)
        self._price_column = self.default('price_column', 'close', kwargs)
        self._pretransform = self.default('pretransform', True, kwargs)

        self.data_frame = self.default('data_frame', data_frame)

        model = self.default('slippage_model', 'uniform', kwargs)
        self._slippage_model = slippage.get(model) if isinstance(model, str) else model()
Example #5
0
def test_random_uniform_slippage_model():
    assert isinstance(slippage.get('uniform'), RandomUniformSlippageModel)