量化交易:websocket获取行情数据并加以利用
上次只写了获取行情数据,这次继续完善如何简单利用获取的行情数据加入策略中。先说一下思路,websocket的相关代码写入单独一个py文件中的类里面,策略模块通过回调获取相关的行情数据并加以利用。但但但有个问题是,如果仅通过回调的话,策略模块只能一并写入到这个回调函数中,如果是简单策略,没有问题,但较复杂一些的策略,,,,请大家自己脑补吧。
所以引入了线程和队列来解决这个问题,回调得到的行情数据写入队列中,确切说是写入了栈中(先进后出),如此,单独线程运行的策略模块需要行情数据只需要从栈中get()就可以了。
直接上代码,火币的websocket不需要科学上网,所以方便调试,这里以order_book 5档数据示例。
1、py文件一:huobiwss.py
# -*- coding:utf-8 -*-
from websocket import WebSocketApp
'''websocket-client 0.5.7版本'''
from threading import Thread
import json
import zlib
class MARKETWEBSOCKET:
def __init__(self,callback=None):
super(MARKETWEBSOCKET, self).__init__()
self.url = "wss://api.hadax.com/ws"
self.ws = None
self.result = None
self.callback = callback
# self.callback_fun = callback_fun
def on_message(self, message):
# print("回调on_message")
msg = json.loads(zlib.decompress(message, 31))
# print(msg)
if 'ping' in msg:
# print(msg)
self.ws.send(json.dumps(