def test_simulated_from_config(): class NoSlippage(SlippageModel): def adjust_trade(self, trade: Trade, **kwargs) -> Trade: pass config = { 'base_instrument': 'EURO', 'instruments': ['BTC', 'ETH'], 'exchanges': { 'commission': 0.5, 'base_precision': 0.3, 'instrument_precision': 10, 'min_trade_price': 1e-7, 'max_trade_price': 1e7, 'min_trade_size': 1e-4, 'max_trade_size': 1e4, 'initial_balance': 1e5, 'window_size': 5, 'should_pretransform_obs': True, 'max_allowed_slippage_percent': 3.0, 'slippage_model': NoSlippage } } with TradingContext(**config): df = pd.Source([[900, 849, 9023, 94039, 943]], columns=["open", "high", "low", "close", "volume"]) exchange_ds = DataFrameSource('prices', df) data_feed = DataFeed([exchange_ds]) exchange = Exchange('Exchange', lambda x: {EUR / ETH: x['close']}) assert exchange._base_instrument == 'EURO' assert exchange._commission == 0.5
def test_data_frame_next(): data = np.array([[13863.13, 13889., 12952.5, 13480.01, 11484.01], [13480.01, 15275., 13005., 14781.51, 23957.87], [14781.51, 15400., 14628., 15098.14, 16584.63], [15098.14, 15400., 14230., 15144.99, 17980.39], [15144.99, 17178., 14824.05, 16960.01, 20781.65]]) index = pd.Index( ['2018-01-01', '2018-01-02', '2018-01-03', '2018-01-04', '2018-01-05'], name="date") columns = ["open", "high", "low", "close", "volume"] data_frame = pd.DataFrame(data, index=index, columns=columns) data_frame_ds = DataFrameSource(data_frame) d1 = data_frame_ds.next() assert d1 == {k: v for k, v in zip(columns, data[0, :])}
def test_exchange_with_data_source(): data = np.array([[13863.13, 13889., 12952.5, 13480.01, 11484.01], [13480.01, 15275., 13005., 14781.51, 23957.87], [14781.51, 15400., 14628., 15098.14, 16584.63], [15098.14, 15400., 14230., 15144.99, 17980.39], [15144.99, 17178., 14824.05, 16960.01, 20781.65]]) index = pd.Index( ['2018-01-01', '2018-01-02', '2018-01-03', '2018-01-04', '2018-01-05'], name="date") columns = ["open", "high", "low", "close", "volume"] data_frame = pd.Source(data, index=index, columns=columns) data_frame_ds = DataFrameSource('a1', data_frame) data_feed = DataFeed([data_frame_ds])
from tensortrade.base.exceptions import InsufficientFunds, IncompatibleInstrumentOperation from tensortrade.data import DataFeed, DataFrameSource from tensortrade.exchanges import Exchange from tensortrade.wallets import Wallet from tensortrade.instruments import USD, BTC, Quantity path_id = "f4cfeeae-a3e4-42e9-84b9-a24ccd2eebeb" other_id = "7f3de243-0474-48d9-bf44-ca55ae07a70e" PRICE_COLUMN = "close" data_frame = pd.read_csv("tests/data/input/coinbase-1h-btc-usd.csv") data_frame.columns = map(str.lower, data_frame.columns) data_frame = data_frame.rename(columns={'volume btc': 'volume'}) exchange_ds = DataFrameSource('Frame', data_frame) exchange_feed = DataFeed([exchange_ds]) exchange = Exchange('Exchange', lambda x: x) def test_init(): wallet = Wallet(exchange, 10000 * USD) assert wallet.balance == 10000 * USD assert wallet.exchange == exchange assert wallet.instrument == USD assert len(wallet.locked) == 0