Spaces:
Runtime error
Runtime error
Commit
·
b0224d2
1
Parent(s):
031626e
Update app.py
Browse files
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 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 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 ,
|
| 45 |
-
|
|
|
|
| 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 |
-
#
|
| 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('
|
| 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(
|
| 81 |
)
|
| 82 |
|
| 83 |
-
date_end = pn.widgets.DatePicker(
|
| 84 |
-
|
| 85 |
-
|
| 86 |
-
|
| 87 |
-
)
|
|
|
|
|
|
|
|
|
|
| 88 |
|
| 89 |
-
|
| 90 |
-
date_end.value = date(2023, 1, 3) # date.today()
|
| 91 |
|
| 92 |
pn.Row(
|
| 93 |
-
pn.Column( ticker, window , window2, date_start ,
|
| 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 ,
|
| 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")
|