Oracle SQL/PL/SQL 如何识别涨跌趋势末端K线形态并设置标记列
本问题及相关回答仅用于教育学习目的。
本问题与我此前发布的帖子内容差异较大,不属于重复提问。为避免混淆,根据@MT0的建议,我将其作为新问题发布在此处。
数据表结构
我有如下每日更新的股票数据表:
/* CREATE TABLE */ CREATE TABLE RAW_SOURCE( Stock VARCHAR(100), Close_Date DATE, Open NUMBER, High NUMBER, Low NUMBER, Close NUMBER, Volume NUMBER ); /* INSERT QUERY NO: 1 */ INSERT INTO RAW_SOURCE(Stock, Close_Date, Open, High, Low, Close, Volume) VALUES ( 'XYZ', '01/01/2021', 40, 40.5, 38.5, 38.8, 83057 ); /* 其余INSERT语句与原代码一致,此处省略展示所有插入数据,可参考原样例 */
样例数据
以下是股票「XYZ」的样例数据:
+-------+------------+-------+------+------+-------+--------+ | Stock | Close Date | Open | High | Low | Close | Volume | +-------+------------+-------+------+------+-------+--------+ | XYZ | 01-01-2021 | 40 | 40.5 | 38.5 | 38.8 | 83057 | /* 其余样例数据与原数据一致 */ +-------+------------+-------+------+------+-------+--------+
需求说明
随着数据积累,单只股票的记录会达到数千条,我需要仅识别上涨趋势顶部或下跌趋势底部的K线形态,排除横盘阶段的误识别结果。
假设当前日期为2021年1月12日,预期输出如下:
+-------+-------------------+------------+------------+--------------+--------+---------------+ | Stock | Consecutive Count | Start Date | End Date | Latest Close | Volume | Pattern | +-------+-------------------+------------+------------+--------------+--------+---------------+ | XYZ | 3 | 09-01-2021 | 12-01-2021 | 37.8 | 281461 | Piercing Line | +-------+-------------------+------------+------------+--------------+--------+---------------+
源表包含多只股票数据,需要返回2021年1月12日所有符合识别条件的股票结果。我认为该逻辑实现复杂度较高,在此寻求解决方案,感谢帮助。
K线形态计算规则
更新:感谢@JustinCave,以下是K线形态的计算规则:
- 看涨吞没(Bullish Engulfing)
O1 > C1 and C > O and C > H1 and O < L1 where, O1 = 前一交易日开盘价 C1 = 前一交易日收盘价 C = 当日收盘价 O = 当日开盘价 H1 = 前一交易日最高价 L1 = 前一交易日最低价
- 看跌孕线(Bearish Harami)
(O1 < C1) and (O > C) and (O < C1) and (C > O1) and (H < H1) and (L > L1) where, O1 = 前一交易日开盘价 C1 = 前一交易日收盘价 C = 当日收盘价 O = 当日开盘价 H1 = 前一交易日最高价 L1 = 前一交易日最低价 H = 当日最高价 L = 当日最低价
- 刺透形态(Piercing Line)
(O < C) and (O1 > C1) and (C > (C1 + O1)/2) and (O < C1) and (C < O1) where, O1 = 前一交易日开盘价 C1 = 前一交易日收盘价 C = 当日收盘价 O = 当日开盘价
内容的提问来源于stack exchange,提问作者Richa
相关产品推荐
相关产品推荐

