K 线技术分析是股票投资中很常用的一种分析方法,主要通过历史价格图表中的数据来预测未来市场趋势。一根 K 线包括四个价格:开盘价、收盘价、最高价和最低价,通常简称为 OHLC。K 线按照周期一般可以分为日、周、月、年,以及五分钟、30分钟等类型。
用历史数据计算 K 线
在用全量历史数据批量计算 K 线时,通常会需要考虑以下几种场景:
指定窗口起始时间
重叠窗口
使用交易量划分窗口
极大数据量的高效读写
下面给大家逐一展示一下如何用 DolphinDB 轻松实现这几类 K 线计算。
不指定 K 线窗口的起始时刻
计算5分钟 K 线只需2行代码:
barMinutes = 5OHLC = select first(price) as open, max(price) as high, min(price) as low, last(price) as close, sum(volume) as volume from trade group by symbol, date, bar(time, barMinutes*60*1000) as barStart
指定 K 线窗口的起始时刻
barMinutes = 7sessionsStart=09:30:00.000 13:00:00.000OHLC = select first(price) as open, max(price) as high, min(price) as low, last(price) as close, sum(volume) as volume from trade group by symbol, dailyAlignedBar(timestamp, sessionsStart, barMinutes*60*1000) as barStart
barMinutes = 7sessionsStart = [daySession[0], nightSession[0]]OHLC = select first(price) as open, max(price) as high, min(price) as low, last(price) as close, sum(volume) as volume from trade group by symbol, dailyAlignedBar(timestamp, sessionsStart, barMinutes*60*1000) as barStart
重叠 K 线窗口
每日两个交易时段,每5分钟计算30分钟K线。
首先生成窗口,并且使用 cj 函数来生成股票和交易窗口的组合。
barWindows = table(symbols as symbol).cj(table((09:30:00.000 + 0..23 * 300000).join(13:00:00.000 + 0..23 * 300000) as time))
OHLC = wj(barWindows, trade, 0:(30*60*1000),<[first(price) as open, max(price) as high, min(price) as low, last(price) as close, sum(volume) as volume]>, `symbol`time)
使用交易量划分K线窗口
n = 1000000sampleDate = 2019.11.07symbols = `600519`000001`600000`601766trade = table(take(sampleDate, n) as date,(09:30:00.000 + rand(7200000, n/2)).sort!() join (13:00:00.000 + rand(7200000, n/2)).sort!() as time,rand(symbols, n) as symbol,100+cumsum(rand(0.02, n)-0.01) as price,rand(1000, n) as volume)volThreshold = 1000000t = select first(time) as barStart, first(price) as open, max(price) as high, min(price) as low, last(price) as close, last(cumvol) as cumvolfrom (select symbol, time, price, cumsum(volume) as cumvol from trade context by symbol)group by symbol, bar(cumvol, volThreshold) as volBar
使用MapReduce函数加速
实时 K 线计算

DolphinDB 提供了强大的流计算引擎,可以通过如下图所示的流程实现实时 K 线计算:

实时数据供应商一般会提供基于Python、Java或其他常用语言的 API 的数据订阅服务。
| Symbol | Datetime | Price | Volume |
| 000001 | 2018.09.03T09:30:06 | 10.13 | 4500 |
使用 Python 接收实时数据,并写入 DolphinDB 流数据表 使用移动窗口实时计算指标 在 Python/Grafana 中实时展示 K 线数据
Explore More



文章转载自DolphinDB智臾科技,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。





