forked from ruke1ire/CryptoView
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.py
More file actions
129 lines (108 loc) · 4.92 KB
/
main.py
File metadata and controls
129 lines (108 loc) · 4.92 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
# -*- coding: utf-8 -*-
"""
Created on Fri Feb 19 12:36:41 2021
@author: Romen Samuel Wabina
"""
import dash
import json
import dash_core_components as dcc
import dash_html_components as html
from dash.dependencies import Input, Output, State
import plotly.graph_objs as go
import analytics.analytics as analytics
from ta import add_all_ta_features
from ta.utils import dropna
from sklearn import preprocessing
from datetime import datetime, timedelta
from data_handler.data_handler import DataHandler
from ui.custom_dash_components import *
###################### DataHandler ######################
dh = DataHandler()
###################### Layout ###########################
app.layout = html.Div(style = {'backgroundColor': colors['background'],
'marginTop' : 0,
'marginBottom' : 0,
'paddingTop' : 0,
'paddingBottom': 0},
children = [minute_interval,
layer_1, tabs, layer_3, selection_tabs,
layer_4,day_interval, title_indicators, gauge_indicator,
title_confluence, layer_5, weighing_layer,
layer_6, storage_div ])
@app.callback(
Output('ohlc', 'figure'),
Output('storage', 'children'),
Input('graph_tab','value'),
Input('time_tabs', 'value'),
Input('coin-tabs', 'value'),
Input('macdmarket','value'),
)
def update_graph(graph_name, time_tabs_name, coin_tab_name, stat_name):
df_ohlc = dh.get_data(coin_tab_name, time_tabs_name, limit = 1200)
df_ohlc = df_ohlc.sort_values(by=['timestamp'])
date_range = json.dumps({"start":df_ohlc.iloc[0].name.strftime('%Y-%m-%d %H:%M:%S'),"end":df_ohlc.iloc[-1].name.strftime('%Y-%m-%d %H:%M:%S')})
return create_ohlc(df_ohlc, graph_name, time_tabs_name, coin_tab_name, stat_name),date_range
@app.callback(Output('num-indicator', 'figure'),
[Input('interval-component', 'n_intervals'),
Input('coin-tabs', 'value')])
def update_data(n, symbol):
df = dh.get_data(symbol,'1m', limit = 3)
return create_market_change_indicator(df)
@app.callback(Output('Topper','data'),
[Input('d-interval-component','n_intervals')])
def update_topper(n):
df = dh
return topper_rank(df)
@app.callback(Output('market_summary','data'),
[Input('d-interval-component','n_intervals')])
def update_market_summary(n):
df = dh
return market_summary(df)
@app.callback(Output('market_icon','children'),
[Input('d-interval-component','n_intervals')])
def update_market_summary_icon(n):
df = dh
return market_summary_icons(df)
@app.callback(Output('market_graph','figure'),
[Input('d-interval-component','n_intervals')])
def update_market_summary_figure(n):
df = dh
return market_summary_figure(df)
@app.callback(Output('coin-name-title', 'children'),
Input('coin-tabs', 'value'))
def update_coin_name(symbol):
return coin_names[symbol]
@app.callback(Output('coin-logo-title', 'src'),
Input('coin-tabs', 'value'))
def update_coin_logo(symbol):
return app.get_asset_url(f'img/{coin_imgs[symbol]}')
@app.callback([Output('rsi-gauge', 'figure'),
Output('bullet-indicator', 'value')],
[Input('interval-component', 'n_intervals'),
Input('coin-tabs', 'value'),
Input('cci', 'value'),
Input('rsi', 'value'),
Input('k_avg', 'value'),
Input('sma', 'value'),
Input('ema', 'value'),
Input('macd', 'value'),
Input('awesome', 'value'),
Input('ultimate', 'value'),
])
def update_technical_indicators(time_tabs_name, coin_tab_name, cci, rsi, k_avg, sma, ema, macd, awesome, ultimate):
df = dh.get_data(coin_tab_name, '1d', limit = 100).iloc[0:,:] #starting from 1 because the lastest data point's volume isn't the final volume
df = add_all_ta_features(df.reindex(index=df.index[::-1]), open="open", high = "high", low = "low", close = "close",
volume = "volume", fillna = True)
df = df.reindex(index=df.index[::-1])
criteria_weights = [cci, rsi, k_avg, sma, ema, macd, awesome, ultimate]
return create_gauge_rsi_indicator(df), create_bullet_graph(df,criteria_weights)
@app.callback(Output('indicators-table', 'data'),
[Input('interval-component', 'n_intervals'),
Input('coin-tabs', 'value')])
def update_indicator_table(n, coin_tab_name):
df = dh.get_data(coin_tab_name, '1d', limit = 1000)
df = add_all_ta_features(df.reindex(index=df.index[::-1]), open = "open", high = "high", low = "low", close = "close", volume = "volume", fillna = True)
df = df.reindex(index=df.index[::-1])
return indicators_table(df)
if __name__ == '__main__':
app.run_server(debug=True)