我的程序在初始化时连接到coinbase服务器,并加载一些历史价格(通常是过去24小时)。这些值存储在名为“ cena”的列表中。之后,第一次绘制图形 完成此程序后,程序将在股票行情通道上打开网络套接字连接,并将所有新价格附加到“中价”列表中。 每次更新后,图形都会重绘。
当来自websocket的第一个(以及每个下一个)更新出现并被绘制时,就会出现问题。突然有一条线可以追溯到起点,而不是从历史数据的结尾部分而是从起点image
绘制图形。我假设(但我没有任何证据支持这一理论),问题出在我生活在与服务器所在时区不同的某个时区中,而我在那些时区中却混在一起。 / p>
Code responsible for requesting historical data and ploting:
def Preignitor():
end=(time.time()-3600)
start=end-1800#86400
for product_id in produkty:
PR=Public_Requester()
un_filtered=PR.Historic_rates_divider(start=start, end=end, skala=900, produkt=product_id)
time.sleep(1)
for v in range(len(un_filtered)):
cena[produkty.index(product_id)].append(un_filtered[v][4])
czas[produkty.index(product_id)].append(un_filtered[v][0])
def Preignitor_plot(produkty, cena, czas):
fig=plt.figure()
for x in range(len(produkty)):
ax[x]=fig.add_subplot(len(produkty), 1 , 1+x)
p[x], =ax[x].plot(czas[x], cena[x])
plt.show(block=False)
def Plot_update(produkty, cena, czas):
for x in range(len(produkty)):
p[x].set_data(czas[x],cena[x])
ax[x].relim()
ax[x].autoscale_view()
plt.pause(1e-3)
Code handling the ticker websocket updates:
while True:
if q.not_empty: # q is a queue, i use it to handle pasing data between threads
dane=q.get()
typ=dane.get('type',None)
if typ=='ticker':
price=dane.get('price', None)
pair=dane.get('product_id',None)
t=dane.get('time', None)
if t is not None:
t=time.mktime(time.strptime(t, '%Y-%m-%dT%H:%M:%S.%fZ'))
b=True
if b==True:
alfa=time.time()
b=False
produkt_id=produkty.index(pair)
cena[produkt_id].append(float(price))
czas[produkt_id].append(t)