use DataFrames own functions to manipulate the Bittrex JSON

This commit is contained in:
Janne Sinivirta 2017-09-10 09:51:56 +03:00
parent 4069e73039
commit 8bf5f15125
2 changed files with 7 additions and 12 deletions

View File

@ -38,16 +38,11 @@ def parse_ticker_dataframe(ticker: list, minimum_date: arrow.Arrow) -> DataFrame
:param pair: pair as str in format BTC_ETH or BTC-ETH :param pair: pair as str in format BTC_ETH or BTC-ETH
:return: DataFrame :return: DataFrame
""" """
data = [{ df = DataFrame(ticker) \
'close': t['C'], .drop('BV', 1) \
'volume': t['V'], .rename(columns={'C':'close', 'V':'volume', 'O':'open', 'H':'high', 'L':'low', 'T':'date'}) \
'open': t['O'], .sort_values('date')
'high': t['H'], return df[df['date'].map(arrow.get) > minimum_date]
'low': t['L'],
'date': t['T'],
} for t in sorted(ticker, key=lambda k: k['T']) if arrow.get(t['T']) > minimum_date]
return DataFrame(json_normalize(data))
def populate_indicators(dataframe: DataFrame) -> DataFrame: def populate_indicators(dataframe: DataFrame) -> DataFrame:
@ -93,7 +88,7 @@ def analyze_ticker(pair: str) -> DataFrame:
add several TA indicators and buy signal to it add several TA indicators and buy signal to it
:return DataFrame with ticker data and indicator data :return DataFrame with ticker data and indicator data
""" """
minimum_date = arrow.now() - timedelta(hours=6) minimum_date = arrow.utcnow().shift(hours=-6)
data = get_ticker(pair, minimum_date) data = get_ticker(pair, minimum_date)
dataframe = parse_ticker_dataframe(data['result'], minimum_date) dataframe = parse_ticker_dataframe(data['result'], minimum_date)
dataframe = populate_indicators(dataframe) dataframe = populate_indicators(dataframe)

View File

@ -22,7 +22,7 @@ class TestAnalyze(unittest.TestCase):
def test_1_dataframe_has_correct_columns(self): def test_1_dataframe_has_correct_columns(self):
self.assertEqual(self.result.columns.tolist(), self.assertEqual(self.result.columns.tolist(),
['close', 'date', 'high', 'low', 'open', 'volume']) ['close', 'high', 'low', 'open', 'date', 'volume'])
def test_2_orders_by_date(self): def test_2_orders_by_date(self):
self.assertEqual(self.result['date'].tolist(), self.assertEqual(self.result['date'].tolist(),