You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 01:45:03