AmirTrader commited on
Commit
b0224d2
·
1 Parent(s): 031626e

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +31 -28
app.py CHANGED
@@ -1,32 +1,38 @@
1
  import pandas as pd
2
  import panel as pn
3
  from datetime import datetime
4
- from datetime import date
5
  pn.extension('bokeh', template='bootstrap')
6
  import hvplot.pandas
7
  import os
8
  import yfinance as yf
9
 
10
  @pn.cache
11
- def getPolygonDF(ticker , startdate , enddate , intervalperiod, window, window2):
 
12
  import time
13
- #My Polygon API
14
- mypolgonAPI = os.environ.get('mypolgonAPI')
15
- headers = {"Authorization": f"Bearer {mypolgonAPI}"}
16
-
17
  import pandas as pd
18
  import requests
19
- import json
 
 
 
 
 
 
 
 
 
20
 
21
  interval = "minute"
22
  period = intervalperiod #"5"
23
  limit = 50000
24
 
25
-
26
  dflst = []
27
  nexturl = f"https://api.polygon.io/v2/aggs/ticker/{ticker}/range/{period}/{interval}/{startdate}/{enddate}?adjusted=true&sort=asc&limit={limit}"
28
  while True:
29
  r1 = requests.get(nexturl , headers=headers)
 
30
  df = pd.DataFrame(json.loads(r1.text)["results"])
31
  df['UNIXTIME'] = pd.to_datetime(df['t'], unit='ms', utc=True).map(lambda x: x.tz_convert('America/New_York'))
32
  dflst.append(df)
@@ -41,33 +47,28 @@ def getPolygonDF(ticker , startdate , enddate , intervalperiod, window, window2)
41
  DF['SMA2'] = DF.c.rolling(window=window2).mean()
42
  return DF
43
 
44
- def get_hvplot(ticker , startdate , enddate , interval,window,window2):
45
- DF = getPolygonDF(ticker , startdate=startdate , enddate=enddate , intervalperiod=interval,window=window,window2=window2)
 
46
 
47
  import hvplot.pandas # Ensure hvplot is installed (pip install hvplot)
48
 
49
  import holoviews as hv
50
  hv.extension('bokeh')
51
- # Assuming your dataframe is named 'df' with columns 'Date' and 'Close'
52
- # If not, replace 'Date' and 'Close' with your actual column names.
53
 
54
- # Step 1: Create a scatter plot using hvplot
55
  scatter_plot = DF.hvplot(x='UNIXTIME', y='c', kind='scatter',title=f'{ticker} Close vs. Date')
56
 
57
-
58
  line_plot_SMA = DF.hvplot(x='UNIXTIME', y='SMA', kind='line',line_dash='dashed', color='orange')
59
  line_plot_SMA2 = DF.hvplot(x='UNIXTIME', y='SMA2', kind='line',line_dash='dashed', color='orange')
60
 
61
- # # Step 5: Overlay scatter plot and linear regression line
62
- # return (scatter_plot * line_plot).opts(width=800, height=600, show_grid=True, gridstyle={ 'grid_line_color': 'gray'})
63
- # grid_style = {'grid_line_color': 'black'}#, 'grid_line_width': 1.5, 'ygrid_bounds': (0.3, 0.7),'minor_xgrid_line_color': 'lightgray', 'xgrid_line_dash': [4, 4]}
64
  return (scatter_plot *line_plot_SMA *line_plot_SMA2).opts(width=800, height=600, show_grid=True)
65
 
66
 
67
  tickers = ['AAPL', 'META', 'GOOG', 'IBM', 'MSFT','NKE','DLTR','DG']
68
  # ticker = pn.widgets.Select(name='Ticker', options=tickers)
69
 
70
- # tickers = pd.read_csv('tickers.csv').Ticker.to_list()
71
  ticker = pn.widgets.AutocompleteInput(name='Ticker', options=tickers , placeholder='Write Ticker here همین جا')
72
  ticker.value = "AAPL"
73
  window = pn.widgets.IntSlider(name='Window Size', value=50, start=5, end=1000, step=5)
