同花顺Python策略编辑器帮助文档

同花顺Python策略编辑器帮助文档


如何获取K线(周期)数据

<h4><strong>简要说明</strong></h4> <ul> <li>和获取分时行情数据类似,获取周期(K线)行情数据主要有两种方式: 1.使用ths_api包中提供的get_kline函数:直接主动获取某股票的周期行情数据; 2.使用ths_api包中提供的reg_kline函数:订阅某股票的周期行情数据后,每次行情数据有更新后,由行情服务器自动推送更新的数据,程序被动接收。</li> </ul> <hr /> <h4><strong>1.用get_kline获取一次指定代码列表的周期行情数据</strong></h4> <p><strong>调用格式</strong></p> <pre><code>get_kline(StockCode, duration_minute, length) ''' @brief 获取一次指定代码列表的周期行情数据,包括分钟线(1、5、15、30、60)、日线、周线、月线、季度线、年线,2s内只能执行1次 @param StockCode 证券代码列表,支持str、list、set格式,一次最多取500个 @param duration_minute 周期,以分钟为步长,支持int,入参为:1=》1分钟线、5、15、30、60、1440=》日线(24*60)、10080=》周线(7*24*60)、43200=》月线、129600=》季度线、525600=》年线 @param length 数据条数,最大1w条,比如 duration_minute=1 length=5表示从当前开始取一分钟线,取5条数据 @return 周期行情数据结构dict,格式和reg_kline返回一致,时间越以前的数据,排在dict的越前面。 '''</code></pre> <p><strong>示例代码</strong></p> <pre><code>#!/usr/bin/env python # -*- coding: utf-8 -*- #例1:每10s获取一次日线周期的最近两条K线行情数据,如果今日的收盘价(盘中为现价)较昨日的收盘价下跌3%,卖出该股的一半仓位。 from ths_api import * import time code = '300033' api = hq.ths_hq_api() #连接行情服务器 while True: time.sleep( 10 ) #等待10s kline = api.get_kline(code, 60*24, 2) #获取最近两日(包含今日)的日线周期K线行情数据 print(kline) print('昨日收盘价:', kline[code][-2]['close']) #时间越早的数据在kline中排在越前 if kline[code][-1]['close'] &lt; kline[code][-2]['close'] * 0.97: xd.cmd('sell %s zxjg -cw 1/2' % code) break</code></pre> <p><strong>运行结果</strong></p> <p>去除部分日志后,程序输出结果如下(其中,为了便于阅读,kline各字段的输出用json格式做了替换)。可见,当前现价较昨日收盘价下跌超过3%,委托提交。</p> <pre><code>{ "300033": [ { "StockCode": "300033", # 股票代码 "datetime": 20191016, # 日期 "Index": 0, # 第几条周期数据 "amount": 860746280.0, # 成交金额 "volume": 8575647.0, # 成交量 "open": 100.5, # 开盘价 "high": 101.86, # 最高价 "low": 99.13, # 最低价 "MarketId": "33", # 市场ID "close": 99.2 # 收盘价 }, { "StockCode": "300033", "datetime": 20191017, "Index": 1, "amount": 538748140.0, "volume": 5400459.0, "open": 99.8, "high": 100.12, "low": 97.32, "MarketId": "33", "close": 97.47 } ] } 昨日收盘价: 97.47 tips=您的卖出委托已成功提交,合同编号:1281337942。</code></pre> <hr /> <h4><strong>2.用reg_kline订阅指定代码列表的周期数据:</strong></h4> <p><strong>调用格式</strong></p> <pre><code>reg_kline(StockCode, duration_minute, length) ''' @param StockCode 证券代码列表,支持str、list、set格式,一次最多取500个 @param duration_minute 周期,以分钟为步长,支持int,入参为:1=》1分钟线、5、15、30、60、1440=》日线(24*60)、10080=》周线(7*24*60)、43200=》月线、129600=》季度线、525600=》年线 @param length 时长,对应需要多少条数据,比如 duration_minute=1 length=5表示从当前开始取一分钟线,取5条数据 @return 返回实时行情数据结构引用,是个dict,格式参考get_kline的返回,其内容在wait_update后更新 '''</code></pre> <p><strong>示例代码</strong></p> <pre><code>#!/usr/bin/env python # -*- coding: utf-8 -*- #例2:行情每次更新时,服务器推送一次日线周期的最近两条K线行情数据,如果今日的收盘价(盘中为现价)较昨日的收盘价下跌3%,卖出该股的一半仓位。 from ths_api import * import time code = '300033' api = hq.ths_hq_api() #连接行情服务器 kline = api.reg_kline(code, 60*24, 2) #订阅最近两日(包含今日)的日线周期K线行情数据 while True: api.wait_update() #等待行情数据更新 print(kline) print('昨日收盘价:', kline[code][-2]['close']) #时间越早的数据在kline中排在越前 if kline[code][-1]['close'] &lt; kline[code][-2]['close'] * 0.97: xd.cmd('sell %s zxjg -cw 1/2' % code) break</code></pre> <p><strong>运行结果</strong></p> <p>程序运行结果和例1类似。程序的区别是本例先订阅300033最近两日的日线周期K线行情数据,当有行情数据更新时,服务器推送一次订阅数据的最新值,赋值给kline。</p>

页面列表

ITEM_HTML