什么是L2行情接口?
相信大家對股市都不陌生,甚至什么是L2,可能大家都略有了解,但是說到L2行情接口可能大家就會覺得一頭霧水,今日我們就來說說什么是L2行情接口,以及L2行情接口的優勢。
首先,L2就是level 2,Level-2產品是由上海證券交易所推出的實時行情信息收費服務,主要提供在上海證券交易所上市交易的證券產品的實時交易數據。包括level2十檔行情,買賣隊列,逐筆成交,委托總量和加權價格等多種新式數據。使用Level-2軟件的股民,在開盤時間內,可以隨時看到莊家、散戶買賣股票的情況。而L2行情接口就是指通過接口功能直接獲得行情數據,并利用數據進行股票交易策略。
L2行情接口有什么優勢?
回到正題,那到底L2行情接口有什么優勢呢?一般來講,L2行情接口其實是用于股票量化交易的工具之一,一般投資者最多只能看到10檔買賣行情,但是只有這么少的數據,我們是很難進行買賣決策的,必須拿到更多的數據才能做出比較準確的判斷,而L2行情接口就可以幫到我們了。換句話來說,L2行情接口就是為了幫助我們更好完成股票交易的一個工具。
說了這么多,相信大家對于L2行情接口多少也有了解了,如果再深入點說,L2行情接口還會根據不同的編程方式,適用的人群也不會一樣,如果大家有興趣,以后再跟大家詳細講解,今日就先說這么多,大家先好好消化一下吧。不懂的也可以找我聊聊
1.下載行情工具
https://gitee.com/l2gogogo/l2-push-python/tree/master/cli
2.目錄說明
名稱 說明
conf 配置目錄
data 數據目錄
log 日志目錄
txtool 命令行工具-Linux
txtool.exe 命令行工具-Windows
3.行情工具常用命令
命令 說明
txtool -h 查看幫助
txtool version 查看工具版本號
txtool proxy 啟動本地代理服務器。默認命令,Windows可直接雙擊執行
4.接入說明
1.下載行情工具,修改conf/proxy.toml
1.設置用戶名和密碼:User/Passwd
2.設置推送服務器地址:RpcServer/TcpServer
2.打開命令窗口,切換到cli目錄,執行命令啟動本地代理服務器
1.Linux系統執行:txtool proxy
2.Windows系統執行:txtool.exe proxy
3.如果提示本機端口已占用,可修改配置項Address(代理服務器監聽地址)
3.啟動成功,調用代理服務器提供的GRPC接口
1.接口地址見配置項Address,默認為:localhost:8090
2.接口定義,見目錄proto
4.代理服務器配置
1.proxy.toml 配置代理服務器監聽地址,是否將推送消息寫入本地文件等
2.log.toml 配置日志格式,是否寫入控制臺和文件等
Level2行情接口
l接口定義,見目錄proto
訂閱事件
get_subscription查詢訂閱
add_subscription新增訂閱
del_subscription取消訂閱
數據推送事件
tick_record_stream 推送逐筆成交行情數據
order_record_stream 推送逐筆委托行情數據
order_queue_record_stream推送委托隊列行情數據
stock_quote_record_stream 推送股票十檔行情行情數據
代碼示例
# -*- coding: utf-8 -*-
# 此Demo只是演示接入過程
import grpc
import entity_pb2
import proxy_pb2_grpc
import threading
from multiprocessing import Process
# 代理服務器監聽的地址和端口
ServerConnect = grpc.insecure_channel('localhost:5000')
Stub = proxy_pb2_grpc.ProxyStub(ServerConnect)
# 查詢訂閱
def get_subscription():
? ? # rep返回code為1代表成功,其余狀態碼可參考接入文檔,data是返回訂閱股票的情況
? ? Result = Stub.GetSubscription(entity_pb2.Void())
? ? print(Result)
# 新增訂閱
def add_subscription():
? ? # 實例ProtoBuf協議的方法
? ? String = entity_pb2.String()
? ? # 修改協議的值
? ? # 2:市場代碼標識(1為上海證券,2為深圳證券)
? ? # 000002:股票代碼
? ? # 15:訂閱全部標識(1為逐筆成交,2為逐筆委托,4為委托隊列,8為股票十檔行情,如果想全部訂閱可直接填入15,原理是1+2+4+8,如果想訂閱某幾個行情將幾個行情標識相加即可)
? ? String.value = '2_000002_15'
? ? # String.value = '2_000001_15,2_000002_5,2_000003_12,批量訂閱'
? ? # rep返回code為1代表成功,其余狀態碼可參考接入文檔
? ? Result = Stub.AddSubscription(String)
? ? print(Result)
# 取消訂閱
def del_subscription():
? ? # 實例ProtoBuf協議的方法
? ? String = entity_pb2.String()
? ? # 修改協議的值
? ? # 2:市場代碼標識(1為上海證券,2為深圳證券)
? ? # 000002:股票代碼
? ? # 15:取消全部標識(1為逐筆成交,2為逐筆委托,4為委托隊列,8為股票十檔行情,如果想全部取消可直接填入15,原理是1+2+4+8,如果想取消某幾個行情將幾個行情標識相加即可)
? ? String.value = '2_000002_15'
? ? # String.value = '2_000001_15,2_000002_5,2_000003_12,批量取消'
? ? # rep返回code為1代表成功,其余狀態碼可參考接入文檔
? ? Result = Stub.DelSubscription(String)
? ? print(Result)
# 推送逐筆成交行情數據
def tick_record_stream():
? ? StreamResult = Stub.NewTickRecordStream(entity_pb2.Void())
? ? # 用For循環就可以不斷消費數據
? ? for Result in StreamResult:
? ? ? ? print(Result)
# 推送逐筆委托行情數據
def order_record_stream():
? ? StreamResult = Stub.NewOrderRecordStream(entity_pb2.Void())
? ? # 用For循環就可以不斷消費數據
? ? for Result in StreamResult:
? ? ? ? print(Result)
# 推送委托隊列行情數據
def order_queue_record_stream():
? ? StreamResult = Stub.NewOrderQueueRecordStream(entity_pb2.Void())
? ? # 用For循環就可以不斷消費數據
? ? for Result in StreamResult:
? ? ? ? print(Result)
# 推送股票十檔行情行情數據
def stock_quote_record_stream():
? ? StreamResult = Stub.NewStockQuoteRecordStream(entity_pb2.Void())
? ? # 用For循環就可以不斷消費數據
? ? for Result in StreamResult:
? ? ? ? print(Result)
if __name__ == '__main__':
? ? # 可以使用多線程并發接收推送數據
? ? ThreadOne = threading.Thread(target=tick_record_stream)
? ? ThreadTwo = threading.Thread(target=order_record_stream)
? ? ThreadThree = threading.Thread(target=order_queue_record_stream)
? ? ThreadFour = threading.Thread(target=stock_quote_record_stream)
? ? # 多進程并發接收推送數據
? ? # ProcessOne = Process(target=tick_record_stream)
? ? # ProcessTwo = Process(target=order_record_stream)
? ? # ProcessThree = Process(target=order_queue_record_stream)
? ? # ProcessFour = Process(target=stock_quote_record_stream)
? ? # 這設置為隨主線程退出子線程,避免產生孤兒或僵尸線程
? ? ThreadOne.daemon = True
? ? ThreadTwo.daemon = True
? ? ThreadThree.daemon = True
? ? ThreadFour.daemon = True
? ? # ProcessOne.daemon = True
? ? # ProcessTwo.daemon = True
? ? # ProcessThree.daemon = True
? ? # ProcessFour.daemon = True
? ? # 有一點值得注意一下,假如訂閱的股票相對活躍,推送的數據就不會有休眠的狀態出現,因為Python的GIL鎖,所以用多線程接收推送效率不顯著,這個時候可以考慮用多進程來接收推送
? ? ThreadOne.start()
? ? ThreadTwo.start()
? ? ThreadThree.start()
? ? ThreadFour.start()
? ? # ProcessOne.start()
? ? # ProcessTwo.start()
? ? # ProcessThree.start()
? ? # ProcessFour.start()
? ? ThreadOne.join()
? ? ThreadTwo.join()
? ? ThreadThree.join()
? ? ThreadFour.join()
? ? # ProcessOne.join()
? ? # ProcessTwo.join()
? ? # ProcessThree.join()
? ? # ProcessFour.join()
總結
以上是生活随笔為你收集整理的什么是L2行情接口?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Starling MovieClip A
- 下一篇: 投票系统C语言程序,C语言课程投票程序系