如何获取分时行情信息
<h4><strong>简要说明</strong></h4>
<ul>
<li>获取分时行情信息主要有两种方式:
1.使用ths_api包中提供的get_quote函数:直接主动获取某股票的分时行情数据;
2.使用ths_api包中提供的reg_quote函数:订阅某股票的分时行情数据后,每次行情数据有更新后,由行情服务器自动推送更新的数据,程序被动接收。</li>
</ul>
<hr />
<h4><strong>1.用get_quote获取指定代码列表的最新分时行情数据</strong></h4>
<p><strong>调用格式</strong></p>
<pre><code>get_quote(StockCode)
'''
@param StockCode 证券代码列表,支持str、list、set格式,一次最多500个代码,2s内只能执行1次。
@return 分时行情数据结构dict,格式和reg_quote的返回一致
@example
from ths_api import *
api = hq.ths_hq_api()
quote = api.get_quote('300033')
#quote = api.get_quote('300033, 600000')
#quote = api.get_quote(['300033', '600000', '000001'])
#quote = api.get_quote(('300033', '600000', '000001', '000725'))
print(quote)
#print(quote['300033']['price']) # 打印现价
'''</code></pre>
<p><strong>示例代码</strong></p>
<pre><code>#!/usr/bin/env python
# -*- coding: utf-8 -*-
#例1:用get_quote获取一次某持仓股的最新分时行情数据,计算当前该股持仓市值:
from ths_api import *
code = '300033'
api = hq.ths_hq_api() #连接行情服务器
quote = api.get_quote(code) #获取一次股票的最新分时行情数据
print('分时行情数据各字段:', '\n', quote)
price = quote[code]['price'] #获取该股票最新分时行情数据中的现价字段
print('最新的分时行情现价:', price)
sjsl = xd.g_position[code]['sjsl'] #获取该持仓股的持仓实际数量
dqsz = sjsl*price
print('300033持仓实际数量:', sjsl, '\n', '300033当前持仓市值:', dqsz)</code></pre>
<p><strong>运行结果</strong></p>
<p>程序输出如下。其中,为了便于阅读,分时行情数据各字段的输出用json格式做了替换。</p>
<pre><code>分时行情数据各字段:
{
'300033': {
'StockCode': '300033', # 股票代码
'MarketId': '33', # 市场ID
'open': 86.38, # 今日开盘价
'high': 87.58, # 今日最高价
'low': 83.3, # 今日最低价
'pre_close': 86.59, # 昨日收盘价
'price': 83.43, # 现价
'b1_p': 83.42, # 买一价
'b1_v': 25100.0, # 买一量
'b2_p': 83.41, # 买二价
'b2_v': 5000.0, # 买二量
'b3_p': 83.4, # 买三价
'b3_v': 13800.0, # 买三量
'b4_p': 83.39, # 买四价
'b4_v': 7600.0, # 买四量
'b5_p': 83.38, # 买五价
'b5_v': 10450.0, # 买五量
'a1_p': 83.43, # 卖一价
'a1_v': 8700.0, # 卖一量
'a2_p': 83.44, # 卖二价
'a2_v': 2300.0, # 卖二量
'a3_v': 2188.0, # 卖三量
'a3_p': 83.45, # 卖三价
'a4_p': 83.46, # 卖四价
'a4_v': 7300.0, # 卖四量
'a5_p': 83.47, # 卖五价
'a5_v': 100.0, # 卖五量
'zt_p': 95.25, # 涨停价
'dt_p': 77.93, # 跌停价
'ask': 83.42, # 买一价
'bid': 83.43, # 卖一价
'zf': -0.036494, # 涨幅
'zs': 0.0, # 涨速(5min涨跌幅)
'zd': -0.0316, # 涨跌
'zsz': 44851968000.0, # 总市值
'zgb': 537600000.0, # 总股本
'syl_j': 70.7518, # 市盈率-静
'syl_d': 111.6941 # 市盈率-动
'ltz': 22050745000.0, # 流通值
'ltg': 264302350.0, # 流通股
'amount': 721906670.0 # 成交金额
'amount_count': 25527.0, # 成交次数
'volume': 8486188.0, # 成交量
'wpcjl': 3649478.0, # 外盘成交量
'npcjl': 4265493.0, # 内盘成交量
'np': 4836710.0, # 内盘
'lb': 0.74, # 量比
'hs': 0.032108, # 换手
'DDE': -0.2533, # 大单净量
'WAITBUYCOUNT2': 919656.0, # 被动买入大单量
'BIGSELLMONEY3': 150231130.0, # 主动卖出中单金额
'WAITBUYMONEY3': 134996420.0, # 被动买入中单金额
'WAITBUYMONEY2': 78239066.0, # 被动买入大单金额
'WAITSELLMONEY2': 62990306.0, # 被动卖出大单金额
'WAITBUYCOUNT3': 1587830.0, # 被动买入中单量
'BIGBUYCOUNT1': 503507.0, # 主动买入特大单量
'BIGBUYMONEY2': 49370877.0, # 主动买入大单金额
'BIGBUYMONEY1': 42944626.0, # 主动买入特大单金额
'WAITBUYCOUNT1': 897308.0, # 被动买入特大单量
'BIGSELLMONEY4': 91823222.0, # 主动卖出小单金额
'WAITSELLCOUNT2': 741336.0, # 被动卖出大单量
'BIGBUYCOUNT2': 579857.0, # 主动买入大单量
'WAITBUYMONEY1': 76418034.0, # 被动买入特大单金额
'BIGBUYMONEY3': 101441444.0, # 主动买入中单金额
'BIGBUYCOUNT4': 1224179.0, # 主动买入小单量
'BIGSELLCOUNT3': 1764849.0, # 主动卖出中单量
'BIGSELLMONEY1': 94519539.0, # 主动卖出特大单金额
'BIGBUYMONEY4': 104114862.0, # 主动买入小单金额
'WAITSELLMONEY1': 58133983.0, # 被动卖出特大单金额
'BIGSELLCOUNT2': 1028392.0, # 主动卖出大单量
'WAITSELLCOUNT3': 1237623.0, # 被动卖出中单量
'BIGSELLCOUNT4': 1077249.0, # 主动卖出小单量
'WAITSELLCOUNT1': 684108.0, # 被动卖出特大单量
'BIGSELLCOUNT1': 1116038.0, # 主动卖出特大单量
'WAITSELLMONEY3': 105412918.0, # 被动卖出中单金额
'BIGSELLMONEY2': 87460998.0, # 主动卖出大单金额
'BIGBUYCOUNT3': 1192117.0, # 主动买入中单量
'bdzs': 'E0 ', # 标的指数或股票代码
}
}
最新的分时行情现价: 83.43
300033持仓实际数量: 1000
300033当前持仓市值: 83430.0
</code></pre>
<hr />
<h4><strong>2.用reg_quote订阅指定代码列表的分时行情数据</strong></h4>
<p><strong>调用格式</strong></p>
<pre><code>reg_quote(StockCode)
'''
@param StockCode 证券代码列表,支持str、list、set格式,最多订阅500个
@return 返回实时行情数据结构引用,是个dict,格式参考下例的输出,其内容在wait_update后更新
'''</code></pre>
<p><strong>示例代码</strong></p>
<pre><code>#!/usr/bin/env python
# -*- coding: utf-8 -*-
#例2:用reg_quote订阅某股票的分时行情数据,当分时行情有更新时,获取服务器推送的新数据,并判断当现价大于15.31时,以现价买入000001平安银行1000股:
from ths_api import *
code = '000001'
api = hq.ths_hq_api()
quote = api.reg_quote(code) #订阅分时行情数据
while True:
api.wait_update() #等待订阅数据更新
price = quote[code]['price'] #获取code的最近一个分时行情数据的现价
if price >= 15.31:
xd.cmd('buy %s zxjg 1000' % code)
break
</code></pre>
<p>程序用reg_quote函数订阅股票的分时行情数据,并通过在循环中使用wait_update,每次该股票有行情更新后,将最新的行情数据赋值给quote。(盘后调用该函数,也需要有wait_update语句,才能获取到盘尾的最后一个分时行情数据。)之后对价格进行判断,满足条件时执行委托,结束循环。</p>
<p><strong>运行结果</strong></p>
<p>程序输出如下(已去除部分行情更新日志)</p>
<pre><code>tips=send buy code:000001 price:15.59 amount:1000
tips=您的买入委托已成功提交,合同编号:1277636241。</code></pre>