mirror of
https://github.com/wassname/catalyst.git
synced 2026-09-10 11:50:32 +08:00
Added data validation unit tests and minor fixes to the get_candles method of Poloniex.
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
import pandas as pd
|
||||
from catalyst.exchange.bittrex.bittrex import Bittrex
|
||||
from catalyst.finance.order import Order
|
||||
from base import BaseExchangeTestCase
|
||||
@@ -7,15 +8,15 @@ from catalyst.exchange.exchange_utils import get_exchange_auth
|
||||
log = Logger('test_bittrex')
|
||||
|
||||
|
||||
class TestBittrexTestCase(BaseExchangeTestCase):
|
||||
class TestBittrex(BaseExchangeTestCase):
|
||||
@classmethod
|
||||
def setup(self):
|
||||
print ('creating bittrex object')
|
||||
auth = get_exchange_auth('bittrex')
|
||||
self.exchange = Bittrex(
|
||||
key=auth['key'],
|
||||
secret=auth['secret'],
|
||||
base_currency='btc'
|
||||
base_currency=None,
|
||||
portfolio=None
|
||||
)
|
||||
|
||||
def test_order(self):
|
||||
@@ -52,15 +53,18 @@ class TestBittrexTestCase(BaseExchangeTestCase):
|
||||
log.info('retrieving candles')
|
||||
ohlcv_neo = self.exchange.get_candles(
|
||||
data_frequency='5m',
|
||||
assets=self.exchange.get_asset('neo_btc')
|
||||
assets=self.exchange.get_asset('neo_btc'),
|
||||
bar_count=20,
|
||||
end_dt=pd.to_datetime('2017-10-20', utc=True)
|
||||
)
|
||||
ohlcv_neo_ubq = self.exchange.get_candles(
|
||||
data_frequency='5m',
|
||||
data_frequency='1d',
|
||||
assets=[
|
||||
self.exchange.get_asset('neo_btc'),
|
||||
self.exchange.get_asset('ubq_btc')
|
||||
],
|
||||
bar_count=14
|
||||
bar_count=14,
|
||||
end_dt=pd.to_datetime('2017-10-20', utc=True)
|
||||
)
|
||||
pass
|
||||
|
||||
|
||||
@@ -40,16 +40,16 @@ class TestExchangeBundle:
|
||||
|
||||
def test_ingest_minute(self):
|
||||
data_frequency = 'minute'
|
||||
exchange_name = 'poloniex'
|
||||
exchange_name = 'bitfinex'
|
||||
|
||||
exchange = get_exchange(exchange_name)
|
||||
exchange_bundle = ExchangeBundle(exchange)
|
||||
assets = [
|
||||
exchange.get_asset('burst_btc')
|
||||
exchange.get_asset('iot_btc')
|
||||
]
|
||||
|
||||
# start = pd.to_datetime('2017-09-01', utc=True)
|
||||
start = pd.to_datetime('2017-9-15', utc=True)
|
||||
start = pd.to_datetime('2017-9-01', utc=True)
|
||||
end = pd.to_datetime('2017-9-30', utc=True)
|
||||
|
||||
log.info('ingesting exchange bundle {}'.format(exchange_name))
|
||||
@@ -318,15 +318,15 @@ class TestExchangeBundle:
|
||||
pass
|
||||
|
||||
def test_validate_data(self):
|
||||
exchange_name = 'poloniex'
|
||||
exchange_name = 'bitfinex'
|
||||
data_frequency = 'minute'
|
||||
|
||||
exchange = get_exchange(exchange_name)
|
||||
exchange_bundle = ExchangeBundle(exchange)
|
||||
assets = [exchange.get_asset('neos_btc')]
|
||||
assets = [exchange.get_asset('iot_btc')]
|
||||
|
||||
end_dt = pd.to_datetime('2017-10-20', utc=True)
|
||||
bar_count = 100
|
||||
end_dt = pd.to_datetime('2017-9-2 1:00', utc=True)
|
||||
bar_count = 60
|
||||
|
||||
bundle_series = exchange_bundle.get_history_window_series(
|
||||
assets=assets,
|
||||
@@ -349,12 +349,11 @@ class TestExchangeBundle:
|
||||
data=dict(bundle_price=bundle_series[asset]),
|
||||
index=bundle_series[asset].index
|
||||
)
|
||||
bundle_df = bundle_df.resample('5T').last()
|
||||
|
||||
exchange_series = exchange.get_series_from_candles(
|
||||
candles=candles[asset],
|
||||
start_dt=start_dt,
|
||||
end_dt=end_dt,
|
||||
data_frequency=data_frequency,
|
||||
field='close'
|
||||
)
|
||||
exchange_df = pd.DataFrame(
|
||||
@@ -372,3 +371,58 @@ class TestExchangeBundle:
|
||||
df = pd.concat(frames)
|
||||
print('\n' + df_to_string(df))
|
||||
pass
|
||||
|
||||
def test_ingest_candles(self):
|
||||
exchange_name = 'bitfinex'
|
||||
data_frequency = 'minute'
|
||||
|
||||
exchange = get_exchange(exchange_name)
|
||||
bundle = ExchangeBundle(exchange)
|
||||
assets = [exchange.get_asset('iot_btc')]
|
||||
|
||||
end_dt = pd.to_datetime('2017-10-20', utc=True)
|
||||
bar_count = 100
|
||||
|
||||
start_dt = get_start_dt(end_dt, bar_count, data_frequency)
|
||||
candles = exchange.get_candles(
|
||||
assets=assets,
|
||||
start_dt=start_dt,
|
||||
end_dt=end_dt,
|
||||
bar_count=bar_count,
|
||||
data_frequency=data_frequency
|
||||
)
|
||||
|
||||
writer = bundle.get_writer(start_dt, end_dt, data_frequency)
|
||||
for asset in assets:
|
||||
dates = [candle['last_traded'] for candle in candles[asset]]
|
||||
|
||||
values = dict()
|
||||
for field in ['open', 'high', 'low', 'close', 'volume']:
|
||||
values[field] = [candle[field] for candle in candles[asset]]
|
||||
|
||||
periods = bundle.get_calendar_periods_range(
|
||||
start_dt, end_dt, data_frequency
|
||||
)
|
||||
df = pd.DataFrame(values, index=dates)
|
||||
df = df.loc[periods].fillna(method='ffill')
|
||||
|
||||
# TODO: why do I get an extra bar?
|
||||
bundle.ingest_df(
|
||||
ohlcv_df=df,
|
||||
data_frequency=data_frequency,
|
||||
asset=asset,
|
||||
writer=writer,
|
||||
empty_rows_behavior='raise'
|
||||
)
|
||||
|
||||
bundle_series = bundle.get_history_window_series(
|
||||
assets=assets,
|
||||
end_dt=end_dt,
|
||||
bar_count=bar_count,
|
||||
field='close',
|
||||
data_frequency=data_frequency,
|
||||
reset_reader=True
|
||||
)
|
||||
df = pd.DataFrame(bundle_series)
|
||||
print('\n' + df_to_string(df))
|
||||
pass
|
||||
|
||||
Reference in New Issue
Block a user