Я пытаюсь рассчитать индекс денежного потока для цены биткойна.
Для этого я использую gdax, pandas и pyti.
Вот мой код:
import gdax
import pandas as pd
from pyti.money_flow_index import money_flow_index as mfi
public_client = gdax.PublicClient()
historic = public_client.get_product_historic_rates('BTC-USD', granularity=60)
pd.set_option('display.max_rows', 30)
df = pd.DataFrame(historic)
df.columns = ['Time', 'Low', 'High', 'Open', 'Close', 'Volume']
df = df.head(n=30)
print(df, '\n')
close_data = df['Close'][0]
high_data = df['High'][0]
low_data = df['Low'][0]
volume_data = df['Volume'][0]
period = 14
print(mfi(close_data, high_data, low_data, volume_data, period))
Вот ошибка, которую я получаю:
Traceback (most recent call last):
File "tiiii.py", line 18, in <module>
print(mfi(close_data, high_data, low_data, volume_data, period))
File "C:\Users\user\AppData\Local\Programs\Python\Python36-32\lib\site-packages\pyti\money_
flow_index.py", line 19, in money_flow_index
close_data, high_data, low_data, volume
File "C:\Users\user\AppData\Local\Programs\Python\Python36-32\lib\site-packages\pyti\catch_
errors.py", line 26, in check_for_input_len_diff
arrays_len = [len(arr) for arr in args]
File "C:\Users\user\AppData\Local\Programs\Python\Python36-32\lib\site-packages\pyti\catch_
errors.py", line 26, in <listcomp>
arrays_len = [len(arr) for arr in args]
TypeError: object of type 'numpy.float64' has no len()
Изменить: ОК, теперь я использую:
close_data = df['Close']
high_data = df['High']
low_data = df['Low']
volume_data = df['Volume']
И вот что я получаю:
0
0 NaN
1 NaN
2 NaN
3 NaN
4 NaN
5 NaN
6 NaN
.. ...
23 97.914228
24 97.816960
25 96.440309
26 94.668462
27 94.340548
28 91.255057
29 87.706573
[30 rows x 1 columns]
Я не понимаю порядок значений. Кроме того, почему я не получаю полный список?
P.S. Спасибо за помощь Rahul и timgeb!
TypeError
, и что ваш новый вопрос настолько отличается от решенияTypeError
, что требует нового поста. - person timgeb   schedule 17.03.2018