· 6 years ago · Nov 03, 2019, 03:32 AM
1import shrimpy
2##importiamo la libreria shrimpy
3import matplotlib.pyplot as plt
4from matplotlib import style ## stile del grafico matplotlib
5from mpl_finance import candlestick_ohlc ## andiamo a importare i grafico candlestick
6import matplotlib.dates as mdates ## traduce le date in un 700000 (non so perche)
7import pandas as pd
8import datetime as datetime ###per importare gli orari
9
10
11
12time_format = "%Y-%m-%dT%H:%M:%S"
13
14public_key= '###############'
15secret_key='##############################'
16client = shrimpy.ShrimpyApiClient(public_key, secret_key)
17
18
19candles = client.get_candles(
20 'binance', # exchange
21 'ETH', # base_trading_symbol
22 'BTC', # quote_trading_symbol
23 '15m' # interval
24)
25#print(candles)
26
27
28
29dates = []
30open_data = []
31high_data = []
32low_data = []
33close_data = []
34volume_data=[]
35
36for candle in candles:
37 time = datetime.datetime.strptime(candle['time'][:18], time_format)
38 print(time)
39 dates.append(time)
40 open_data.append(candle['open'])
41 high_data.append(candle['high'])
42 low_data.append(candle['low'])
43 close_data.append(candle['close'])
44 volume_data.append(candle['volume'])
45 zippedList = list(zip(dates,open_data, high_data, low_data,close_data))
46
47
48
49df = pd.DataFrame(zippedList, columns = ['Date' , 'Open', 'High','Low', 'Close'])
50
51
52df.to_csv('dati.csv')
53
54df_ohlc= pd.read_csv("dati.csv",parse_dates=True,index_col=0)
55print(df_ohlc.head(10))
56
57
58'''
59df_ohlc.reset_index(inplace=True)## andiamo a resettare il database
60'''
61df_ohlc['Date'] = df_ohlc['Date'].map(mdates.date2num)## trasformiamo la data in valore numerico
62
63ax1 = plt.subplot2grid((6,1),(0,0),rowspan=5,colspan=1)
64
65ax1.xaxis_date()##quindi impostiamo l'asse x con le date
66
67candlestick_ohlc(ax1,df_ohlc.values,width=2,colorup='g')
68plt.show()
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89###########################################################################################################
90OUTPUT
91
92
93 Date Open High Low Close
940 2019-10-23 17:30:00 0.021374 0.021388 0.021339 0.021358
951 2019-10-23 17:45:00 0.021356 0.021413 0.021345 0.021356
962 2019-10-23 18:00:00 0.021360 0.021377 0.021336 0.021372
973 2019-10-23 18:15:00 0.021369 0.021421 0.021367 0.021418
984 2019-10-23 18:30:00 0.021418 0.021437 0.021389 0.021432
995 2019-10-23 18:45:00 0.021430 0.021438 0.021395 0.021409
1006 2019-10-23 19:00:00 0.021409 0.021447 0.021389 0.021446
1017 2019-10-23 19:15:00 0.021445 0.021474 0.021440 0.021462
1028 2019-10-23 19:30:00 0.021459 0.021522 0.021459 0.021512
1039 2019-10-23 19:45:00 0.021513 0.021516 0.021469 0.021472
104Traceback (most recent call last):
105 File "/home/vito/Desktop/cryptovenv/Ambientevirtuale/data.py", line 62, in <module>
106 df_ohlc['Date'] = df_ohlc['Date'].map(mdates.date2num)## trasformiamo la data in valore numerico
107 File "/home/vito/.local/lib/python3.7/site-packages/pandas/core/series.py", line 3828, in map
108 new_values = super()._map_values(arg, na_action=na_action)
109 File "/home/vito/.local/lib/python3.7/site-packages/pandas/core/base.py", line 1300, in _map_values
110 new_values = map_f(values, mapper)
111 File "pandas/_libs/lib.pyx", line 2228, in pandas._libs.lib.map_infer
112 File "/home/vito/.local/lib/python3.7/site-packages/matplotlib/dates.py", line 426, in date2num
113 return _to_ordinalf_np_vectorized(d)
114 File "/home/vito/.local/lib/python3.7/site-packages/numpy/lib/function_base.py", line 2091, in __call__
115 return self._vectorize_call(func=func, args=vargs)
116 File "/home/vito/.local/lib/python3.7/site-packages/numpy/lib/function_base.py", line 2161, in _vectorize_call
117 ufunc, otypes = self._get_ufunc_and_otypes(func=func, args=args)
118 File "/home/vito/.local/lib/python3.7/site-packages/numpy/lib/function_base.py", line 2121, in _get_ufunc_and_otypes
119 outputs = func(*inputs)
120 File "/home/vito/.local/lib/python3.7/site-packages/matplotlib/dates.py", line 226, in _to_ordinalf
121 base = float(dt.toordinal())
122AttributeError: 'numpy.str_' object has no attribute 'toordinal'