Advertisement
Guest User

Untitled

a guest
Jun 22nd, 2021
29
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.50 KB | None | 0 0
  1. # data analysis
  2. import pandas as pd
  3. import datetime as dt
  4. # plotting
  5. from bokeh.io import curdoc
  6. from bokeh.plotting import figure
  7. from bokeh.models import ColumnDataSource, HoverTool, Slider
  8. from bokeh.models.widgets import Select
  9. from bokeh.models.tools import WheelZoomTool
  10. from bokeh.layouts import column
  11. from bokeh.models.formatters import DatetimeTickFormatter
  12. # binance
  13. from binance.client import Client
  14.  
  15. def update_source():
  16.  
  17. # create new view from dataframe
  18. df_view = df.iloc[0:df.shape[0]]
  19.  
  20. # create new source
  21. new_source = df_view.to_dict(orient='list')
  22.  
  23. # add colors to be used for plotting bull and bear candles
  24. colors = ['green' if cl >= op else 'red' for (cl, op)
  25. in zip(df_view.close, df_view.open)]
  26. new_source['colors'] = colors
  27.  
  28. source.data = new_source
  29.  
  30.  
  31. def make_plot(src):
  32.  
  33. p = figure(x_axis_type='datetime') # x_axis_type='datetime'
  34. p.segment('date_time', 'high', 'date_time', 'low', source=src, line_width=1, color='grey') # plot the wicks
  35. p.vbar('date_time', 0.7, 'close', 'open', source=src, line_color='white', fill_color='colors', ) # plot the body
  36.  
  37. #p.xaxis.formatter = DatetimeTickFormatter(minutes = [':%M', '%Mm'])
  38.  
  39. hover = HoverTool(tooltips=[
  40. ('date', '@date_time{%F %T}'), # date_time for pandas formatted
  41. ('open', '@open{0.0000f}'),
  42. ('high', '@high{0.0000f}'),
  43. ('low', '@low{0.0000f}'),
  44. ('close', '@close{0.0000f}')
  45. ],
  46. formatters={'@date_time': 'datetime'})
  47. p.add_tools(hover)
  48. return p
  49.  
  50. client = Client("", "")
  51.  
  52. symbol = "BNBUSDT"
  53. start = "1 day ago UTC"
  54. end = "now UTC"
  55. interval = Client.KLINE_INTERVAL_5MINUTE
  56.  
  57. df = pd.DataFrame(client.get_historical_klines(symbol, interval, start, end))
  58. df.columns=['open_time','open', 'high', 'low', 'close', 'volume', 'close_time', 'qav', 'num_trades', 'taker_base_vol', 'taker_quote_vol','is_best_match']
  59. df['date_time'] = [pd.to_datetime(x, unit='ms') for x in df.open_time]
  60. #df['open_date_time']=[dt.datetime.fromtimestamp(x/1000) for x in df.open_time]
  61.  
  62. #df=df[['open_date_time','open', 'high', 'low', 'close', 'volume', 'num_trades', 'taker_base_vol', 'taker_quote_vol']]
  63. df['bar'] = df.index
  64.  
  65. last_entry = df.shape[0]
  66.  
  67. # initialize the data source
  68. source = ColumnDataSource()
  69. update_source()
  70.  
  71. # draw the plot
  72. plot = make_plot(source)
  73. plot.toolbar.active_scroll = plot.select_one(WheelZoomTool)
  74.  
  75. curdoc().add_root(
  76. column(
  77. plot, sizing_mode='stretch_both'
  78. ))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement