#D:\test\p4\t4.py
import websocket
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from pyxtension.Json import Json
import numpy as np
from datetime import datetime
import mplfinance as mpf
from matplotlib import style
def on_message(ws, message):
#message = message.replace('[','').replace(']','')
x = message.replace('[','').replace(']','')
if x.find("sym") > 0:
x = x.replace('[','').replace(']','')
print (x)
y = Json(x)
#print(y.sym)
open = y.o
print("open: ", open)
close = y.c
high = y.h
low = y.l
vw = y.vw
volume = y.v
timestamp = str(y.s)
timestamp = timestamp[0:10]
timestampEnd = str(y.e)
timestampEnd = timestampEnd[0:10]
dateBeg = datetime.fromtimestamp(int(timestamp))
dateEnd = datetime.fromtimestamp(int(timestampEnd))
global dfObj
dfObj = dfObj.append({'Open':open, 'High':high, 'Low':low, 'Close':close, 'Volume':volume,'VW':vw,'DateBeg': dateBeg, 'Date': dateEnd }, ignore_index=True)
print("close:",dfObj.Close)
trows = len(dfObj.index)
noRows = 9
print("cnt:", trows)
if trows > noRows:
print (dfObj)
dfObj = dfObj.set_index(pd.DatetimeIndex(dfObj['Date']))
ax1.clear()
ax2.clear()
mpf.plot(dfObj,type='candle', ax=ax1,volume=ax2, block=False, mav=(9,21,50,200))
plt.pause(3)
print("passed fig ****************ROW > NO *******************************")
elif trows == noRows:
dfObj = dfObj.set_index(pd.DatetimeIndex(dfObj['Date']))
print(dfObj)
mpf.plot(dfObj,type='candle', ax=ax1,volume=ax2, block=False, mav=(9,21,50,200))
plt.pause(3)
print("passed fig ************** ROW = NO *********************************")
def on_error(ws, error):
print(error)
def on_close(ws):
print("### closed ###")
#f.close
def on_open(ws):
ws.send('{"action":"auth","params":"XXXX"}')
ws.send('{"action":"subscribe","params":"A.AAPL"}')
#f = open("demofile.txt", "a")
#Set up plot
#fig = mpf.figure(figsize=(10,9))
fig = mpf.figure()
ax1 = fig.add_subplot(2,1,1,style='yahoo')
ax1 = fig.add_subplot(2,1,1)
ax2 = fig.add_subplot(3,1,3)
#ax1 = fig.add_subplot(1, 1, 1)
#fig, ax = plt.subplots()
#lines, = ax.plot([],[], 'o')
#Autoscale on unknown axis and known lims on the other
ax1.set_autoscaley_on(True)
#ax.set_xlim(self.min_x, self.max_x)
##Other stuff
ax1.grid()
#lt.tight_layout()
dfObj = pd.DataFrame(columns=['Open', 'High', 'Low','Close', 'Volume', 'VW', 'DateBeg', 'Date'])
#print("Empty Dataframe ", dfObj, sep='\n')
dfObj = dfObj.set_index(pd.DatetimeIndex(dfObj['Date']))
if __name__ == "__main__":
# websocket.enableTrace(True)
ws = websocket.WebSocketApp("wss://socket.polygon.io/stocks",
on_message = on_message,
on_error = on_error,
on_close = on_close)
ws.on_open = on_open
ws.run_forever()
No comments:
Post a Comment