@@ -77,23 +78,25 @@ window2 = pn.widgets.IntSlider(name='Window Size2', value=150, start=5, end=1000
77
  date_start = pn.widgets.DatePicker(
78
  name ="Start Date",
79
  description='Select a Date',
80
- start= date(2023, 1, 1)
81
  )
82
 
83
- date_end = pn.widgets.DatePicker(
84
- name ="End Date",# value=datetime(2000, 1, 1),
85
- description='Select a Date',
86
- end= date(2023, 1, 3) #date.today() #date(2023, 9, 1)
87
- )
 
 
 
88
 
89
- date_start.value = date(2023,1,1)
90
- date_end.value = date(2023, 1, 3) # date.today()
91
 
92
  pn.Row(
93
- pn.Column( ticker, window , window2, date_start , date_end),
94
  # pn.bind(calc_fairprice_CDF,ticker),
95
  # pn.bind(calc_fairprice_DnetP,ticker)),
96
  # pn.panel(pn.bind(get_hvplot, ticker, "2010-01-01","2023-09-01","1d")) #, sizing_mode='stretch_width')
97
- pn.panel(pn.bind(get_hvplot, ticker, date_start , date_end,"5",window,window2)), #, sizing_mode='stretch_width')
98
  # pn.panel(pn.bind(get_income_hvplot, ticker)) #, sizing_mode='stretch_width')
99
  ).servable(title="Intraday Price Action - Pattern Detection")
 
1
  import pandas as pd
2
  import panel as pn
3
  from datetime import datetime
4
+ from datetime import date, timedelta
5
  pn.extension('bokeh', template='bootstrap')
6
  import hvplot.pandas
7
  import os
8
  import yfinance as yf
9
 
10
  @pn.cache
11
+ def getPolygonDF(ticker , startdate , enddate , intervalperiod , window, window2):
12
+ import json
13
  import time
 
 
 
 
14
  import pandas as pd
15
  import requests
16
+
17
+ #My Polygon API (need to define in huggingface env variable)
18
+ mypolgonAPI = os.environ.get('mypolgonAPI')
19
+
20
+ #to get key from json file
21
+ # with open('config.json') as config_file:
22
+ # config = json.load(config_file)
23
+ # mypolgonAPI = config['mypolgonAPI']
24
+
25
+ headers = {"Authorization": f"Bearer {mypolgonAPI}"}
26
 
27
  interval = "minute"
28
  period = intervalperiod #"5"
29
  limit = 50000
30
 
 
31
  dflst = []
32
  nexturl = f"https://api.polygon.io/v2/aggs/ticker/{ticker}/range/{period}/{interval}/{startdate}/{enddate}?adjusted=true&sort=asc&limit={limit}"
33
  while True:
34
  r1 = requests.get(nexturl , headers=headers)
35
+ print(r1)
36
  df = pd.DataFrame(json.loads(r1.text)["results"])
37
  df['UNIXTIME'] = pd.to_datetime(df['t'], unit='ms', utc=True).map(lambda x: x.tz_convert('America/New_York'))
38
  dflst.append(df)
 
47
  DF['SMA2'] = DF.c.rolling(window=window2).mean()
48
  return DF
49
 
50
+ def get_hvplot(ticker , startdate , interval,window,window2):
51
+ date_end = date_start.value + timedelta(days=1) # date.today()
52
+ DF = getPolygonDF(ticker , startdate=startdate , enddate=date_end , intervalperiod=interval,window=window,window2=window2)
53
 
54
  import hvplot.pandas # Ensure hvplot is installed (pip install hvplot)
55
 
56
  import holoviews as hv
57
  hv.extension('bokeh')
 
 
58
 
59
+ # Create a scatter plot using hvplot
60
  scatter_plot = DF.hvplot(x='UNIXTIME', y='c', kind='scatter',title=f'{ticker} Close vs. Date')
61
 
 
62
  line_plot_SMA = DF.hvplot(x='UNIXTIME', y='SMA', kind='line',line_dash='dashed', color='orange')
63
  line_plot_SMA2 = DF.hvplot(x='UNIXTIME', y='SMA2', kind='line',line_dash='dashed', color='orange')
64
 
 
 
 
65
  return (scatter_plot *line_plot_SMA *line_plot_SMA2).opts(width=800, height=600, show_grid=True)
66
 
67
 
68
  tickers = ['AAPL', 'META', 'GOOG', 'IBM', 'MSFT','NKE','DLTR','DG']
69
  # ticker = pn.widgets.Select(name='Ticker', options=tickers)
70
 
71
+ # tickers = pd.read_csv('tickers2.csv').Ticker.to_list()
72
  ticker = pn.widgets.AutocompleteInput(name='Ticker', options=tickers , placeholder='Write Ticker here همین جا')
73
  ticker.value = "AAPL"
74
  window = pn.widgets.IntSlider(name='Window Size', value=50, start=5, end=1000, step=5)
 
78
  date_start = pn.widgets.DatePicker(
79
  name ="Start Date",
80
  description='Select a Date',
81
+ start= date.today() - timedelta(days=365 * 2)
82
  )
83
 
84
+ # date_end = pn.widgets.DatePicker(
85
+ # name ="End Date",# value=datetime(2000, 1, 1),
86
+ # description='Select a Date',
87
+ # end= date.today() - timedelta(days=365 * 2) + timedelta(days=1) #date.today() #date(2023, 9, 1)
88
+ # )
89
+
90
+ date_start.value = date.today() - timedelta(days=200 * 2)
91
+ # date_end = date_start.value + timedelta(days=1) # date.today()
92
 
93
+ menu_button = pn.widgets.Select(name='Time Frame (min)', options=['1', '5', '10'])
 
94
 
95
  pn.Row(
96
+ pn.Column( ticker, window , window2, date_start , menu_button),
97
  # pn.bind(calc_fairprice_CDF,ticker),
98
  # pn.bind(calc_fairprice_DnetP,ticker)),
99
  # pn.panel(pn.bind(get_hvplot, ticker, "2010-01-01","2023-09-01","1d")) #, sizing_mode='stretch_width')
100
+ pn.panel(pn.bind(get_hvplot, ticker, date_start , menu_button,window,window2)), #, sizing_mode='stretch_width')
101
  # pn.panel(pn.bind(get_income_hvplot, ticker)) #, sizing_mode='stretch_width')
102
  ).servable(title="Intraday Price Action - Pattern Detection")