首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python绘制实时市场数据的问题

python绘制实时市场数据的问题
EN

Stack Overflow用户
提问于 2021-03-28 00:54:28
回答 1查看 185关注 0票数 1

我尝试以一种非常简单的方式绘制二进制标记的实时数据。代码检索数据,但取决于我使用ws变量声明的代码行所在的位置-代码要么打印市场数据,但没有出现曲线图-或者-绘图窗口出现,但保持为空,并且没有打印市场数据。如果关闭plot window (绘图窗口),将检索并打印市场数据

我做错了什么?

代码语言:javascript
复制
import websocket, json, pprint
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation

SOCKET = "wss://stream.binance.com:9443/ws/ethusdt@kline_1m"

plt.style.use('fivethirtyeight')

x_vals = []
y_vals = []

time = 0
close = 0


def on_open(ws):
    print('opened connection')

def on_close(ws):
    print('closed connection')

def on_message(ws, message):

    json_message = json.loads(message)
    
    global time
    global close
    
    time = json_message['k']['T']
    
    pprint.pprint(json_message)

    close = json_message['k']['c']
    
  
    is_bar_closed = json_message['k']['x']
    
    if is_bar_closed:
        print("bar closed at {}".format(close))


def animate(i):
    
    x_vals.append(time)
    y_vals.append(close)

    plt.cla()
    plt.plot(x_vals, y_vals)


ani = FuncAnimation(plt.gcf(), animate, interval = 200)

plt.tight_layout()
plt.show()

ws = websocket.WebSocketApp(SOCKET, on_open=on_open, on_close=on_close, on_message=on_message)
ws.run_forever()
EN

回答 1

Stack Overflow用户

发布于 2021-03-28 05:21:13

plt.show()ws.run_forever()都会阻塞程序的执行。根据之前执行的指令,代码要么绘制一个空图像(执行停止,直到您关闭绘图窗口),要么开始从套接字获取数据,但永远不会执行绘图指令。

在本例中,为了避免程序在plt.show()处停止,您可以使用plt.show(block=False)作为推荐的here

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66833880

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档