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)
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()
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()
def test_random_uniform_slippage_model(): assert isinstance(slippage.get('uniform'), RandomUniformSlippageModel)