Beispiel #1
0
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
Beispiel #2
0
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, :])}
Beispiel #3
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])
Beispiel #4
0
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