From 56f0db7844d7de75ae5dfde13a067b60f2516ae9 Mon Sep 17 00:00:00 2001 From: Lxy Date: Mon, 9 Mar 2026 01:09:26 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=88=9D=E5=A7=8B=E5=8C=96=EF=BC=8C?= =?UTF-8?q?=E5=B9=B6=E5=A2=9E=E5=8A=A0=E5=88=86=E6=9E=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 14 + futures-technical-analysis/SKILL.md | 307 ++ .../data/688385_20260309_005629.json | 2616 +++++++++++++++++ .../futures-technical-analysis.tar.gz | Bin 0 -> 31786 bytes .../futures_data_collector.py | 681 +++++ .../references/kline-data-example.json | 73 + ...技术分析实战手册(整合版).md | 675 +++++ 7 files changed, 4366 insertions(+) create mode 100644 README.md create mode 100644 futures-technical-analysis/SKILL.md create mode 100644 futures-technical-analysis/data/688385_20260309_005629.json create mode 100644 futures-technical-analysis/futures-technical-analysis.tar.gz create mode 100644 futures-technical-analysis/futures_data_collector.py create mode 100644 futures-technical-analysis/references/kline-data-example.json create mode 100644 futures-technical-analysis/references/期货交易技术分析实战手册(整合版).md diff --git a/README.md b/README.md new file mode 100644 index 0000000..96c0b2c --- /dev/null +++ b/README.md @@ -0,0 +1,14 @@ +# claw skills合集 + +## futures-technical-analysis + +获取多周期数据并进行分析 + +### 使用示例 + +- 分析一下Au2604 -- 期货 +- 分析一下000001 -- 股票 +- 上传数据(json),分析一下xxxx + + + diff --git a/futures-technical-analysis/SKILL.md b/futures-technical-analysis/SKILL.md new file mode 100644 index 0000000..dab429d --- /dev/null +++ b/futures-technical-analysis/SKILL.md @@ -0,0 +1,307 @@ +--- +name: futures-technical-analysis +description: 期货和股票技术分析实战分析工具。提供支撑阻力、止跌反弹、多周期共振、滞涨回调、多空分歧五大核心主题的判断方法与实操Checklist。支持两种数据输入模式:(1)自动获取 - 当用户提供合约代码(如SN2504)或股票代码(如000001)时,自动调用数据获取脚本获取多周期K线数据;(2)手动提供 - 用户直接提供JSON格式K线数据。自动分析各周期多空情况、关键点位、交易建议及预案。适用于期货日内/波段交易分析、股票技术分析、趋势识别、关键位验证、交易决策支持。当用户需要期货/股票技术分析指导、交易策略制定、市场结构判断、多周期共振验证、支撑阻力有效性确认时使用本Skill。 +--- + +# 期货技术分析实战分析 + +本Skill提供完整的期货交易技术分析框架,涵盖五大核心主题: + +## 核心功能 + +1. **支撑/阻力有效性判断** - 五维度验证法(测试次数、成交量、周期共振、基本面、突破后表现) +2. **止跌与反弹鉴别** - 四大维度确认止跌,区分下跌中继与反转趋势 +3. **多周期共振交易法** - 60分钟定趋势→30分钟找拐点→15分钟择入场 +4. **滞涨与回调性质区分** - 洗盘vs反转的多周期共振判断 +5. **多空分歧识别** - 五维度识别分歧强度,预判趋势转折 +6. **JSON数据自动分析** - 接收多周期K线JSON数据,输出完整分析报告 + +## 使用方法 + +### 分析流程 + +当用户需要进行期货或股票技术分析时,按以下步骤执行: + +1. **判断数据来源** - 检查用户是否提供了JSON格式的K线数据 + - **情况A:未提供JSON数据** → 执行[数据获取流程](#数据获取流程) + - **情况B:已提供JSON数据** → 直接执行[JSON数据分析](#json数据输入分析) +2. **明确分析目标** - 确定是判断支撑阻力、分析止跌反弹、还是识别多空分歧 +3. **查阅参考手册** - 阅读 `references/期货交易技术分析实战手册(整合版).md` 获取完整方法论 +4. **使用Checklist** - 根据具体场景选用对应的Checklist进行逐项核查 +5. **给出判断结论** - 基于核查结果给出明确的交易建议 + +### 数据获取流程(当用户未提供JSON数据时) + +当用户询问"分析一下XX合约"或"分析一下XX股票"但未附带JSON数据时: + +#### 步骤1:识别代码类型 +从用户输入中提取合约/股票代码,判断类型: +- **期货合约**:格式为品种代码+年份+月份,如 `SN2504`(沪锡)、`AG2506`(沪银)、`LC2505`(碳酸锂) +- **股票代码**:6位数字,如 `000001`(平安银行)、`600000`(浦发银行) + +#### 步骤2:调用数据获取脚本 +使用 skill 目录下的 `futures_data_collector.py` 脚本获取数据: + +```bash +# 期货数据获取 +python futures_data_collector.py --symbol <合约代码> --type futures + +# 股票数据获取 +python futures_data_collector.py --symbol <股票代码> --type stock +``` + +#### 步骤3:检查数据获取结果 +- 如果脚本执行成功,会返回多周期K线数据(5min/15min/30min/60min/daily) +- 如果执行失败(如合约代码错误、数据源异常),向用户说明情况并请求提供JSON数据 + +#### 步骤4:将获取的数据传入分析流程 +脚本输出的JSON数据格式与[JSON数据输入分析](#json数据输入分析)章节定义的格式一致,直接传入后续分析步骤。 + +### 场景指导 + +| 用户场景 | 分析方法 | 关键Checklist | 数据来源 | +|---------|---------|--------------|---------| +| "分析一下SN2504"(无JSON) | 先调用脚本获取数据 → 多周期自动分析 | 完整分析报告输出 | 自动获取 | +| "分析一下000001股票"(无JSON) | 先调用脚本获取数据 → 多周期自动分析 | 完整分析报告输出 | 自动获取 | +| "这个位置是支撑还是阻力?" | 支撑阻力五维度判断法 | 支撑/阻力有效性Checklist | 用户提供 | +| "可以抄底了吗?" | 止跌四大维度判断+反弹性质鉴别 | 止跌确认Checklist + 反弹性质判断Checklist | 用户提供 | +| "现在可以入场吗?" | 多周期共振交易法 | 多周期共振入场Checklist | 用户提供 | +| "这是洗盘还是真跌?" | 滞涨回调多周期共振判断 | 滞涨判断Checklist | 用户提供 | +| "多空分歧大吗?" | 多空分歧五维度识别 | 多空分歧识别Checklist | 用户提供 | +| **提供JSON数据进行分析** | **多周期自动分析+关键位计算+预案生成** | **完整分析报告输出** | **用户提供** | + +--- + +## JSON数据输入分析 + +当用户未提供JSON数据时,先调用 `futures_data_collector.py` 脚本获取数据;当用户已提供JSON格式的多周期K线数据时,直接执行完整的技术分析流程。 + +### 脚本自动获取数据说明 + +数据获取脚本 `futures_data_collector.py` 支持: +- **期货数据**:支持上海期货交易所、大连商品交易所、郑州商品交易所、广州期货交易所等主流品种 +- **股票数据**:支持A股所有个股 +- **多周期覆盖**:自动获取5min/15min/30min/60min/daily五个周期的K线数据 +- **技术指标计算**:每根K线自动计算MA10、MA20、MACD(DIF/DEA/Histogram) + +**常见期货合约代码示例**: +- `SN2504` - 沪锡2504合约(上海期货交易所) +- `AG2506` - 沪银2506合约(上海期货交易所) +- `LC2505` - 碳酸锂2505合约(广州期货交易所) +- `NI2505` - 沪镍2505合约(上海期货交易所) + +**常见股票代码示例**: +- `000001` - 平安银行 +- `600000` - 浦发银行 +- `000858` - 五粮液 +- `600519` - 贵州茅台 + +### 输入数据格式 + +用户提供或通过脚本获取的JSON数据结构: + +```json +{ + "symbol": "合约代码", + "current_price": 当前价格, + "timeframes": { + "60min": { + "trend": "up|down|sideways", + "ma10": 数值, + "ma20": 数值, + "macd_signal": "bullish|bearish|neutral", + "volume_trend": "increasing|decreasing|stable", + "support": 支撑位, + "resistance": 阻力位, + "candles": [ + {"time": "", "open": 0, "high": 0, "low": 0, "close": 0, "volume": 0} + ] + }, + "30min": { ... }, + "15min": { ... } + }, + "fundamentals": { + "recent_news": "近期消息", + "inventory_change": "库存变化", + "cost_support": 成本支撑价 + } +} +``` + +参考示例:`references/kline-data-example.json` + +### 分析输出格式 + +必须包含以下五个部分: + +#### 1. 各周期多空情况分析 + +| 周期 | 趋势方向 | 多空强度 | 关键信号 | 一致性检查 | +|------|---------|---------|---------|-----------| +| 60分钟 | 多/空/震荡 | 强/中/弱 | MA排列、MACD位置、量价关系 | - | +| 30分钟 | 多/空/震荡 | 强/中/弱 | 拐点信号、突破情况 | - | +| 15分钟 | 多/空/震荡 | 强/中/弱 | 入场信号、量能配合 | - | +| **周期共振** | **共振方向** | **共振强度** | **矛盾点(如有)** | **结论** | + +#### 2. 关键点位识别 + +``` +强阻力位(R2): xxx - 理由:... +第一阻力位(R1): xxx - 理由:... +枢轴点(PP): xxx - 计算:... +第一支撑位(S1): xxx - 理由:... +强支撑位(S2): xxx - 理由:... +``` + +**关键位有效性验证**(针对每个关键位): +- □ 测试次数≥3次 +- □ 量价配合良好 +- □ 多周期共振 +- □ 与基本面匹配 + +#### 3. 当前状态判断 + +使用Checklist逐项核查: + +| 检查项 | 结果 | 说明 | +|--------|------|------| +| 是否处于有效支撑/阻力区 | □ | 距离关键位xxx点 | +| 是否出现止跌/滞涨信号 | □ | 依据:... | +| 是否形成多周期共振 | □ | 共振方向:... | +| 多空分歧程度 | □ | 轻度/中度/重度 | +| 基本面配合度 | □ | 利好/利空/中性 | + +**综合判断**:□可入场 □观望 □减仓 □离场 + +#### 4. 交易建议 + +**当前建议**: +- **方向**:做多/做空/观望 +- **入场区间**:xxx - xxx +- **止损位**:xxx(入场价下方/上方x%) +- **第一止盈**:xxx(盈亏比1:2) +- **第二止盈**:xxx(关键阻力/支撑位) +- **建议仓位**:x%(基于风险评级) + +**风险评级**:□低风险 □中风险 □高风险 + +#### 5. 各种情况预案(基于真实市场情景) + +根据当前技术面状态,以下是可能发生的市场情景及概率估算: + +--- + +**情景一:趋势延续(顺势突破)** +- **概率**:35%-45% +- **触发条件**: + - 多周期共振方向一致(如60/30/15分钟均多头) + - 放量突破关键阻力/支撑,成交量较近期均值放大50%+ + - MACD柱状图同向放大,无背离信号 +- **走势描述**:价格沿当前趋势方向持续运行,回调幅度小(<20%),关键位转化为新支撑/阻力 +- **应对策略**: + - 已有持仓:持有,移动止损至成本价或前低/前高 + - 新开仓:突破确认后顺势追单,仓位减半,严格止损 +- **风险提示**:警惕"尾盘冲刺"式突破,夜盘22:00后假突破概率增加 + +--- + +**情景二:高位/低位震荡(多空拉锯)** +- **概率**:30%-40% +- **触发条件**: + - 周期信号矛盾(如60分钟多 vs 15分钟空) + - 价格在关键位附近反复测试,成交量萎缩 + - MACD在零轴附近徘徊,红柱/绿柱交替出现 +- **走势描述**:价格在R1-S1区间内来回波动,形成3-5根K线的整理平台,方向不明 +- **应对策略**: + - 区间上沿:减仓或试空,止损设区间外1% + - 区间下沿:低吸或试多,止损设区间外1% + - 区间中部:观望,等待方向突破 +- **风险提示**:震荡末期常伴随假突破诱多/诱空,需等待收盘确认 + +--- + +**情景三:假突破后反转(陷阱行情)** +- **概率**:15%-25% +- **触发条件**: + - 快速突破关键位但成交量不足(<近期均值1.2倍) + - 突破后1-2根K线内迅速回撤,收回关键位内 + - 长上影线/长下影线伴随缩量 +- **走势描述**:先冲高/冲低制造突破假象,随后快速反向运行,形成"多头陷阱"或"空头陷阱" +- **应对策略**: + - 追单被套:立即止损,不可补仓摊低成本 + - 未入场:反向做单,止损设假突破极值点 + - 观望者:等待价格回到区间中部再评估 +- **风险提示**:此类行情常在重大数据发布前出现,主力清洗浮筹 + +--- + +**情景四:突发消息驱动(黑天鹅/灰犀牛)** +- **概率**:5%-10% +- **触发条件**: + - 突发政策、地缘冲突、宏观数据(如非农数据、CPI) + - 价格瞬间跳空,跳过1-2个关键位 + - 成交量暴增3-5倍,但持续性不确定 +- **走势描述**: + - 利好:高开高走或高开低走(利好兑现) + - 利空:低开低走或低开高走(利空出尽) +- **应对策略**: + - 消息前5分钟:减仓50%,规避不确定性 + - 消息发布后15分钟内:不新开仓,观察价格对关键位的反应 + - 若价格站稳新关键位:跟随趋势,仓位减半 + - 若价格回到消息前区间:视为无效波动,观望 +- **风险提示**:消息市流动性骤降,点差扩大,止损可能无法成交在预设价位 + +--- + +**情景五:趋势衰竭/反转(拐点形成)** +- **概率**:5%-10% +- **触发条件**: + - 价格创新高/新低,但MACD出现顶/底背离 + - 成交量萎缩(<近期均值70%),量价背离 + - 长周期(60分钟)出现滞涨/止跌K线形态 +- **走势描述**: + - 上涨衰竭:最后冲刺后快速回落,跌破前低 + - 下跌衰竭:恐慌性抛盘后V型反转,突破前高 +- **应对策略**: + - 原有趋势持仓:逐步减仓,止盈位下移/上移 + - 反向开仓:等待60分钟确认信号,轻仓试单 + - 止损设置:新趋势确认前,止损位放宽至2-3% +- **风险提示**:拐点判断错误率较高,建议分2-3次建仓,首次仓位≤3% + +--- + +**概率使用说明**: +- 概率基于当前技术面统计,随价格运行动态变化 +- 当某情景概率>50%时,可作为主策略 +- 当两情景概率接近(如35% vs 40%)时,以观望或轻仓试错为主 +- 突发消息情景概率虽低,但影响最大,需始终预留仓位应对 + +--- + +## 参考资料 + +详细的分析方法、量化标准、对比表格、Checklist清单见: + +**[期货交易技术分析实战手册(整合版).md](references/期货交易技术分析实战手册(整合版).md)** + +包含内容: +- 五大核心原理解析 +- 五类实战判断方法 +- 六套实操Checklist(可直接打印使用) +- 交易决策流程图 +- 避坑要点汇总 +- 核心公式与参数附录 + +**[K线数据示例](references/kline-data-example.json)** - JSON数据格式参考 + +**[futures_data_collector.py](futures_data_collector.py)** - 数据自动获取脚本 +- 依赖:`pip install akshare pandas` +- 用法见脚本头部注释 + +## 输出格式(标准版) + +非JSON数据输入时的分析结果应包含: +1. **判断结论** - 明确的支撑/阻力、止跌/继续跌、洗盘/反转等结论 +2. **核查结果** - 各维度核查项达标情况 +3. **交易建议** - 具体的入场/离场/观望建议 +4. **风险提示** - 需注意的假信号、假突破等风险点 diff --git a/futures-technical-analysis/data/688385_20260309_005629.json b/futures-technical-analysis/data/688385_20260309_005629.json new file mode 100644 index 0000000..1a113dc --- /dev/null +++ b/futures-technical-analysis/data/688385_20260309_005629.json @@ -0,0 +1,2616 @@ +{ + "symbol": "688385", + "type": "stock", + "current_price": 79.87, + "timestamp": "2026-03-09T00:56:27+08:00", + "timeframes": { + "60min": [ + { + "time": "2026-02-10 14:00:00", + "open": 82.54, + "high": 83.34, + "low": 82.26, + "close": 82.95, + "volume": 1712270, + "ma10": 80.12, + "ma20": 78.7, + "macd_dif": 0.7647, + "macd_dea": -0.0525, + "macd_histogram": 1.6345 + }, + { + "time": "2026-02-10 15:00:00", + "open": 82.95, + "high": 83.18, + "low": 82.42, + "close": 83.0, + "volume": 2556125, + "ma10": 80.66, + "ma20": 78.86, + "macd_dif": 0.9064, + "macd_dea": 0.1392, + "macd_histogram": 1.5343 + }, + { + "time": "2026-02-11 10:30:00", + "open": 82.68, + "high": 83.26, + "low": 81.85, + "close": 83.26, + "volume": 2574003, + "ma10": 81.25, + "ma20": 79.15, + "macd_dif": 1.0278, + "macd_dea": 0.317, + "macd_histogram": 1.4218 + }, + { + "time": "2026-02-11 11:30:00", + "open": 83.21, + "high": 84.29, + "low": 82.97, + "close": 83.43, + "volume": 2548397, + "ma10": 81.96, + "ma20": 79.49, + "macd_dif": 1.1248, + "macd_dea": 0.4785, + "macd_histogram": 1.2926 + }, + { + "time": "2026-02-11 14:00:00", + "open": 83.43, + "high": 83.98, + "low": 82.9, + "close": 83.16, + "volume": 2313497, + "ma10": 82.44, + "ma20": 79.81, + "macd_dif": 1.1665, + "macd_dea": 0.6161, + "macd_histogram": 1.1007 + }, + { + "time": "2026-02-11 15:00:00", + "open": 83.13, + "high": 83.45, + "low": 82.7, + "close": 83.21, + "volume": 2225991, + "ma10": 83.05, + "ma20": 80.07, + "macd_dif": 1.1898, + "macd_dea": 0.7309, + "macd_histogram": 0.9178 + }, + { + "time": "2026-02-12 10:30:00", + "open": 85.04, + "high": 87.88, + "low": 85.0, + "close": 86.99, + "volume": 11772117, + "ma10": 83.47, + "ma20": 80.59, + "macd_dif": 1.496, + "macd_dea": 0.8839, + "macd_histogram": 1.2243 + }, + { + "time": "2026-02-12 11:30:00", + "open": 86.97, + "high": 88.72, + "low": 86.87, + "close": 87.34, + "volume": 4169471, + "ma10": 83.83, + "ma20": 81.14, + "macd_dif": 1.7468, + "macd_dea": 1.0565, + "macd_histogram": 1.3807 + }, + { + "time": "2026-02-12 14:00:00", + "open": 87.35, + "high": 87.95, + "low": 87.01, + "close": 87.5, + "volume": 2151453, + "ma10": 84.34, + "ma20": 81.67, + "macd_dif": 1.9362, + "macd_dea": 1.2324, + "macd_histogram": 1.4075 + }, + { + "time": "2026-02-12 15:00:00", + "open": 87.53, + "high": 87.59, + "low": 86.91, + "close": 87.3, + "volume": 2840365, + "ma10": 84.81, + "ma20": 82.18, + "macd_dif": 2.0465, + "macd_dea": 1.3952, + "macd_histogram": 1.3026 + }, + { + "time": "2026-02-13 10:30:00", + "open": 86.82, + "high": 88.51, + "low": 86.02, + "close": 86.99, + "volume": 3624734, + "ma10": 85.22, + "ma20": 82.67, + "macd_dif": 2.0849, + "macd_dea": 1.5332, + "macd_histogram": 1.1035 + }, + { + "time": "2026-02-13 11:30:00", + "open": 86.99, + "high": 87.33, + "low": 86.35, + "close": 86.62, + "volume": 1624121, + "ma10": 85.58, + "ma20": 83.12, + "macd_dif": 2.0617, + "macd_dea": 1.6389, + "macd_histogram": 0.8457 + }, + { + "time": "2026-02-13 14:00:00", + "open": 86.63, + "high": 86.99, + "low": 85.85, + "close": 86.37, + "volume": 1723133, + "ma10": 85.89, + "ma20": 83.57, + "macd_dif": 2.0001, + "macd_dea": 1.7111, + "macd_histogram": 0.578 + }, + { + "time": "2026-02-13 15:00:00", + "open": 86.37, + "high": 86.58, + "low": 85.5, + "close": 85.65, + "volume": 2647439, + "ma10": 86.11, + "ma20": 84.04, + "macd_dif": 1.8716, + "macd_dea": 1.7432, + "macd_histogram": 0.2568 + }, + { + "time": "2026-02-24 10:30:00", + "open": 85.0, + "high": 85.24, + "low": 81.18, + "close": 81.6, + "volume": 8679362, + "ma10": 85.96, + "ma20": 84.2, + "macd_dif": 1.4265, + "macd_dea": 1.6799, + "macd_histogram": -0.5067 + }, + { + "time": "2026-02-24 11:30:00", + "open": 81.6, + "high": 82.5, + "low": 81.27, + "close": 81.79, + "volume": 2821123, + "ma10": 85.81, + "ma20": 84.43, + "macd_dif": 1.0767, + "macd_dea": 1.5593, + "macd_histogram": -0.9651 + }, + { + "time": "2026-02-24 14:00:00", + "open": 81.8, + "high": 82.38, + "low": 81.47, + "close": 81.56, + "volume": 1608216, + "ma10": 85.27, + "ma20": 84.37, + "macd_dif": 0.772, + "macd_dea": 1.4018, + "macd_histogram": -1.2595 + }, + { + "time": "2026-02-24 15:00:00", + "open": 81.56, + "high": 81.65, + "low": 81.25, + "close": 81.47, + "volume": 2005104, + "ma10": 84.69, + "ma20": 84.26, + "macd_dif": 0.5173, + "macd_dea": 1.2249, + "macd_histogram": -1.4151 + }, + { + "time": "2026-02-25 10:30:00", + "open": 81.17, + "high": 82.5, + "low": 80.46, + "close": 81.0, + "volume": 4329000, + "ma10": 84.03, + "ma20": 84.19, + "macd_dif": 0.2744, + "macd_dea": 1.0348, + "macd_histogram": -1.5208 + }, + { + "time": "2026-02-25 11:30:00", + "open": 81.01, + "high": 81.48, + "low": 81.0, + "close": 81.27, + "volume": 1196735, + "ma10": 83.43, + "ma20": 84.12, + "macd_dif": 0.1025, + "macd_dea": 0.8484, + "macd_histogram": -1.4917 + }, + { + "time": "2026-02-25 14:00:00", + "open": 81.22, + "high": 82.9, + "low": 81.15, + "close": 82.63, + "volume": 2239969, + "ma10": 83.0, + "ma20": 84.11, + "macd_dif": 0.0751, + "macd_dea": 0.6937, + "macd_histogram": -1.2372 + }, + { + "time": "2026-02-25 15:00:00", + "open": 82.69, + "high": 82.88, + "low": 81.89, + "close": 82.45, + "volume": 1833946, + "ma10": 82.58, + "ma20": 84.08, + "macd_dif": 0.0385, + "macd_dea": 0.5627, + "macd_histogram": -1.0484 + }, + { + "time": "2026-02-26 10:30:00", + "open": 81.85, + "high": 82.8, + "low": 80.85, + "close": 81.37, + "volume": 3015113, + "ma10": 82.08, + "ma20": 83.98, + "macd_dif": -0.0769, + "macd_dea": 0.4348, + "macd_histogram": -1.0232 + }, + { + "time": "2026-02-26 11:30:00", + "open": 81.37, + "high": 83.98, + "low": 81.33, + "close": 83.92, + "volume": 2484028, + "ma10": 81.91, + "ma20": 84.01, + "macd_dif": 0.0371, + "macd_dea": 0.3552, + "macd_histogram": -0.6363 + }, + { + "time": "2026-02-26 14:00:00", + "open": 83.93, + "high": 85.2, + "low": 83.5, + "close": 83.97, + "volume": 2910874, + "ma10": 82.14, + "ma20": 84.05, + "macd_dif": 0.1299, + "macd_dea": 0.3102, + "macd_histogram": -0.3605 + }, + { + "time": "2026-02-26 15:00:00", + "open": 83.97, + "high": 84.65, + "low": 83.8, + "close": 84.0, + "volume": 2230935, + "ma10": 82.36, + "ma20": 84.09, + "macd_dif": 0.2036, + "macd_dea": 0.2888, + "macd_histogram": -0.1705 + }, + { + "time": "2026-02-27 10:30:00", + "open": 82.51, + "high": 84.36, + "low": 80.95, + "close": 83.94, + "volume": 3239814, + "ma10": 82.6, + "ma20": 83.94, + "macd_dif": 0.2542, + "macd_dea": 0.2819, + "macd_histogram": -0.0555 + }, + { + "time": "2026-02-27 11:30:00", + "open": 83.96, + "high": 86.94, + "low": 83.81, + "close": 86.18, + "volume": 3227037, + "ma10": 83.07, + "ma20": 83.88, + "macd_dif": 0.4696, + "macd_dea": 0.3195, + "macd_histogram": 0.3003 + }, + { + "time": "2026-02-27 14:00:00", + "open": 86.4, + "high": 86.8, + "low": 85.18, + "close": 86.26, + "volume": 2359549, + "ma10": 83.6, + "ma20": 83.82, + "macd_dif": 0.6394, + "macd_dea": 0.3834, + "macd_histogram": 0.512 + }, + { + "time": "2026-02-27 15:00:00", + "open": 86.26, + "high": 86.41, + "low": 85.01, + "close": 85.69, + "volume": 2142016, + "ma10": 84.04, + "ma20": 83.74, + "macd_dif": 0.7197, + "macd_dea": 0.4507, + "macd_histogram": 0.538 + }, + { + "time": "2026-03-02 10:30:00", + "open": 85.89, + "high": 88.88, + "low": 85.2, + "close": 87.36, + "volume": 7663176, + "ma10": 84.51, + "ma20": 83.76, + "macd_dif": 0.9076, + "macd_dea": 0.5421, + "macd_histogram": 0.7311 + }, + { + "time": "2026-03-02 11:30:00", + "open": 87.36, + "high": 88.42, + "low": 86.73, + "close": 87.78, + "volume": 2775727, + "ma10": 85.05, + "ma20": 83.81, + "macd_dif": 1.078, + "macd_dea": 0.6493, + "macd_histogram": 0.8575 + }, + { + "time": "2026-03-02 14:00:00", + "open": 87.83, + "high": 88.3, + "low": 87.33, + "close": 87.48, + "volume": 1649811, + "ma10": 85.66, + "ma20": 83.87, + "macd_dif": 1.1753, + "macd_dea": 0.7545, + "macd_histogram": 0.8417 + }, + { + "time": "2026-03-02 15:00:00", + "open": 87.42, + "high": 87.5, + "low": 86.47, + "close": 86.88, + "volume": 2485839, + "ma10": 85.95, + "ma20": 83.93, + "macd_dif": 1.1903, + "macd_dea": 0.8416, + "macd_histogram": 0.6973 + }, + { + "time": "2026-03-03 10:30:00", + "open": 86.57, + "high": 88.5, + "low": 85.19, + "close": 85.32, + "volume": 6783481, + "ma10": 86.09, + "ma20": 84.12, + "macd_dif": 1.064, + "macd_dea": 0.8861, + "macd_histogram": 0.3558 + }, + { + "time": "2026-03-03 11:30:00", + "open": 85.33, + "high": 86.22, + "low": 85.02, + "close": 85.08, + "volume": 1783102, + "ma10": 86.2, + "ma20": 84.28, + "macd_dif": 0.9338, + "macd_dea": 0.8957, + "macd_histogram": 0.0763 + }, + { + "time": "2026-03-03 14:00:00", + "open": 85.09, + "high": 85.56, + "low": 82.9, + "close": 83.01, + "volume": 2935837, + "ma10": 86.1, + "ma20": 84.35, + "macd_dif": 0.656, + "macd_dea": 0.8477, + "macd_histogram": -0.3834 + }, + { + "time": "2026-03-03 15:00:00", + "open": 83.08, + "high": 83.64, + "low": 82.1, + "close": 82.8, + "volume": 2336442, + "ma10": 85.77, + "ma20": 84.42, + "macd_dif": 0.4141, + "macd_dea": 0.761, + "macd_histogram": -0.6937 + }, + { + "time": "2026-03-04 10:30:00", + "open": 81.94, + "high": 86.27, + "low": 81.94, + "close": 84.85, + "volume": 6567322, + "ma10": 85.62, + "ma20": 84.61, + "macd_dif": 0.3834, + "macd_dea": 0.6855, + "macd_histogram": -0.6041 + }, + { + "time": "2026-03-04 11:30:00", + "open": 84.8, + "high": 85.17, + "low": 82.0, + "close": 82.19, + "volume": 2429865, + "ma10": 85.28, + "ma20": 84.66, + "macd_dif": 0.1428, + "macd_dea": 0.577, + "macd_histogram": -0.8682 + }, + { + "time": "2026-03-04 14:00:00", + "open": 82.13, + "high": 83.35, + "low": 82.0, + "close": 82.94, + "volume": 2016116, + "ma10": 84.83, + "ma20": 84.67, + "macd_dif": 0.0125, + "macd_dea": 0.4641, + "macd_histogram": -0.9031 + }, + { + "time": "2026-03-04 15:00:00", + "open": 82.94, + "high": 82.94, + "low": 81.8, + "close": 82.04, + "volume": 3094038, + "ma10": 84.26, + "ma20": 84.65, + "macd_dif": -0.1615, + "macd_dea": 0.339, + "macd_histogram": -1.0009 + }, + { + "time": "2026-03-05 10:30:00", + "open": 84.88, + "high": 85.32, + "low": 82.62, + "close": 84.22, + "volume": 4857749, + "ma10": 83.93, + "ma20": 84.8, + "macd_dif": -0.1221, + "macd_dea": 0.2467, + "macd_histogram": -0.7377 + }, + { + "time": "2026-03-05 11:30:00", + "open": 84.22, + "high": 84.55, + "low": 82.7, + "close": 82.7, + "volume": 1530151, + "ma10": 83.52, + "ma20": 84.73, + "macd_dif": -0.2111, + "macd_dea": 0.1552, + "macd_histogram": -0.7326 + }, + { + "time": "2026-03-05 14:00:00", + "open": 82.71, + "high": 83.3, + "low": 81.42, + "close": 81.42, + "volume": 1698272, + "ma10": 83.12, + "ma20": 84.61, + "macd_dif": -0.3805, + "macd_dea": 0.048, + "macd_histogram": -0.8571 + }, + { + "time": "2026-03-05 15:00:00", + "open": 81.46, + "high": 82.36, + "low": 80.8, + "close": 82.1, + "volume": 2421315, + "ma10": 82.83, + "ma20": 84.51, + "macd_dif": -0.4547, + "macd_dea": -0.0525, + "macd_histogram": -0.8044 + }, + { + "time": "2026-03-06 10:30:00", + "open": 82.0, + "high": 82.99, + "low": 80.6, + "close": 81.6, + "volume": 4915303, + "ma10": 82.69, + "ma20": 84.4, + "macd_dif": -0.5475, + "macd_dea": -0.1515, + "macd_histogram": -0.792 + }, + { + "time": "2026-03-06 11:30:00", + "open": 81.67, + "high": 82.5, + "low": 81.36, + "close": 81.9, + "volume": 1165767, + "ma10": 82.6, + "ma20": 84.18, + "macd_dif": -0.59, + "macd_dea": -0.2392, + "macd_histogram": -0.7017 + }, + { + "time": "2026-03-06 14:00:00", + "open": 81.96, + "high": 82.19, + "low": 79.84, + "close": 80.0, + "volume": 2855998, + "ma10": 82.11, + "ma20": 83.87, + "macd_dif": -0.7682, + "macd_dea": -0.345, + "macd_histogram": -0.8464 + }, + { + "time": "2026-03-06 15:00:00", + "open": 79.99, + "high": 80.03, + "low": 79.53, + "close": 79.87, + "volume": 1925030, + "ma10": 81.88, + "ma20": 83.58, + "macd_dif": -0.9094, + "macd_dea": -0.4579, + "macd_histogram": -0.9031 + } + ], + "30min": [ + { + "time": "2026-02-26 14:30:00", + "open": 83.97, + "high": 84.37, + "low": 83.8, + "close": 84.26, + "volume": 964063, + "ma10": 82.93, + "ma20": 82.19, + "macd_dif": 0.0732, + "macd_dea": -0.3217, + "macd_histogram": 0.7898 + }, + { + "time": "2026-02-26 15:00:00", + "open": 84.26, + "high": 84.65, + "low": 84.0, + "close": 84.0, + "volume": 1266872, + "ma10": 83.07, + "ma20": 82.3, + "macd_dif": 0.1399, + "macd_dea": -0.2294, + "macd_histogram": 0.7386 + }, + { + "time": "2026-02-27 10:00:00", + "open": 82.51, + "high": 84.16, + "low": 80.95, + "close": 84.1, + "volume": 2442225, + "ma10": 83.28, + "ma20": 82.41, + "macd_dif": 0.1986, + "macd_dea": -0.1438, + "macd_histogram": 0.6848 + }, + { + "time": "2026-02-27 10:30:00", + "open": 84.1, + "high": 84.36, + "low": 83.41, + "close": 83.94, + "volume": 797589, + "ma10": 83.42, + "ma20": 82.52, + "macd_dif": 0.2295, + "macd_dea": -0.0691, + "macd_histogram": 0.5973 + }, + { + "time": "2026-02-27 11:00:00", + "open": 83.96, + "high": 84.78, + "low": 83.81, + "close": 84.54, + "volume": 993896, + "ma10": 83.71, + "ma20": 82.68, + "macd_dif": 0.299, + "macd_dea": 0.0045, + "macd_histogram": 0.589 + }, + { + "time": "2026-02-27 11:30:00", + "open": 84.47, + "high": 86.94, + "low": 84.47, + "close": 86.18, + "volume": 2233141, + "ma10": 84.19, + "ma20": 82.91, + "macd_dif": 0.4809, + "macd_dea": 0.0998, + "macd_histogram": 0.7622 + }, + { + "time": "2026-02-27 13:30:00", + "open": 86.4, + "high": 86.8, + "low": 85.18, + "close": 85.81, + "volume": 1416937, + "ma10": 84.57, + "ma20": 83.16, + "macd_dif": 0.5884, + "macd_dea": 0.1975, + "macd_histogram": 0.7818 + }, + { + "time": "2026-02-27 14:00:00", + "open": 85.82, + "high": 86.61, + "low": 85.8, + "close": 86.26, + "volume": 942612, + "ma10": 84.8, + "ma20": 83.42, + "macd_dif": 0.7018, + "macd_dea": 0.2984, + "macd_histogram": 0.8069 + }, + { + "time": "2026-02-27 14:30:00", + "open": 86.26, + "high": 86.41, + "low": 85.65, + "close": 85.75, + "volume": 740484, + "ma10": 84.88, + "ma20": 83.64, + "macd_dif": 0.742, + "macd_dea": 0.3871, + "macd_histogram": 0.7098 + }, + { + "time": "2026-02-27 15:00:00", + "open": 85.75, + "high": 86.05, + "low": 85.01, + "close": 85.69, + "volume": 1401532, + "ma10": 85.05, + "ma20": 83.86, + "macd_dif": 0.7602, + "macd_dea": 0.4617, + "macd_histogram": 0.597 + }, + { + "time": "2026-03-02 10:00:00", + "open": 85.89, + "high": 88.88, + "low": 85.2, + "close": 88.49, + "volume": 5805125, + "ma10": 85.48, + "ma20": 84.2, + "macd_dif": 0.9892, + "macd_dea": 0.5672, + "macd_histogram": 0.844 + }, + { + "time": "2026-03-02 10:30:00", + "open": 88.33, + "high": 88.5, + "low": 86.66, + "close": 87.36, + "volume": 1858051, + "ma10": 85.81, + "ma20": 84.44, + "macd_dif": 1.0672, + "macd_dea": 0.6672, + "macd_histogram": 0.7999 + }, + { + "time": "2026-03-02 11:00:00", + "open": 87.36, + "high": 88.42, + "low": 86.73, + "close": 87.75, + "volume": 2144925, + "ma10": 86.18, + "ma20": 84.73, + "macd_dif": 1.1472, + "macd_dea": 0.7632, + "macd_histogram": 0.768 + }, + { + "time": "2026-03-02 11:30:00", + "open": 87.75, + "high": 88.0, + "low": 87.16, + "close": 87.78, + "volume": 630802, + "ma10": 86.56, + "ma20": 84.99, + "macd_dif": 1.1992, + "macd_dea": 0.8504, + "macd_histogram": 0.6977 + }, + { + "time": "2026-03-02 13:30:00", + "open": 87.83, + "high": 88.3, + "low": 87.51, + "close": 87.88, + "volume": 1005157, + "ma10": 86.9, + "ma20": 85.3, + "macd_dif": 1.2343, + "macd_dea": 0.9272, + "macd_histogram": 0.6143 + }, + { + "time": "2026-03-02 14:00:00", + "open": 87.85, + "high": 87.95, + "low": 87.33, + "close": 87.48, + "volume": 644654, + "ma10": 87.03, + "ma20": 85.61, + "macd_dif": 1.2158, + "macd_dea": 0.9849, + "macd_histogram": 0.4618 + }, + { + "time": "2026-03-02 14:30:00", + "open": 87.42, + "high": 87.5, + "low": 86.6, + "close": 86.68, + "volume": 857370, + "ma10": 87.11, + "ma20": 85.84, + "macd_dif": 1.1237, + "macd_dea": 1.0127, + "macd_histogram": 0.222 + }, + { + "time": "2026-03-02 15:00:00", + "open": 86.68, + "high": 86.99, + "low": 86.47, + "close": 86.88, + "volume": 1628469, + "ma10": 87.17, + "ma20": 85.99, + "macd_dif": 1.0546, + "macd_dea": 1.0211, + "macd_histogram": 0.0671 + }, + { + "time": "2026-03-03 10:00:00", + "open": 86.57, + "high": 88.5, + "low": 86.0, + "close": 86.5, + "volume": 4434712, + "ma10": 87.25, + "ma20": 86.07, + "macd_dif": 0.9582, + "macd_dea": 1.0085, + "macd_histogram": -0.1006 + }, + { + "time": "2026-03-03 10:30:00", + "open": 86.55, + "high": 86.71, + "low": 85.19, + "close": 85.32, + "volume": 2348769, + "ma10": 87.21, + "ma20": 86.13, + "macd_dif": 0.7776, + "macd_dea": 0.9623, + "macd_histogram": -0.3694 + }, + { + "time": "2026-03-03 11:00:00", + "open": 85.33, + "high": 86.0, + "low": 85.06, + "close": 85.56, + "volume": 1151750, + "ma10": 86.92, + "ma20": 86.2, + "macd_dif": 0.6464, + "macd_dea": 0.8991, + "macd_histogram": -0.5055 + }, + { + "time": "2026-03-03 11:30:00", + "open": 85.56, + "high": 86.22, + "low": 85.02, + "close": 85.08, + "volume": 631352, + "ma10": 86.69, + "ma20": 86.25, + "macd_dif": 0.4979, + "macd_dea": 0.8189, + "macd_histogram": -0.6419 + }, + { + "time": "2026-03-03 13:30:00", + "open": 85.09, + "high": 85.56, + "low": 84.36, + "close": 84.69, + "volume": 943487, + "ma10": 86.39, + "ma20": 86.28, + "macd_dif": 0.3448, + "macd_dea": 0.7241, + "macd_histogram": -0.7585 + }, + { + "time": "2026-03-03 14:00:00", + "open": 84.64, + "high": 84.74, + "low": 82.9, + "close": 83.01, + "volume": 1992350, + "ma10": 85.91, + "ma20": 86.23, + "macd_dif": 0.0869, + "macd_dea": 0.5966, + "macd_histogram": -1.0194 + }, + { + "time": "2026-03-03 14:30:00", + "open": 83.08, + "high": 83.56, + "low": 82.5, + "close": 83.45, + "volume": 972864, + "ma10": 85.47, + "ma20": 86.18, + "macd_dif": -0.081, + "macd_dea": 0.4611, + "macd_histogram": -1.0843 + }, + { + "time": "2026-03-03 15:00:00", + "open": 83.45, + "high": 83.64, + "low": 82.1, + "close": 82.8, + "volume": 1363578, + "ma10": 85.0, + "ma20": 86.01, + "macd_dif": -0.2636, + "macd_dea": 0.3162, + "macd_histogram": -1.1594 + }, + { + "time": "2026-03-04 10:00:00", + "open": 81.94, + "high": 85.3, + "low": 81.94, + "close": 83.47, + "volume": 3748412, + "ma10": 84.68, + "ma20": 85.89, + "macd_dif": -0.3501, + "macd_dea": 0.1829, + "macd_histogram": -1.066 + }, + { + "time": "2026-03-04 10:30:00", + "open": 83.53, + "high": 86.27, + "low": 83.4, + "close": 84.85, + "volume": 2818910, + "ma10": 84.47, + "ma20": 85.82, + "macd_dif": -0.3038, + "macd_dea": 0.0856, + "macd_histogram": -0.7788 + }, + { + "time": "2026-03-04 11:00:00", + "open": 84.8, + "high": 85.17, + "low": 83.01, + "close": 83.22, + "volume": 1328488, + "ma10": 84.15, + "ma20": 85.7, + "macd_dif": -0.3941, + "macd_dea": -0.0104, + "macd_histogram": -0.7675 + }, + { + "time": "2026-03-04 11:30:00", + "open": 83.22, + "high": 83.39, + "low": 82.0, + "close": 82.19, + "volume": 1101377, + "ma10": 83.83, + "ma20": 85.52, + "macd_dif": -0.5426, + "macd_dea": -0.1168, + "macd_histogram": -0.8515 + }, + { + "time": "2026-03-04 13:30:00", + "open": 82.13, + "high": 83.28, + "low": 82.0, + "close": 82.61, + "volume": 1243089, + "ma10": 83.54, + "ma20": 85.23, + "macd_dif": -0.6192, + "macd_dea": -0.2173, + "macd_histogram": -0.8038 + }, + { + "time": "2026-03-04 14:00:00", + "open": 82.61, + "high": 83.35, + "low": 82.22, + "close": 82.94, + "volume": 773027, + "ma10": 83.32, + "ma20": 85.01, + "macd_dif": -0.6458, + "macd_dea": -0.303, + "macd_histogram": -0.6856 + }, + { + "time": "2026-03-04 14:30:00", + "open": 82.94, + "high": 82.94, + "low": 82.2, + "close": 82.23, + "volume": 853893, + "ma10": 83.08, + "ma20": 84.73, + "macd_dif": -0.716, + "macd_dea": -0.3856, + "macd_histogram": -0.6608 + }, + { + "time": "2026-03-04 15:00:00", + "open": 82.26, + "high": 82.49, + "low": 81.8, + "close": 82.04, + "volume": 2240145, + "ma10": 82.98, + "ma20": 84.44, + "macd_dif": -0.7779, + "macd_dea": -0.4641, + "macd_histogram": -0.6277 + }, + { + "time": "2026-03-05 10:00:00", + "open": 84.88, + "high": 85.32, + "low": 82.62, + "close": 82.9, + "volume": 2842685, + "ma10": 82.92, + "ma20": 84.2, + "macd_dif": -0.749, + "macd_dea": -0.521, + "macd_histogram": -0.4559 + }, + { + "time": "2026-03-05 10:30:00", + "open": 83.0, + "high": 84.77, + "low": 82.91, + "close": 84.22, + "volume": 2015064, + "ma10": 83.07, + "ma20": 84.03, + "macd_dif": -0.6125, + "macd_dea": -0.5393, + "macd_histogram": -0.1463 + }, + { + "time": "2026-03-05 11:00:00", + "open": 84.22, + "high": 84.55, + "low": 83.25, + "close": 83.51, + "volume": 842970, + "ma10": 83.07, + "ma20": 83.87, + "macd_dif": -0.5552, + "macd_dea": -0.5425, + "macd_histogram": -0.0254 + }, + { + "time": "2026-03-05 11:30:00", + "open": 83.49, + "high": 83.55, + "low": 82.7, + "close": 82.7, + "volume": 687181, + "ma10": 82.86, + "ma20": 83.66, + "macd_dif": -0.5686, + "macd_dea": -0.5477, + "macd_histogram": -0.0418 + }, + { + "time": "2026-03-05 13:30:00", + "open": 82.71, + "high": 83.3, + "low": 82.5, + "close": 82.55, + "volume": 640662, + "ma10": 82.79, + "ma20": 83.47, + "macd_dif": -0.5846, + "macd_dea": -0.5551, + "macd_histogram": -0.059 + }, + { + "time": "2026-03-05 14:00:00", + "open": 82.62, + "high": 82.68, + "low": 81.42, + "close": 81.42, + "volume": 1057610, + "ma10": 82.71, + "ma20": 83.27, + "macd_dif": -0.6806, + "macd_dea": -0.5802, + "macd_histogram": -0.2008 + }, + { + "time": "2026-03-05 14:30:00", + "open": 81.46, + "high": 81.57, + "low": 80.8, + "close": 81.5, + "volume": 1334449, + "ma10": 82.6, + "ma20": 83.07, + "macd_dif": -0.7417, + "macd_dea": -0.6125, + "macd_histogram": -0.2584 + }, + { + "time": "2026-03-05 15:00:00", + "open": 81.44, + "high": 82.36, + "low": 81.2, + "close": 82.1, + "volume": 1086866, + "ma10": 82.52, + "ma20": 82.92, + "macd_dif": -0.7332, + "macd_dea": -0.6366, + "macd_histogram": -0.1932 + }, + { + "time": "2026-03-06 10:00:00", + "open": 82.0, + "high": 82.99, + "low": 80.6, + "close": 81.64, + "volume": 2729654, + "ma10": 82.46, + "ma20": 82.77, + "macd_dif": -0.7549, + "macd_dea": -0.6603, + "macd_histogram": -0.1893 + }, + { + "time": "2026-03-06 10:30:00", + "open": 81.63, + "high": 82.93, + "low": 81.23, + "close": 81.6, + "volume": 2185649, + "ma10": 82.41, + "ma20": 82.7, + "macd_dif": -0.7665, + "macd_dea": -0.6816, + "macd_histogram": -0.17 + }, + { + "time": "2026-03-06 11:00:00", + "open": 81.67, + "high": 82.37, + "low": 81.36, + "close": 82.04, + "volume": 669575, + "ma10": 82.33, + "ma20": 82.63, + "macd_dif": -0.7318, + "macd_dea": -0.6916, + "macd_histogram": -0.0804 + }, + { + "time": "2026-03-06 11:30:00", + "open": 82.04, + "high": 82.5, + "low": 81.86, + "close": 81.9, + "volume": 496192, + "ma10": 82.1, + "ma20": 82.58, + "macd_dif": -0.7074, + "macd_dea": -0.6948, + "macd_histogram": -0.0253 + }, + { + "time": "2026-03-06 13:30:00", + "open": 81.96, + "high": 82.19, + "low": 80.21, + "close": 80.25, + "volume": 1483809, + "ma10": 81.77, + "ma20": 82.42, + "macd_dif": -0.8118, + "macd_dea": -0.7182, + "macd_histogram": -0.1873 + }, + { + "time": "2026-03-06 14:00:00", + "open": 80.3, + "high": 80.51, + "low": 79.84, + "close": 80.0, + "volume": 1372189, + "ma10": 81.5, + "ma20": 82.18, + "macd_dif": -0.9044, + "macd_dea": -0.7554, + "macd_histogram": -0.2979 + }, + { + "time": "2026-03-06 14:30:00", + "open": 79.99, + "high": 80.03, + "low": 79.53, + "close": 79.82, + "volume": 1098907, + "ma10": 81.23, + "ma20": 82.01, + "macd_dif": -0.9809, + "macd_dea": -0.8005, + "macd_histogram": -0.3608 + }, + { + "time": "2026-03-06 15:00:00", + "open": 79.83, + "high": 80.0, + "low": 79.61, + "close": 79.87, + "volume": 826123, + "ma10": 81.07, + "ma20": 81.89, + "macd_dif": -1.0257, + "macd_dea": -0.8456, + "macd_histogram": -0.3603 + } + ], + "15min": [ + { + "time": "2026-03-03 14:45:00", + "open": 83.45, + "high": 83.64, + "low": 82.38, + "close": 82.76, + "volume": 615495, + "ma10": 84.22, + "ma20": 85.42, + "macd_dif": -0.8729, + "macd_dea": -0.4981, + "macd_histogram": -0.7495 + }, + { + "time": "2026-03-03 15:00:00", + "open": 82.8, + "high": 83.0, + "low": 82.1, + "close": 82.8, + "volume": 748083, + "ma10": 83.94, + "ma20": 85.18, + "macd_dif": -0.9262, + "macd_dea": -0.5837, + "macd_histogram": -0.6849 + }, + { + "time": "2026-03-04 09:45:00", + "open": 81.94, + "high": 85.21, + "low": 81.94, + "close": 84.51, + "volume": 2398866, + "ma10": 83.83, + "ma20": 85.06, + "macd_dif": -0.821, + "macd_dea": -0.6312, + "macd_histogram": -0.3796 + }, + { + "time": "2026-03-04 10:00:00", + "open": 84.51, + "high": 85.3, + "low": 83.45, + "close": 83.47, + "volume": 1349546, + "ma10": 83.67, + "ma20": 84.89, + "macd_dif": -0.8122, + "macd_dea": -0.6674, + "macd_histogram": -0.2896 + }, + { + "time": "2026-03-04 10:15:00", + "open": 83.53, + "high": 85.19, + "low": 83.4, + "close": 85.08, + "volume": 953475, + "ma10": 83.64, + "ma20": 84.81, + "macd_dif": -0.6676, + "macd_dea": -0.6674, + "macd_histogram": -0.0004 + }, + { + "time": "2026-03-04 10:30:00", + "open": 85.1, + "high": 86.27, + "low": 84.7, + "close": 84.85, + "volume": 1865435, + "ma10": 83.66, + "ma20": 84.71, + "macd_dif": -0.5651, + "macd_dea": -0.647, + "macd_histogram": 0.1638 + }, + { + "time": "2026-03-04 10:45:00", + "open": 84.8, + "high": 85.17, + "low": 83.01, + "close": 83.33, + "volume": 814141, + "ma10": 83.63, + "ma20": 84.48, + "macd_dif": -0.5996, + "macd_dea": -0.6375, + "macd_histogram": 0.0759 + }, + { + "time": "2026-03-04 11:00:00", + "open": 83.33, + "high": 83.95, + "low": 83.18, + "close": 83.22, + "volume": 514347, + "ma10": 83.65, + "ma20": 84.32, + "macd_dif": -0.6285, + "macd_dea": -0.6357, + "macd_histogram": 0.0144 + }, + { + "time": "2026-03-04 11:15:00", + "open": 83.22, + "high": 83.39, + "low": 82.68, + "close": 83.04, + "volume": 518464, + "ma10": 83.65, + "ma20": 84.16, + "macd_dif": -0.6584, + "macd_dea": -0.6402, + "macd_histogram": -0.0363 + }, + { + "time": "2026-03-04 11:30:00", + "open": 83.06, + "high": 83.31, + "low": 82.0, + "close": 82.19, + "volume": 582913, + "ma10": 83.53, + "ma20": 84.0, + "macd_dif": -0.7421, + "macd_dea": -0.6606, + "macd_histogram": -0.163 + }, + { + "time": "2026-03-04 13:15:00", + "open": 82.13, + "high": 82.67, + "low": 82.0, + "close": 82.4, + "volume": 718929, + "ma10": 83.49, + "ma20": 83.85, + "macd_dif": -0.7825, + "macd_dea": -0.685, + "macd_histogram": -0.195 + }, + { + "time": "2026-03-04 13:30:00", + "open": 82.4, + "high": 83.28, + "low": 82.4, + "close": 82.61, + "volume": 524160, + "ma10": 83.47, + "ma20": 83.71, + "macd_dif": -0.7884, + "macd_dea": -0.7057, + "macd_histogram": -0.1655 + }, + { + "time": "2026-03-04 13:45:00", + "open": 82.61, + "high": 83.28, + "low": 82.22, + "close": 82.79, + "volume": 394017, + "ma10": 83.3, + "ma20": 83.57, + "macd_dif": -0.7698, + "macd_dea": -0.7185, + "macd_histogram": -0.1026 + }, + { + "time": "2026-03-04 14:00:00", + "open": 82.83, + "high": 83.35, + "low": 82.79, + "close": 82.94, + "volume": 379010, + "ma10": 83.25, + "ma20": 83.46, + "macd_dif": -0.7344, + "macd_dea": -0.7217, + "macd_histogram": -0.0255 + }, + { + "time": "2026-03-04 14:15:00", + "open": 82.94, + "high": 82.94, + "low": 82.41, + "close": 82.58, + "volume": 434143, + "ma10": 83.0, + "ma20": 83.32, + "macd_dif": -0.7271, + "macd_dea": -0.7228, + "macd_histogram": -0.0086 + }, + { + "time": "2026-03-04 14:30:00", + "open": 82.59, + "high": 82.88, + "low": 82.2, + "close": 82.23, + "volume": 419750, + "ma10": 82.73, + "ma20": 83.2, + "macd_dif": -0.7409, + "macd_dea": -0.7264, + "macd_histogram": -0.0291 + }, + { + "time": "2026-03-04 14:45:00", + "open": 82.26, + "high": 82.44, + "low": 81.99, + "close": 82.02, + "volume": 964091, + "ma10": 82.6, + "ma20": 83.11, + "macd_dif": -0.7601, + "macd_dea": -0.7331, + "macd_histogram": -0.0539 + }, + { + "time": "2026-03-04 15:00:00", + "open": 82.06, + "high": 82.49, + "low": 81.8, + "close": 82.04, + "volume": 1276054, + "ma10": 82.48, + "ma20": 83.07, + "macd_dif": -0.7649, + "macd_dea": -0.7395, + "macd_histogram": -0.0508 + }, + { + "time": "2026-03-05 09:45:00", + "open": 84.88, + "high": 85.32, + "low": 83.0, + "close": 83.83, + "volume": 1712904, + "ma10": 82.56, + "ma20": 83.11, + "macd_dif": -0.6171, + "macd_dea": -0.715, + "macd_histogram": 0.1958 + }, + { + "time": "2026-03-05 10:00:00", + "open": 83.82, + "high": 84.95, + "low": 82.62, + "close": 82.9, + "volume": 1129781, + "ma10": 82.63, + "ma20": 83.08, + "macd_dif": -0.5685, + "macd_dea": -0.6857, + "macd_histogram": 0.2345 + }, + { + "time": "2026-03-05 10:15:00", + "open": 83.0, + "high": 84.49, + "low": 82.91, + "close": 84.29, + "volume": 1040098, + "ma10": 82.82, + "ma20": 83.16, + "macd_dif": -0.413, + "macd_dea": -0.6312, + "macd_histogram": 0.4363 + }, + { + "time": "2026-03-05 10:30:00", + "open": 84.3, + "high": 84.77, + "low": 83.82, + "close": 84.22, + "volume": 974966, + "ma10": 82.98, + "ma20": 83.23, + "macd_dif": -0.2921, + "macd_dea": -0.5633, + "macd_histogram": 0.5425 + }, + { + "time": "2026-03-05 10:45:00", + "open": 84.22, + "high": 84.55, + "low": 83.39, + "close": 83.61, + "volume": 509471, + "ma10": 83.07, + "ma20": 83.18, + "macd_dif": -0.2427, + "macd_dea": -0.4992, + "macd_histogram": 0.513 + }, + { + "time": "2026-03-05 11:00:00", + "open": 83.61, + "high": 83.89, + "low": 83.25, + "close": 83.51, + "volume": 333499, + "ma10": 83.12, + "ma20": 83.18, + "macd_dif": -0.2092, + "macd_dea": -0.4412, + "macd_histogram": 0.464 + }, + { + "time": "2026-03-05 11:15:00", + "open": 83.49, + "high": 83.55, + "low": 82.73, + "close": 83.06, + "volume": 372600, + "ma10": 83.17, + "ma20": 83.08, + "macd_dif": -0.2165, + "macd_dea": -0.3963, + "macd_histogram": 0.3596 + }, + { + "time": "2026-03-05 11:30:00", + "open": 83.06, + "high": 83.4, + "low": 82.7, + "close": 82.7, + "volume": 314581, + "ma10": 83.22, + "ma20": 82.98, + "macd_dif": -0.2484, + "macd_dea": -0.3667, + "macd_histogram": 0.2366 + }, + { + "time": "2026-03-05 13:15:00", + "open": 82.71, + "high": 83.3, + "low": 82.68, + "close": 82.81, + "volume": 342085, + "ma10": 83.3, + "ma20": 82.95, + "macd_dif": -0.2618, + "macd_dea": -0.3457, + "macd_histogram": 0.1678 + }, + { + "time": "2026-03-05 13:30:00", + "open": 82.83, + "high": 82.93, + "low": 82.5, + "close": 82.55, + "volume": 298577, + "ma10": 83.35, + "ma20": 82.92, + "macd_dif": -0.2901, + "macd_dea": -0.3346, + "macd_histogram": 0.089 + }, + { + "time": "2026-03-05 13:45:00", + "open": 82.62, + "high": 82.68, + "low": 81.82, + "close": 82.04, + "volume": 542562, + "ma10": 83.17, + "ma20": 82.87, + "macd_dif": -0.3496, + "macd_dea": -0.3376, + "macd_histogram": -0.0241 + }, + { + "time": "2026-03-05 14:00:00", + "open": 82.06, + "high": 82.11, + "low": 81.42, + "close": 81.42, + "volume": 515048, + "ma10": 83.02, + "ma20": 82.83, + "macd_dif": -0.4418, + "macd_dea": -0.3584, + "macd_histogram": -0.1666 + }, + { + "time": "2026-03-05 14:15:00", + "open": 81.46, + "high": 81.56, + "low": 80.9, + "close": 81.16, + "volume": 783363, + "ma10": 82.71, + "ma20": 82.77, + "macd_dif": -0.5296, + "macd_dea": -0.3927, + "macd_histogram": -0.2739 + }, + { + "time": "2026-03-05 14:30:00", + "open": 81.12, + "high": 81.57, + "low": 80.8, + "close": 81.5, + "volume": 551086, + "ma10": 82.44, + "ma20": 82.71, + "macd_dif": -0.5653, + "macd_dea": -0.4272, + "macd_histogram": -0.2762 + }, + { + "time": "2026-03-05 14:45:00", + "open": 81.44, + "high": 81.88, + "low": 81.2, + "close": 81.82, + "volume": 577825, + "ma10": 82.26, + "ma20": 82.66, + "macd_dif": -0.5613, + "macd_dea": -0.454, + "macd_histogram": -0.2146 + }, + { + "time": "2026-03-05 15:00:00", + "open": 81.82, + "high": 82.36, + "low": 81.73, + "close": 82.1, + "volume": 509041, + "ma10": 82.12, + "ma20": 82.62, + "macd_dif": -0.5294, + "macd_dea": -0.4691, + "macd_histogram": -0.1207 + }, + { + "time": "2026-03-06 09:45:00", + "open": 82.0, + "high": 82.08, + "low": 80.6, + "close": 81.27, + "volume": 1651404, + "ma10": 81.94, + "ma20": 82.55, + "macd_dif": -0.5646, + "macd_dea": -0.4882, + "macd_histogram": -0.1529 + }, + { + "time": "2026-03-06 10:00:00", + "open": 81.31, + "high": 82.99, + "low": 80.9, + "close": 81.64, + "volume": 1078250, + "ma10": 81.83, + "ma20": 82.52, + "macd_dif": -0.5563, + "macd_dea": -0.5018, + "macd_histogram": -0.1089 + }, + { + "time": "2026-03-06 10:15:00", + "open": 81.63, + "high": 82.93, + "low": 81.41, + "close": 82.01, + "volume": 1656598, + "ma10": 81.75, + "ma20": 82.52, + "macd_dif": -0.5139, + "macd_dea": -0.5042, + "macd_histogram": -0.0193 + }, + { + "time": "2026-03-06 10:30:00", + "open": 82.04, + "high": 82.23, + "low": 81.23, + "close": 81.6, + "volume": 529051, + "ma10": 81.66, + "ma20": 82.5, + "macd_dif": -0.5075, + "macd_dea": -0.5049, + "macd_histogram": -0.0052 + }, + { + "time": "2026-03-06 10:45:00", + "open": 81.67, + "high": 82.08, + "low": 81.36, + "close": 81.95, + "volume": 311042, + "ma10": 81.65, + "ma20": 82.41, + "macd_dif": -0.4688, + "macd_dea": -0.4977, + "macd_histogram": 0.0578 + }, + { + "time": "2026-03-06 11:00:00", + "open": 81.95, + "high": 82.37, + "low": 81.8, + "close": 82.04, + "volume": 358533, + "ma10": 81.71, + "ma20": 82.37, + "macd_dif": -0.4259, + "macd_dea": -0.4833, + "macd_histogram": 0.1147 + }, + { + "time": "2026-03-06 11:15:00", + "open": 82.04, + "high": 82.5, + "low": 82.04, + "close": 82.27, + "volume": 333497, + "ma10": 81.82, + "ma20": 82.26, + "macd_dif": -0.3692, + "macd_dea": -0.4605, + "macd_histogram": 0.1826 + }, + { + "time": "2026-03-06 11:30:00", + "open": 82.28, + "high": 82.37, + "low": 81.86, + "close": 81.9, + "volume": 162695, + "ma10": 81.86, + "ma20": 82.15, + "macd_dif": -0.35, + "macd_dea": -0.4384, + "macd_histogram": 0.1768 + }, + { + "time": "2026-03-06 13:15:00", + "open": 81.96, + "high": 82.19, + "low": 81.06, + "close": 81.22, + "volume": 416400, + "ma10": 81.8, + "ma20": 82.03, + "macd_dif": -0.3853, + "macd_dea": -0.4278, + "macd_histogram": 0.085 + }, + { + "time": "2026-03-06 13:30:00", + "open": 81.22, + "high": 81.49, + "low": 80.21, + "close": 80.25, + "volume": 1067409, + "ma10": 81.61, + "ma20": 81.87, + "macd_dif": -0.4859, + "macd_dea": -0.4394, + "macd_histogram": -0.0929 + }, + { + "time": "2026-03-06 13:45:00", + "open": 80.3, + "high": 80.51, + "low": 80.0, + "close": 80.09, + "volume": 788481, + "ma10": 81.5, + "ma20": 81.72, + "macd_dif": -0.5719, + "macd_dea": -0.4659, + "macd_histogram": -0.212 + }, + { + "time": "2026-03-06 14:00:00", + "open": 80.09, + "high": 80.33, + "low": 79.84, + "close": 80.0, + "volume": 583708, + "ma10": 81.33, + "ma20": 81.58, + "macd_dif": -0.64, + "macd_dea": -0.5007, + "macd_histogram": -0.2785 + }, + { + "time": "2026-03-06 14:15:00", + "open": 79.99, + "high": 80.03, + "low": 79.53, + "close": 79.78, + "volume": 767399, + "ma10": 81.11, + "ma20": 81.43, + "macd_dif": -0.7036, + "macd_dea": -0.5413, + "macd_histogram": -0.3246 + }, + { + "time": "2026-03-06 14:30:00", + "open": 79.76, + "high": 79.96, + "low": 79.62, + "close": 79.82, + "volume": 331508, + "ma10": 80.93, + "ma20": 81.29, + "macd_dif": -0.7422, + "macd_dea": -0.5815, + "macd_histogram": -0.3214 + }, + { + "time": "2026-03-06 14:45:00", + "open": 79.83, + "high": 79.9, + "low": 79.61, + "close": 79.86, + "volume": 435724, + "ma10": 80.72, + "ma20": 81.18, + "macd_dif": -0.7608, + "macd_dea": -0.6173, + "macd_histogram": -0.2869 + }, + { + "time": "2026-03-06 15:00:00", + "open": 79.86, + "high": 80.0, + "low": 79.76, + "close": 79.87, + "volume": 390399, + "ma10": 80.51, + "ma20": 81.11, + "macd_dif": -0.7659, + "macd_dea": -0.647, + "macd_histogram": -0.2377 + } + ], + "5min": [ + { + "time": "2026-03-05 14:55:00", + "open": 81.8, + "high": 82.04, + "low": 81.8, + "close": 82.04, + "volume": 148104, + "ma10": 81.43, + "ma20": 81.74, + "macd_dif": -0.3092, + "macd_dea": -0.4217, + "macd_histogram": 0.225 + }, + { + "time": "2026-03-05 15:00:00", + "open": 82.04, + "high": 82.36, + "low": 81.98, + "close": 82.1, + "volume": 157976, + "ma10": 81.54, + "ma20": 81.71, + "macd_dif": -0.2522, + "macd_dea": -0.3878, + "macd_histogram": 0.2711 + }, + { + "time": "2026-03-06 09:35:00", + "open": 82.0, + "high": 82.08, + "low": 80.85, + "close": 81.2, + "volume": 750844, + "ma10": 81.54, + "ma20": 81.63, + "macd_dif": -0.2765, + "macd_dea": -0.3655, + "macd_histogram": 0.178 + }, + { + "time": "2026-03-06 09:40:00", + "open": 81.2, + "high": 81.93, + "low": 80.6, + "close": 81.9, + "volume": 537768, + "ma10": 81.64, + "ma20": 81.6, + "macd_dif": -0.2366, + "macd_dea": -0.3397, + "macd_histogram": 0.2063 + }, + { + "time": "2026-03-06 09:45:00", + "open": 81.89, + "high": 81.93, + "low": 81.06, + "close": 81.27, + "volume": 362792, + "ma10": 81.64, + "ma20": 81.54, + "macd_dif": -0.2528, + "macd_dea": -0.3223, + "macd_histogram": 0.139 + }, + { + "time": "2026-03-06 09:50:00", + "open": 81.31, + "high": 81.93, + "low": 80.9, + "close": 81.86, + "volume": 363518, + "ma10": 81.67, + "ma20": 81.53, + "macd_dif": -0.2156, + "macd_dea": -0.301, + "macd_histogram": 0.1708 + }, + { + "time": "2026-03-06 09:55:00", + "open": 81.95, + "high": 82.99, + "low": 81.77, + "close": 81.77, + "volume": 448496, + "ma10": 81.72, + "ma20": 81.52, + "macd_dif": -0.1912, + "macd_dea": -0.279, + "macd_histogram": 0.1757 + }, + { + "time": "2026-03-06 10:00:00", + "open": 81.85, + "high": 82.03, + "low": 81.51, + "close": 81.64, + "volume": 266236, + "ma10": 81.74, + "ma20": 81.52, + "macd_dif": -0.1802, + "macd_dea": -0.2593, + "macd_histogram": 0.1581 + }, + { + "time": "2026-03-06 10:05:00", + "open": 81.63, + "high": 82.93, + "low": 81.41, + "close": 82.2, + "volume": 1333900, + "ma10": 81.78, + "ma20": 81.54, + "macd_dif": -0.1249, + "macd_dea": -0.2324, + "macd_histogram": 0.2149 + }, + { + "time": "2026-03-06 10:10:00", + "open": 82.2, + "high": 82.32, + "low": 81.79, + "close": 81.9, + "volume": 175850, + "ma10": 81.79, + "ma20": 81.57, + "macd_dif": -0.1041, + "macd_dea": -0.2068, + "macd_histogram": 0.2053 + }, + { + "time": "2026-03-06 10:15:00", + "open": 81.89, + "high": 82.24, + "low": 81.88, + "close": 82.01, + "volume": 146848, + "ma10": 81.78, + "ma20": 81.61, + "macd_dif": -0.0778, + "macd_dea": -0.181, + "macd_histogram": 0.2063 + }, + { + "time": "2026-03-06 10:20:00", + "open": 82.04, + "high": 82.23, + "low": 81.23, + "close": 81.51, + "volume": 230157, + "ma10": 81.73, + "ma20": 81.63, + "macd_dif": -0.0963, + "macd_dea": -0.164, + "macd_histogram": 0.1355 + }, + { + "time": "2026-03-06 10:25:00", + "open": 81.51, + "high": 81.83, + "low": 81.42, + "close": 81.72, + "volume": 126609, + "ma10": 81.78, + "ma20": 81.66, + "macd_dif": -0.0928, + "macd_dea": -0.1498, + "macd_histogram": 0.1139 + }, + { + "time": "2026-03-06 10:30:00", + "open": 81.74, + "high": 81.76, + "low": 81.26, + "close": 81.6, + "volume": 172285, + "ma10": 81.75, + "ma20": 81.69, + "macd_dif": -0.0987, + "macd_dea": -0.1396, + "macd_histogram": 0.0818 + }, + { + "time": "2026-03-06 10:35:00", + "open": 81.67, + "high": 81.82, + "low": 81.53, + "close": 81.6, + "volume": 90126, + "ma10": 81.78, + "ma20": 81.71, + "macd_dif": -0.1021, + "macd_dea": -0.1321, + "macd_histogram": 0.0599 + }, + { + "time": "2026-03-06 10:40:00", + "open": 81.59, + "high": 81.76, + "low": 81.36, + "close": 81.62, + "volume": 109826, + "ma10": 81.76, + "ma20": 81.72, + "macd_dif": -0.1021, + "macd_dea": -0.1261, + "macd_histogram": 0.048 + }, + { + "time": "2026-03-06 10:45:00", + "open": 81.57, + "high": 82.08, + "low": 81.57, + "close": 81.95, + "volume": 111090, + "ma10": 81.78, + "ma20": 81.75, + "macd_dif": -0.0745, + "macd_dea": -0.1158, + "macd_histogram": 0.0825 + }, + { + "time": "2026-03-06 10:50:00", + "open": 81.95, + "high": 82.26, + "low": 81.9, + "close": 82.06, + "volume": 106364, + "ma10": 81.82, + "ma20": 81.78, + "macd_dif": -0.0433, + "macd_dea": -0.1013, + "macd_histogram": 0.1159 + }, + { + "time": "2026-03-06 10:55:00", + "open": 82.06, + "high": 82.15, + "low": 81.8, + "close": 81.95, + "volume": 103601, + "ma10": 81.79, + "ma20": 81.79, + "macd_dif": -0.0272, + "macd_dea": -0.0864, + "macd_histogram": 0.1186 + }, + { + "time": "2026-03-06 11:00:00", + "open": 81.94, + "high": 82.37, + "low": 81.8, + "close": 82.04, + "volume": 148568, + "ma10": 81.81, + "ma20": 81.8, + "macd_dif": -0.007, + "macd_dea": -0.0706, + "macd_histogram": 0.1271 + }, + { + "time": "2026-03-06 11:05:00", + "open": 82.04, + "high": 82.3, + "low": 82.04, + "close": 82.29, + "volume": 123999, + "ma10": 81.83, + "ma20": 81.81, + "macd_dif": 0.0288, + "macd_dea": -0.0507, + "macd_histogram": 0.159 + }, + { + "time": "2026-03-06 11:10:00", + "open": 82.28, + "high": 82.5, + "low": 82.05, + "close": 82.05, + "volume": 158186, + "ma10": 81.89, + "ma20": 81.81, + "macd_dif": 0.0374, + "macd_dea": -0.0331, + "macd_histogram": 0.1409 + }, + { + "time": "2026-03-06 11:15:00", + "open": 82.2, + "high": 82.31, + "low": 82.12, + "close": 82.27, + "volume": 51312, + "ma10": 81.94, + "ma20": 81.86, + "macd_dif": 0.0612, + "macd_dea": -0.0142, + "macd_histogram": 0.1509 + }, + { + "time": "2026-03-06 11:20:00", + "open": 82.28, + "high": 82.37, + "low": 82.01, + "close": 82.02, + "volume": 68180, + "ma10": 81.98, + "ma20": 81.87, + "macd_dif": 0.0593, + "macd_dea": 0.0005, + "macd_histogram": 0.1176 + }, + { + "time": "2026-03-06 11:25:00", + "open": 82.02, + "high": 82.19, + "low": 81.99, + "close": 82.09, + "volume": 47647, + "ma10": 82.03, + "ma20": 81.91, + "macd_dif": 0.0627, + "macd_dea": 0.0129, + "macd_histogram": 0.0995 + }, + { + "time": "2026-03-06 11:30:00", + "open": 82.09, + "high": 82.12, + "low": 81.86, + "close": 81.9, + "volume": 46868, + "ma10": 82.06, + "ma20": 81.91, + "macd_dif": 0.0494, + "macd_dea": 0.0202, + "macd_histogram": 0.0584 + }, + { + "time": "2026-03-06 13:05:00", + "open": 81.96, + "high": 82.19, + "low": 81.7, + "close": 81.7, + "volume": 140266, + "ma10": 82.04, + "ma20": 81.91, + "macd_dif": 0.0225, + "macd_dea": 0.0207, + "macd_histogram": 0.0037 + }, + { + "time": "2026-03-06 13:10:00", + "open": 81.7, + "high": 82.0, + "low": 81.6, + "close": 81.9, + "volume": 59816, + "ma10": 82.02, + "ma20": 81.92, + "macd_dif": 0.0172, + "macd_dea": 0.02, + "macd_histogram": -0.0056 + }, + { + "time": "2026-03-06 13:15:00", + "open": 81.9, + "high": 82.09, + "low": 81.06, + "close": 81.22, + "volume": 216318, + "ma10": 81.95, + "ma20": 81.87, + "macd_dif": -0.0415, + "macd_dea": 0.0077, + "macd_histogram": -0.0983 + }, + { + "time": "2026-03-06 13:20:00", + "open": 81.22, + "high": 81.49, + "low": 80.66, + "close": 80.81, + "volume": 377579, + "ma10": 81.83, + "ma20": 81.82, + "macd_dif": -0.1196, + "macd_dea": -0.0178, + "macd_histogram": -0.2037 + }, + { + "time": "2026-03-06 13:25:00", + "open": 80.81, + "high": 80.97, + "low": 80.6, + "close": 80.7, + "volume": 310094, + "ma10": 81.67, + "ma20": 81.75, + "macd_dif": -0.1883, + "macd_dea": -0.0519, + "macd_histogram": -0.2728 + }, + { + "time": "2026-03-06 13:30:00", + "open": 80.69, + "high": 80.73, + "low": 80.21, + "close": 80.25, + "volume": 379736, + "ma10": 81.49, + "ma20": 81.69, + "macd_dif": -0.2758, + "macd_dea": -0.0967, + "macd_histogram": -0.3584 + }, + { + "time": "2026-03-06 13:35:00", + "open": 80.3, + "high": 80.51, + "low": 80.25, + "close": 80.41, + "volume": 197650, + "ma10": 81.3, + "ma20": 81.62, + "macd_dif": -0.3285, + "macd_dea": -0.143, + "macd_histogram": -0.371 + }, + { + "time": "2026-03-06 13:40:00", + "open": 80.4, + "high": 80.49, + "low": 80.24, + "close": 80.34, + "volume": 280074, + "ma10": 81.13, + "ma20": 81.56, + "macd_dif": -0.3716, + "macd_dea": -0.1888, + "macd_histogram": -0.3658 + }, + { + "time": "2026-03-06 13:45:00", + "open": 80.34, + "high": 80.35, + "low": 80.0, + "close": 80.09, + "volume": 310757, + "ma10": 80.93, + "ma20": 81.48, + "macd_dif": -0.4211, + "macd_dea": -0.2352, + "macd_histogram": -0.3718 + }, + { + "time": "2026-03-06 13:50:00", + "open": 80.09, + "high": 80.17, + "low": 79.87, + "close": 80.1, + "volume": 192400, + "ma10": 80.75, + "ma20": 81.41, + "macd_dif": -0.4543, + "macd_dea": -0.2791, + "macd_histogram": -0.3505 + }, + { + "time": "2026-03-06 13:55:00", + "open": 80.11, + "high": 80.33, + "low": 80.0, + "close": 80.15, + "volume": 183716, + "ma10": 80.6, + "ma20": 81.32, + "macd_dif": -0.4711, + "macd_dea": -0.3175, + "macd_histogram": -0.3073 + }, + { + "time": "2026-03-06 14:00:00", + "open": 80.17, + "high": 80.17, + "low": 79.84, + "close": 80.0, + "volume": 207592, + "ma10": 80.41, + "ma20": 81.21, + "macd_dif": -0.4909, + "macd_dea": -0.3522, + "macd_histogram": -0.2775 + }, + { + "time": "2026-03-06 14:05:00", + "open": 79.99, + "high": 80.03, + "low": 79.65, + "close": 79.73, + "volume": 339816, + "ma10": 80.26, + "ma20": 81.1, + "macd_dif": -0.5224, + "macd_dea": -0.3862, + "macd_histogram": -0.2723 + }, + { + "time": "2026-03-06 14:10:00", + "open": 79.73, + "high": 79.86, + "low": 79.63, + "close": 79.73, + "volume": 172827, + "ma10": 80.15, + "ma20": 80.99, + "macd_dif": -0.541, + "macd_dea": -0.4172, + "macd_histogram": -0.2477 + }, + { + "time": "2026-03-06 14:15:00", + "open": 79.66, + "high": 79.98, + "low": 79.53, + "close": 79.78, + "volume": 254756, + "ma10": 80.06, + "ma20": 80.86, + "macd_dif": -0.5455, + "macd_dea": -0.4428, + "macd_histogram": -0.2054 + }, + { + "time": "2026-03-06 14:20:00", + "open": 79.76, + "high": 79.84, + "low": 79.62, + "close": 79.75, + "volume": 125949, + "ma10": 80.01, + "ma20": 80.75, + "macd_dif": -0.5452, + "macd_dea": -0.4633, + "macd_histogram": -0.1638 + }, + { + "time": "2026-03-06 14:25:00", + "open": 79.76, + "high": 79.8, + "low": 79.64, + "close": 79.8, + "volume": 132693, + "ma10": 79.95, + "ma20": 80.62, + "macd_dif": -0.5348, + "macd_dea": -0.4776, + "macd_histogram": -0.1143 + }, + { + "time": "2026-03-06 14:30:00", + "open": 79.8, + "high": 79.96, + "low": 79.78, + "close": 79.82, + "volume": 72866, + "ma10": 79.89, + "ma20": 80.51, + "macd_dif": -0.5189, + "macd_dea": -0.4859, + "macd_histogram": -0.0661 + }, + { + "time": "2026-03-06 14:35:00", + "open": 79.83, + "high": 79.86, + "low": 79.61, + "close": 79.71, + "volume": 160909, + "ma10": 79.86, + "ma20": 80.39, + "macd_dif": -0.5093, + "macd_dea": -0.4906, + "macd_histogram": -0.0375 + }, + { + "time": "2026-03-06 14:40:00", + "open": 79.71, + "high": 79.79, + "low": 79.61, + "close": 79.73, + "volume": 187195, + "ma10": 79.82, + "ma20": 80.29, + "macd_dif": -0.4944, + "macd_dea": -0.4913, + "macd_histogram": -0.0062 + }, + { + "time": "2026-03-06 14:45:00", + "open": 79.73, + "high": 79.9, + "low": 79.68, + "close": 79.86, + "volume": 87620, + "ma10": 79.79, + "ma20": 80.19, + "macd_dif": -0.4667, + "macd_dea": -0.4864, + "macd_histogram": 0.0393 + }, + { + "time": "2026-03-06 14:50:00", + "open": 79.86, + "high": 79.97, + "low": 79.85, + "close": 79.9, + "volume": 105254, + "ma10": 79.78, + "ma20": 80.09, + "macd_dif": -0.4365, + "macd_dea": -0.4764, + "macd_histogram": 0.0798 + }, + { + "time": "2026-03-06 14:55:00", + "open": 79.89, + "high": 79.94, + "low": 79.76, + "close": 79.89, + "volume": 174248, + "ma10": 79.8, + "ma20": 80.03, + "macd_dif": -0.4087, + "macd_dea": -0.4629, + "macd_histogram": 0.1084 + }, + { + "time": "2026-03-06 15:00:00", + "open": 79.88, + "high": 80.0, + "low": 79.86, + "close": 79.87, + "volume": 110897, + "ma10": 79.81, + "ma20": 79.98, + "macd_dif": -0.3838, + "macd_dea": -0.4471, + "macd_histogram": 0.1265 + } + ] + } +} \ No newline at end of file diff --git a/futures-technical-analysis/futures-technical-analysis.tar.gz b/futures-technical-analysis/futures-technical-analysis.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..c1531e8ba468934c2fd82a7bac9d92a147adc4bb GIT binary patch literal 31786 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 qi6nr}SMiCdX&?4FFHYI{ohK)`{n30R0bM{H;U) literal 0 HcmV?d00001 diff --git a/futures-technical-analysis/futures_data_collector.py b/futures-technical-analysis/futures_data_collector.py new file mode 100644 index 0000000..1d53a5e --- /dev/null +++ b/futures-technical-analysis/futures_data_collector.py @@ -0,0 +1,681 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +""" +================================================================================ +期货/股票多周期数据获取与技术指标计算脚本 +================================================================================ + +【功能介绍】 +本脚本用于获取期货或股票的多周期K线数据,并自动计算技术指标,输出JSON格式, +可直接用于技术分析Skill的输入。 + +【核心功能】 +1. 多周期数据获取 + - 5分钟K线(至少50根) + - 15分钟K线(至少50根) + - 30分钟K线(至少50根) + - 60分钟K线(至少50根) + - 日K线(至少50根) + +2. 技术指标自动计算(每根K线都包含) + - MA10: 10日/周期移动平均线 + - MA20: 20日/周期移动平均线 + - MACD_DIF: MACD快线 + - MACD_DEA: MACD慢线(信号线) + - MACD_HISTOGRAM: MACD柱状图 + +3. 输出格式 + 每个周期为一个数组,数组中每项包含: + { + "time": "K线时间", + "open": 开盘价, + "high": 最高价, + "low": 最低价, + "close": 收盘价, + "volume": 成交量, + "ma10": MA10值, + "ma20": MA20值, + "macd_dif": DIF值, + "macd_dea": DEA值, + "macd_histogram": 柱状图值 + } + +【使用方法】 + +1. 安装依赖 + pip install akshare pandas + +2. 运行脚本 + # 获取期货数据(默认) + python futures_data_collector.py --symbol SN2504 --type futures + + # 获取股票数据 + python futures_data_collector.py --symbol 000001 --type stock + python futures_data_collector.py --symbol 600000 --type stock --output stock_data.json + +3. 参数说明 + --symbol: 代码(必填) + 期货格式:品种代码 + 年份 + 月份,如 SN2504(沪锡)、AG2506(沪银) + 股票格式:6位数字代码,如 000001(平安银行)、600000(浦发银行) + + --type: 数据类型(可选,默认 futures) + 可选值:futures(期货)、stock(股票) + + --output: 输出文件名(可选) + 默认格式:{代码}_{时间戳}.json + +【常见代码对照】 + 期货: + SN2504 - 沪锡(上海期货交易所) + AG2506 - 沪银(上海期货交易所) + LC2505 - 碳酸锂(广州期货交易所) + NI2505 - 沪镍(上海期货交易所) + + 股票: + 000001 - 平安银行 + 600000 - 浦发银行 + 000858 - 五粮液 + 600519 - 贵州茅台 + +【输出示例】 +{ + "symbol": "SN2504", + "current_price": 223500, + "timestamp": "2026-03-07T22:15:00+08:00", + "timeframes": { + "60min": [ + { + "time": "2026-03-07 14:00", + "open": 22100, + "high": 22300, + "low": 22050, + "close": 22250, + "volume": 12500, + "ma10": 22180.5, + "ma20": 22000.3, + "macd_dif": 0.0523, + "macd_dea": 0.0312, + "macd_histogram": 0.0422 + } + ], + "30min": [ ... ], + "15min": [ ... ], + "5min": [ ... ], + "daily": [ ... ] + } +} + +【注意事项】 +1. 数据源使用akshare,数据可能有延迟或频率限制 +2. 分钟数据受交易所限制,可能无法获取太多历史数据 +3. 如遇数据获取失败,请检查合约代码是否正确 +4. 脚本会自动过滤掉数据不足的周期 + +【作者】OpenClaw Assistant +【日期】2026-03-07 +================================================================================ +""" + +import akshare as ak +import pandas as pd +import json +import argparse +import os +from datetime import datetime, timedelta +from typing import Dict, List +import warnings +warnings.filterwarnings('ignore') +# 清除缓存 +ak.cache = {} + +# 数据目录配置 +DATA_DIR = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'data') +os.makedirs(DATA_DIR, exist_ok=True) + +def calculate_ma(df: pd.DataFrame, periods: List[int] = [10, 20]) -> pd.DataFrame: + """计算移动平均线""" + for period in periods: + df[f'MA{period}'] = df['close'].rolling(window=period, min_periods=1).mean() + return df + + +def calculate_macd(df: pd.DataFrame, fast: int = 12, slow: int = 26, signal: int = 9) -> pd.DataFrame: + """计算MACD指标""" + ema_fast = df['close'].ewm(span=fast, adjust=False).mean() + ema_slow = df['close'].ewm(span=slow, adjust=False).mean() + df['macd_dif'] = ema_fast - ema_slow + df['macd_dea'] = df['macd_dif'].ewm(span=signal, adjust=False).mean() + df['macd_histogram'] = (df['macd_dif'] - df['macd_dea']) * 2 + + # MACD信号判断 + df['macd_signal'] = df.apply(lambda row: + 'bullish' if row['macd_dif'] > row['macd_dea'] and row['macd_histogram'] > 0 + else 'bearish' if row['macd_dif'] < row['macd_dea'] and row['macd_histogram'] < 0 + else 'neutral', axis=1) + + return df + + +def get_current_time() -> datetime: + """获取当前北京时间(去除微秒)""" + return datetime.now().replace(microsecond=0) + + +def filter_future_data(df: pd.DataFrame, current_time: datetime = None) -> pd.DataFrame: + """ + 过滤掉未来数据 + + Args: + df: 包含datetime列的DataFrame + current_time: 当前时间,默认为系统当前时间 + + Returns: + 过滤后的DataFrame + """ + if current_time is None: + current_time = get_current_time() + + if 'datetime' not in df.columns: + return df + + # 确保datetime列是datetime类型 + df['datetime'] = pd.to_datetime(df['datetime']) + + # 过滤掉大于当前时间的数据(未来数据) + original_count = len(df) + df = df[df['datetime'] <= current_time].copy() + filtered_count = original_count - len(df) + + if filtered_count > 0: + print(f" 过滤了 {filtered_count} 条未来数据") + + return df + + +def extend_night_session_data(df: pd.DataFrame, symbol: str, period: str) -> pd.DataFrame: + """ + 尝试获取完整的夜盘数据 + 期货夜盘时间:21:00 - 02:30(次日) + """ + if df.empty or 'datetime' not in df.columns: + return df + + df['datetime'] = pd.to_datetime(df['datetime']) + df = df.sort_values('datetime').reset_index(drop=True) + + # 检查是否需要补充夜盘数据 + # 获取最后一条数据的时间 + last_time = df['datetime'].iloc[-1] + last_hour = last_time.hour + last_minute = last_time.minute + + # 如果最后数据在 21:00-23:59 或 00:00-02:30 范围内,可能需要补充 + # 夜盘结束时间是 02:30 + is_night_session = ( + (last_hour >= 21) or # 21:00 - 23:59 + (last_hour < 2) or # 00:00 - 01:59 + (last_hour == 2 and last_minute <= 30) # 02:00 - 02:30 + ) + + if not is_night_session: + return df + + # 检查是否包含 02:30 的数据(对于5分钟、15分钟等周期) + has_0230 = False + for dt in df['datetime']: + if dt.hour == 2 and dt.minute == 30: + has_0230 = True + break + + # 如果已经有 02:30 的数据,说明夜盘完整 + if has_0230: + return df + + # 尝试通过获取历史数据来补充夜盘 + # 由于akshare限制,我们记录警告信息 + print(f" 注意: 夜盘数据可能不完整(缺少02:30及之前的数据)") + + return df + + +def get_minute_data(symbol: str, period: str) -> pd.DataFrame: + """ + 获取期货分钟K线数据,过滤未来数据,确保夜盘完整 + + Args: + symbol: 合约代码,如 "SN2504" + period: 分钟周期,"5", "15", "30", "60" + + Returns: + DataFrame with OHLCV data + """ + try: + # 获取当前时间(用于过滤未来数据) + current_time = get_current_time() + + # 使用akshare获取分钟数据 + df = ak.futures_zh_minute_sina(symbol=symbol, period=period) + + # 重命名列 + df = df.rename(columns={ + 'day': 'datetime', + 'open': 'open', + 'high': 'high', + 'low': 'low', + 'close': 'close', + 'volume': 'volume' + }) + + # 转换数据类型 + for col in ['open', 'high', 'low', 'close', 'volume']: + df[col] = pd.to_numeric(df[col], errors='coerce') + + # 确保datetime列是datetime类型 + df['datetime'] = pd.to_datetime(df['datetime']) + + # 过滤未来数据 + df = filter_future_data(df, current_time) + + # 尝试补充夜盘数据 + df = extend_night_session_data(df, symbol, period) + + # 确保至少50根K线 + if len(df) < 50: + print(f" 警告: {period}分钟只获取到{len(df)}根K线,建议检查数据源") + + return df + + except Exception as e: + print(f" 获取{period}分钟数据失败: {e}") + return pd.DataFrame() + + +def get_daily_data(symbol: str, days: int = 60) -> pd.DataFrame: + """ + 获取期货日K线数据,过滤未来数据 + + Args: + symbol: 合约代码 + days: 获取天数 + + Returns: + DataFrame with OHLCV data + """ + try: + # 获取当前时间(用于过滤未来数据) + current_time = get_current_time() + + # 获取日K数据(获取较多历史数据) + df = ak.futures_zh_daily_sina(symbol=symbol) + + # 重命名列 + df = df.rename(columns={ + 'date': 'datetime', + 'open': 'open', + 'high': 'high', + 'low': 'low', + 'close': 'close', + 'volume': 'volume' + }) + + # 转换数据类型 + for col in ['open', 'high', 'low', 'close', 'volume']: + df[col] = pd.to_numeric(df[col], errors='coerce') + + # 排序 + df['datetime'] = pd.to_datetime(df['datetime']) + df = df.sort_values('datetime').reset_index(drop=True) + + # 过滤未来数据(只保留今天及之前的数据) + df = filter_future_data(df, current_time) + + # 取最近N天 + df = df.tail(days).reset_index(drop=True) + + return df + + except Exception as e: + print(f" 获取日K数据失败: {e}") + return pd.DataFrame() + + +def get_stock_minute_data(symbol: str, period: str) -> pd.DataFrame: + """ + 获取股票分钟K线数据 + + Args: + symbol: 股票代码,如 "000001" + period: 分钟周期,"5", "15", "30", "60" + + Returns: + DataFrame with OHLCV data + """ + try: + # 获取当前时间(用于过滤未来数据) + current_time = get_current_time() + + # 使用akshare获取股票分钟数据 + # stock_zh_a_minute 需要 symbol 格式为 sh600000 或 sz000001 + if symbol.startswith('6'): + full_symbol = f"sh{symbol}" + else: + full_symbol = f"sz{symbol}" + + df = ak.stock_zh_a_minute(symbol=full_symbol, period=period) + + # 重命名列 + df = df.rename(columns={ + 'day': 'datetime', + 'open': 'open', + 'high': 'high', + 'low': 'low', + 'close': 'close', + 'volume': 'volume' + }) + + # 转换数据类型 + for col in ['open', 'high', 'low', 'close', 'volume']: + df[col] = pd.to_numeric(df[col], errors='coerce') + + # 确保datetime列是datetime类型 + df['datetime'] = pd.to_datetime(df['datetime']) + + # 过滤未来数据 + df = filter_future_data(df, current_time) + + # 确保至少50根K线 + if len(df) < 50: + print(f" 警告: {period}分钟只获取到{len(df)}根K线,建议检查数据源") + + return df + + except Exception as e: + print(f" 获取{period}分钟数据失败: {e}") + return pd.DataFrame() + + +def get_stock_daily_data(symbol: str, days: int = 60) -> pd.DataFrame: + """ + 获取股票日K线数据 + + Args: + symbol: 股票代码,如 "000001" + days: 获取天数 + + Returns: + DataFrame with OHLCV data + """ + try: + # 获取当前时间(用于过滤未来数据) + current_time = get_current_time() + + # 计算开始日期(获取足够的历史数据) + end_date = current_time.strftime('%Y%m%d') + start_date = (current_time - timedelta(days=days*2)).strftime('%Y%m%d') + + # 获取日K数据 + df = ak.stock_zh_a_hist(symbol=symbol, period="daily", start_date=start_date, end_date=end_date) + + # 重命名列 + df = df.rename(columns={ + '日期': 'datetime', + '开盘': 'open', + '最高': 'high', + '最低': 'low', + '收盘': 'close', + '成交量': 'volume' + }) + + # 转换数据类型 + for col in ['open', 'high', 'low', 'close', 'volume']: + df[col] = pd.to_numeric(df[col], errors='coerce') + + # 排序 + df['datetime'] = pd.to_datetime(df['datetime']) + df = df.sort_values('datetime').reset_index(drop=True) + + # 过滤未来数据(只保留今天及之前的数据) + df = filter_future_data(df, current_time) + + # 取最近N天 + df = df.tail(days).reset_index(drop=True) + + return df + + except Exception as e: + print(f" 获取日K数据失败: {e}") + return pd.DataFrame() + + +def process_data(df: pd.DataFrame, timeframe: str) -> List[Dict]: + """ + 处理数据,计算指标并格式化输出 + 每个周期返回一个数组,每项包含交易数据+计算指标 + + Args: + df: K线DataFrame + timeframe: 周期名称 + + Returns: + 格式化后的K线数组,每项包含指标 + """ + if df.empty or len(df) < 10: + return [] + + # 计算技术指标 + df = calculate_ma(df) + df = calculate_macd(df) + + # 格式化K线数据(取最近50根或全部) + candles = [] + df_tail = df.tail(50) if len(df) > 50 else df + + for _, row in df_tail.iterrows(): + candle = { + "time": str(row['datetime']), + "open": round(float(row['open']), 2), + "high": round(float(row['high']), 2), + "low": round(float(row['low']), 2), + "close": round(float(row['close']), 2), + "volume": int(row['volume']) if not pd.isna(row['volume']) else 0, + "ma10": round(float(row['MA10']), 2) if not pd.isna(row.get('MA10')) else None, + "ma20": round(float(row['MA20']), 2) if not pd.isna(row.get('MA20')) else None, + "macd_dif": round(float(row['macd_dif']), 4) if not pd.isna(row.get('macd_dif')) else 0, + "macd_dea": round(float(row['macd_dea']), 4) if not pd.isna(row.get('macd_dea')) else 0, + "macd_histogram": round(float(row['macd_histogram']), 4) if not pd.isna(row.get('macd_histogram')) else 0 + } + candles.append(candle) + + return candles + + +def collect_futures_data(symbol: str) -> Dict: + """ + 收集期货多周期完整数据 + + Args: + symbol: 合约代码,如 "SN2504" + + Returns: + 完整的JSON格式数据 + """ + print(f"\n正在获取期货 {symbol} 的多周期数据...") + print(f"当前时间: {get_current_time().strftime('%Y-%m-%d %H:%M:%S')}") + print("-" * 50) + + result = { + "symbol": symbol, + "type": "futures", + "current_price": None, + "timestamp": datetime.now().strftime("%Y-%m-%dT%H:%M:%S+08:00"), + "timeframes": {} + } + + # 获取各周期数据 + periods = [ + ("60min", "60"), + ("30min", "30"), + ("15min", "15"), + ("5min", "5") + ] + + for tf_name, tf_period in periods: + print(f"获取 {tf_name} 数据...") + try: + df = get_minute_data(symbol, tf_period) + if not df.empty and len(df) >= 50: + candles = process_data(df, tf_name) + if candles: + result["timeframes"][tf_name] = candles + # 设置当前价格为最新收盘价 + if result["current_price"] is None: + result["current_price"] = candles[-1]["close"] + print(f" [OK] 成功获取 {len(candles)} 根K线") + else: + print(f" [FAIL] 数据不足或获取失败 (获取到{len(df)}根)") + except Exception as e: + print(f" [ERROR] 错误: {e}") + + # 获取日K数据 + print("获取 daily 数据...") + try: + df_daily = get_daily_data(symbol, days=60) + if not df_daily.empty and len(df_daily) >= 50: + candles = process_data(df_daily, "daily") + if candles: + result["timeframes"]["daily"] = candles + print(f" [OK] 成功获取 {len(candles)} 根K线") + else: + print(f" [FAIL] 数据不足或获取失败 (获取到{len(df_daily)}根)") + except Exception as e: + print(f" [ERROR] 错误: {e}") + + print("-" * 50) + return result + + +def collect_stock_data(symbol: str) -> Dict: + """ + 收集股票多周期完整数据 + + Args: + symbol: 股票代码,如 "000001" + + Returns: + 完整的JSON格式数据 + """ + print(f"\n正在获取股票 {symbol} 的多周期数据...") + print(f"当前时间: {get_current_time().strftime('%Y-%m-%d %H:%M:%S')}") + print("-" * 50) + + result = { + "symbol": symbol, + "type": "stock", + "current_price": None, + "timestamp": datetime.now().strftime("%Y-%m-%dT%H:%M:%S+08:00"), + "timeframes": {} + } + + # 获取各周期数据 + periods = [ + ("60min", "60"), + ("30min", "30"), + ("15min", "15"), + ("5min", "5") + ] + + for tf_name, tf_period in periods: + print(f"获取 {tf_name} 数据...") + try: + df = get_stock_minute_data(symbol, tf_period) + if not df.empty and len(df) >= 50: + candles = process_data(df, tf_name) + if candles: + result["timeframes"][tf_name] = candles + # 设置当前价格为最新收盘价 + if result["current_price"] is None: + result["current_price"] = candles[-1]["close"] + print(f" [OK] 成功获取 {len(candles)} 根K线") + else: + print(f" [FAIL] 数据不足或获取失败 (获取到{len(df)}根)") + except Exception as e: + print(f" [ERROR] 错误: {e}") + + # 获取日K数据 + print("获取 daily 数据...") + try: + df_daily = get_stock_daily_data(symbol, days=60) + if not df_daily.empty and len(df_daily) >= 50: + candles = process_data(df_daily, "daily") + if candles: + result["timeframes"]["daily"] = candles + print(f" [OK] 成功获取 {len(candles)} 根K线") + else: + print(f" [FAIL] 数据不足或获取失败 (获取到{len(df_daily)}根)") + except Exception as e: + print(f" [ERROR] 错误: {e}") + + print("-" * 50) + return result + + +def main(): + parser = argparse.ArgumentParser(description='期货/股票多周期数据获取与技术指标计算') + parser.add_argument('--symbol', type=str, required=True, + help='代码,期货如 SN2504(沪锡), 股票如 000001(平安银行)') + parser.add_argument('--type', type=str, default='futures', choices=['futures', 'stock'], + help='数据类型:futures(期货)、stock(股票),默认为 futures') + parser.add_argument('--output', type=str, default=None, + help='输出JSON文件名,默认为 代码_时间戳.json') + + args = parser.parse_args() + + # 根据类型获取数据 + if args.type == 'stock': + data = collect_stock_data(args.symbol) + else: + data = collect_futures_data(args.symbol) + + # 检查是否获取到数据 + if not data["timeframes"]: + print("\n错误: 未能获取到任何数据,请检查代码是否正确") + if args.type == 'stock': + print("常见股票代码示例:") + print(" 000001 - 平安银行") + print(" 600000 - 浦发银行") + print(" 000858 - 五粮液") + print(" 600519 - 贵州茅台") + else: + print("常见期货合约代码示例:") + print(" SN2504 - 沪锡2504") + print(" AG2506 - 沪银2506") + print(" LC2505 - 碳酸锂2505") + print(" NI2505 - 沪镍2505") + return + + # 打印JSON到控制台 + print("\n" + "="*60) + print("JSON 输出:") + print("="*60) + json_output = json.dumps(data, ensure_ascii=False, indent=2) + print(json_output) + + # 保存到文件(统一放到 data 目录) + if args.output: + # 如果用户指定了文件名,也放到 data 目录下 + filename = os.path.join(DATA_DIR, args.output) + else: + timestamp = datetime.now().strftime("%Y%m%d_%H%M%S") + filename = os.path.join(DATA_DIR, f"{data['symbol']}_{timestamp}.json") + + with open(filename, 'w', encoding='utf-8') as f: + f.write(json_output) + + print("\n" + "="*60) + print(f"[OK] 数据已保存到: {filename}") + print(f"[OK] 共获取 {len(data['timeframes'])} 个周期数据") + print("="*60) + + +if __name__ == "__main__": + main() diff --git a/futures-technical-analysis/references/kline-data-example.json b/futures-technical-analysis/references/kline-data-example.json new file mode 100644 index 0000000..8b6b61e --- /dev/null +++ b/futures-technical-analysis/references/kline-data-example.json @@ -0,0 +1,73 @@ +{ + "symbol": "沪锡2605", + "current_price": 223500, + "timestamp": "2026-01-17T14:30:00+08:00", + "timeframes": { + "60min": { + "trend": "up", + "ma10": 22350, + "ma20": 21800, + "macd_signal": "bullish", + "macd_histogram": "positive", + "volume_trend": "increasing", + "support": 21800, + "resistance": 22800, + "bollinger": { + "upper": 23000, + "middle": 22400, + "lower": 21800 + }, + "recent_high": 22850, + "recent_low": 21750, + "candles": [ + {"time": "10:00", "open": 22100, "high": 22300, "low": 22050, "close": 22250, "volume": 12500}, + {"time": "11:00", "open": 22250, "high": 22400, "low": 22150, "close": 22350, "volume": 13200}, + {"time": "13:00", "open": 22350, "high": 22500, "low": 22200, "close": 22450, "volume": 14800}, + {"time": "14:00", "open": 22450, "high": 22600, "low": 22350, "close": 22350, "volume": 11500} + ] + }, + "30min": { + "trend": "up", + "ma10": 22320, + "ma20": 22100, + "macd_signal": "bullish", + "macd_histogram": "positive", + "volume_trend": "stable", + "support": 22100, + "resistance": 22500, + "pattern": "bullish_engulfing", + "candles": [ + {"time": "13:30", "open": 22300, "high": 22380, "low": 22250, "close": 22280, "volume": 6200}, + {"time": "14:00", "open": 22280, "high": 22450, "low": 22250, "close": 22400, "volume": 7500}, + {"time": "14:30", "open": 22400, "high": 22500, "low": 22350, "close": 22350, "volume": 6800} + ] + }, + "15min": { + "trend": "sideways", + "ma5": 22360, + "ma10": 22300, + "macd_signal": "neutral", + "volume_trend": "decreasing", + "support": 22250, + "resistance": 22450, + "entry_signal": "wait", + "candles": [ + {"time": "14:15", "open": 22380, "high": 22420, "low": 22350, "close": 22380, "volume": 2800}, + {"time": "14:30", "open": 22380, "high": 22400, "low": 22320, "close": 22350, "volume": 2400}, + {"time": "14:45", "open": 22350, "high": 22380, "low": 22330, "close": 22360, "volume": 2100} + ] + } + }, + "fundamentals": { + "recent_news": "缅甸锡矿复产不及预期,供给偏紧", + "inventory_change": "库存下降5.2%", + "cost_support": 210000, + "policy_risk": "交易所上调保证金", + "demand_outlook": "新能源需求提振" + }, + "market_sentiment": { + "dominant_side": "bullish", + "divergence_level": "moderate", + "main_concern": "高位追涨风险" + } +} \ No newline at end of file diff --git a/futures-technical-analysis/references/期货交易技术分析实战手册(整合版).md b/futures-technical-analysis/references/期货交易技术分析实战手册(整合版).md new file mode 100644 index 0000000..5594829 --- /dev/null +++ b/futures-technical-analysis/references/期货交易技术分析实战手册(整合版).md @@ -0,0 +1,675 @@ +# 期货交易技术分析实战手册(整合版) + +> **文档说明**:本手册整合5份期货交易技术分析文档,涵盖支撑阻力、止跌反弹、多周期共振、滞涨回调、趋势分歧五大核心主题,提供可落地的判断方法与实操Checklist。 + +--- + +## 目录 + +1. [核心原理篇](#一核心原理篇) + - 1.1 [支撑与阻力的有效性原理](#11-支撑与阻力的有效性原理) + - 1.2 [止跌与反弹的动力学原理](#12-止跌与反弹的动力学原理) + - 1.3 [多周期共振原理](#13-多周期共振原理) + - 1.4 [滞涨与回调原理](#14-滞涨与回调原理) + - 1.5 [多空分歧识别原理](#15-多空分歧识别原理) +2. [实战方法篇](#二实战方法篇) + - 2.1 [支撑/阻力位判断方法](#21-支撑阻力位判断方法) + - 2.2 [止跌判断与反弹鉴别方法](#22-止跌判断与反弹鉴别方法) + - 2.3 [多周期共振交易法](#23-多周期共振交易法) + - 2.4 [滞涨判断与回调性质区分](#24-滞涨判断与回调性质区分) + - 2.5 [多空分歧实战分析](#25-多空分歧实战分析) +3. [实操Checklist汇总](#三实操checklist汇总) + - 3.1 [支撑/阻力有效性Checklist](#31-支撑阻力有效性checklist) + - 3.2 [止跌确认Checklist](#32-止跌确认checklist) + - 3.3 [反弹性质判断Checklist](#33-反弹性质判断checklist) + - 3.4 [多周期共振入场Checklist](#34-多周期共振入场checklist) + - 3.5 [滞涨判断Checklist](#35-滞涨判断checklist) + - 3.6 [多空分歧识别Checklist](#36-多空分歧识别checklist) +4. [交易决策流程](#四交易决策流程) +5. [避坑要点汇总](#五避坑要点汇总) + +--- + +## 一、核心原理篇 + +### 1.1 支撑与阻力的有效性原理 + +**核心逻辑**:支撑位/阻力位的有效性取决于市场资金对该价位的共识程度。单一技术面点位参考意义有限,需结合**测试次数、成交量、周期共振、基本面、突破后表现**五大维度交叉验证。 + +**有效性金字塔**: +``` + ▲ + / \ + / 强 \ 5维度共振 + / 有效 \ (测试≥3次+量价同步+多周期+基本面+回踩确认) + /────────\ + / 中等 \ 3-4维度匹配 + / 有效 \ + /──────────────\ + / 弱有效 \ 1-2维度匹配 + /────────────────────\ + / 无效/临时点位 \ 孤立点位、无量、无基本面 + ────────────────────────────── +``` + +**关键原理**: +- **测试次数原理**:价位被测试次数越多,多空双方在该价位达成的平衡越稳固,突破所需能量越大 +- **量价配合原理**:无量支撑/阻力为"虚位",量能是资金共识的具象化表现 +- **周期共振原理**:多周期点位重合形成共振效应,成为极强的关键价位 +- **基本面匹配原理**:技术点位需与成本线、政策线、供需拐点等基本面逻辑匹配才可持续 +- **转化验证原理**:突破后的回踩/反抽表现是确认有效性的最后一步 + +--- + +### 1.2 止跌与反弹的动力学原理 + +**核心逻辑**:止跌的本质是"抛压耗尽+买盘入场",需通过**量能变化、K线形态、关键支撑位、基本面**四大维度共振确认。 + +**止跌动力学链条**: +``` +下跌末期缩量 → 抛压耗尽 → 企稳K线放量 → 买盘入场 → 关键支撑守住 → 止跌确认 + ↓ ↓ ↓ ↓ ↓ + 情绪降温 空头力竭 多头介入 资金确认 技术确认 +``` + +**反弹性质区分原理**: + +| 维度 | 下跌中继(诱多) | 反转趋势(拐点) | +|------|-----------------|-----------------| +| **量能** | 反弹缩量,遇阻量能萎缩 | 持续放量,突破阻力时量能再放大 | +| **价格** | 无法突破关键阻力位,承压回落 | 放量突破关键阻力,回踩不跌破 | +| **周期** | 仅短周期反弹,长周期仍空头排列 | 多周期共振向上,均线逐步形成多头排列 | +| **基本面** | 供需格局未变,下跌驱动因素仍存在 | 基本面发生实质性变化,利好持续发酵 | +| **持续性** | 持续时间短,冲高后快速回落创新低 | 回调幅度浅,低点逐步上移 | + +--- + +### 1.3 多周期共振原理 + +**核心逻辑**: +``` +60分钟周期(定趋势) → 30分钟周期(找拐点) → 15分钟周期(择入场) + ↓ ↓ ↓ + 过滤信号方向 确认拐点有效性 精准执行入场 +``` + +**周期层级关系**: +- **日线**:主导中期趋势,定回调大方向 +- **60分钟**:衔接趋势与短期波动,确认趋势连贯性 +- **30分钟**:捕捉回调拐点,验证短期转折 +- **15/5分钟**:执行周期,精准入场与止损设置 + +**共振标准**: +- **强共振**:3个及以上周期信号同向,判断准确率≥85% +- **弱共振**:2个周期信号同向,需结合基本面验证 +- **无共振**:周期信号矛盾,以最大周期为准或观望 + +--- + +### 1.4 滞涨与回调原理 + +**核心逻辑**:滞涨的本质是上涨动能衰竭,通过**成交量(资金动能)、K线(价格表现)、MACD(动能量化)**三大维度共振判断。 + +**滞涨识别原理**: +``` +价格创新高/微涨 + ↓ +量能显著萎缩 或 放量但价格不涨(抛压显现) + ↓ +上涨节奏骤降,高点上移乏力 + ↓ +MACD红柱缩短或顶背离 + ↓ +滞涨确认(至少2个维度达标,3个维度达标确认度≥80%) +``` + +**回调性质区分原理**: + +| 维度 | 洗盘(短期调整) | 反转(趋势结束) | +|------|-----------------|-----------------| +| **成交量** | 缩量下跌,较滞涨期萎缩≥30%,无资金出逃 | 放量下跌,越跌量越大,主力砸盘 | +| **K线** | 小阴小阳交替,无大阴线破位 | 大阴线连拉,出现阴包阳、跳空低开破位 | +| **MACD** | 红柱小幅缩短,未翻绿、无明确死叉 | 红柱快速消失并翻绿,绿柱持续放大,死叉明确 | +| **支撑位** | 不跌破短期支撑位(MA10/MA20) | 有效跌破中期支撑位(MA60) | +| **周期** | 大周期保持强势,小周期短期调整 | 大周期率先走弱,小周期同步利空 | + +--- + +### 1.5 多空分歧识别原理 + +**核心逻辑**:多空分歧本质是资金博弈加剧、多空观点对立的表现,核心特征为**"量能放大但价格无明确方向"**,是趋势延续或反转的关键预判节点。 + +**分歧识别五维度**: +1. **成交量维度**:价格创新高/新低但量能放大、涨幅/跌幅收窄(量价背离) +2. **K线形态维度**:长上影/长下影线交替,十字星密集,反转组合出现 +3. **技术指标维度**:MACD背离,KDJ钝化后反复交叉,均线纠缠 +4. **盘口与持仓维度**:主力持仓双增,大单异动,持仓量增幅大但价格波动小 +5. **基本面维度**:多空消息交织,市场对消息解读分歧 + +**分歧强度分级**: +- **轻度分歧(3-4项信号)**:大概率震荡整理,趋势放缓 +- **中度分歧(5-6项信号)**:反转概率提升,警惕关键位破位 +- **重度分歧(7项及以上)**:博弈白热化,价格即将选方向,建议观望 + +--- + +## 二、实战方法篇 + +### 2.1 支撑/阻力位判断方法 + +#### 2.1.1 五维度判断法(按优先级排序) + +| 维度 | 有效特征 | 无效特征 | +|------|---------|---------| +| **1. 测试次数** | 价位被3次及以上测试,回踩不破或反弹不过 | 仅1-2次测试,临时情绪驱动 | +| **2. 成交量** | 缩量企稳/放量突破,量价同步 | 无量支撑/阻力,或放量但无法企稳/突破 | +| **3. 周期共振** | 多周期点位重合(如5分钟+15分钟+1小时) | 仅单一短周期出现,无共振 | +| **4. 基本面** | 契合成本线、政策底线、供需拐点 | 与基本面背离(如产能过剩下的技术支撑) | +| **5. 突破后表现** | 突破后回踩/反抽确认(阻力变支撑不跌破,支撑变阻力不突破) | 突破后快速回撤,无成交量配合 | + +#### 2.1.2 关键位判断方法 + +**1. 量能密集区定位(核心)** +关键位是前期大量成交的价格区间,而非单一高低点。 +- 支撑位:前期密集成交区下沿 +- 阻力位:前期密集成交区上沿/套牢盘集中区 + +**2. 枢轴点辅助测算** +``` +枢轴点(PP)=(高+低+收)/3 +一级支撑(S1)= 2×PP - 高 +二级支撑(S2)= PP -(高-低) +一级压力(R1)= 2×PP - 低 +二级压力(R2)= PP +(高-低) +``` + +**3. 均线与前期高低点共振** +- 短期均线(MA5/MA10):即时压力/支撑 +- 长期均线(MA20/MA60)与前期高低点形成共振,强化关键位有效性 + +#### 2.1.3 日内交易 vs 波段交易要点 + +| 场景 | 核心周期 | 关键要点 | +|------|---------|---------| +| **日内交易** | 5分钟+15分钟+1小时 | 避开1分钟孤立点位,重点关注波动高峰期(10:00-11:30、14:00-15:00)的点位测试情况 | +| **波段交易** | 日线+周线+4小时 | 绑定成本线、库存拐点等基本面逻辑,不迷信纯技术面点位 | + +--- + +### 2.2 止跌判断与反弹鉴别方法 + +#### 2.2.1 止跌判断四大维度 + +| 维度 | 核心信号 | 实操验证要点 | +|------|---------|-------------| +| **量能变化** | 下跌末期缩量,企稳时放量 | 1. 下跌末端成交量持续萎缩;2. 企稳K线成交量≥前3根K线平均量能的1.5倍;3. 日内聚焦5/15分钟周期"缩量下跌→放量企稳"信号 | +| **K线形态** | 反转类K线+底部组合结构 | 1. 单根:锤子线(下影线≥实体2倍)、看涨吞没、刺透形态;2. 组合:双底、启明之星;3. 排除十字星、小阳线等无力度形态 | +| **关键支撑位** | 支撑位回踩不破+量价配合 | 1. 回踩前期低点、成本线、均线支撑缩量企稳;2. 假跌破后快速拉回且放量收复为强信号;3. 支撑需满足"测试≥3次、多周期共振" | +| **基本面/消息面** | 利空出尽或突发实质性利好 | 1. 驱动下跌的利空已充分消化;2. 出现政策托底、需求回暖、库存大降等利好;3. 无消息面配合的纯技术止跌大概率为短期震荡 | + +#### 2.2.2 止跌确认必要条件(满足≥3项可试仓) + +- [ ] 下跌末端缩量,企稳K线放量(量能达标) +- [ ] 出现至少1种反转类K线或底部组合形态 +- [ ] 关键支撑位回踩不破,或假跌破后快速收复 +- [ ] 无新利空干扰,或有基本面利好加持 +- [ ] 5/15分钟短周期与1小时中周期同步出现企稳信号 + +#### 2.2.3 反弹强度分级 + +| 反弹强度 | 量价特征 | 幅度/持续时间 | 实战意义 | +|---------|---------|--------------|---------| +| **弱反弹** | 缩量上涨,反弹量能<前期下跌量能 | 幅度≤前期跌幅30%;日内1-2根5分钟K线,波段1个交易日 | 大概率为下跌中继,反弹后易再创新低,坚决不抄底 | +| **中反弹** | 温和放量,反弹量能≈前期下跌量能 | 幅度达30%-50%;突破1个次要阻力位 | 需观察关键阻力位表现,警惕冲高回落,不可重仓 | +| **强反弹** | 持续放量,反弹量能>前期下跌量能1.5倍 | 幅度>50%;连续突破多个阻力位 | 反转概率大幅提升,需进一步验证趋势延续性 | + +--- + +### 2.3 多周期共振交易法 + +#### 2.3.1 三周期核查体系 + +**60分钟周期(主导周期:定方向,过滤信号)** + +| 看涨趋势核查 | 看跌趋势核查 | +|-------------|-------------| +| □ MA10>MA20,价格站稳MA10上方,回调不跌破 | □ MA10<MA20,价格跌破MA10下方,反弹不突破 | +| □ MACD在零轴上方运行,红柱持续/温和放大 | □ MACD在零轴下方运行,绿柱持续/温和放大 | +| □ 量价同步:上涨放量、回调缩量,无缩量新高 | □ 量价同步:下跌放量、反弹缩量,无缩量新低 | +| □ 布林带中轨向上倾斜,价格在中轨上方震荡 | □ 布林带中轨向下倾斜,价格在中轨下方震荡 | + +*注:若以上仅满足≤2项,判定为趋势不明,直接放弃交易* + +**30分钟周期(辅助周期:确认拐点,验证趋势)** + +| 看涨拐点核查 | 看跌拐点核查 | +|-------------|-------------| +| □ 出现阳包阴、启明星等反转K线组合 | □ 出现阴包阳、黄昏星等反转K线组合 | +| □ 突破前期小高点,且突破时放量 | □ 跌破前期小低点,且跌破时放量 | +| □ MACD零轴上金叉,或死叉后快速金叉 | □ MACD零轴下死叉,或金叉后快速死叉 | +| □ 布林带价格突破中轨,回踩不跌破 | □ 布林带价格跌破中轨,反弹不突破 | + +*注:需与60分钟趋势方向一致,若信号矛盾判定为无效拐点* + +**15分钟周期(执行周期:精准入场,设置止损)** + +| 做多入场信号核查 | 做空入场信号核查 | +|-----------------|-----------------| +| □ 突破30分钟确认的拐点压力位 | □ 跌破30分钟确认的拐点支撑位 | +| □ 突破时成交量≥前5根K线均量1.5倍 | □ 跌破时成交量≥前5根K线均量1.5倍 | +| □ MACD红柱同步放大,无顶背离 | □ MACD绿柱同步放大,无底背离 | +| □ 回踩缩量,且不跌破15分钟MA5 | □ 反弹缩量,且不突破15分钟MA5 | +| □ 止损位设置:入场K线低点下方5-10个点 | □ 止损位设置:入场K线高点上方5-10个点 | + +#### 2.3.2 风险与信号有效性补充核查 + +| 核查项目 | 核查要点 | 结果 | +|---------|---------|------| +| 信号一致性 | 三周期信号无矛盾,趋势方向统一 | □ | +| 规避假突破 | 非脉冲式放量,突破后3根K线不回踩关键位 | □ | +| 消息面风险 | 无突发政策、数据发布(发布前后15分钟暂停交易) | □ | +| 资金管理 | 单笔仓位≤10%,止损≤账户1%-2% | □ | + +#### 2.3.3 入场/离场决策规则 + +| 情况 | 判定标准 | 操作建议 | +|------|---------|---------| +| **可入场** | 60分钟≥3项√ + 30分钟≥3项√ + 15分钟≥4项√ + 补充核查全√ | 满足共振条件,按计划入场 | +| **谨慎入场** | 总√数7-8项,且无核心信号缺失(如量能、趋势项) | 可轻仓(≤5%)试错 | +| **禁止入场** | 总√数≤6项,或存在信号矛盾、假突破、消息面风险 | 直接观望 | +| **强制离场** | 触发止损位;60分钟趋势拐头(如MA10拐向);临近收盘前30分钟 | 无论盈亏平仓 | + +--- + +### 2.4 滞涨判断与回调性质区分 + +#### 2.4.1 滞涨判断三大维度(按优先级) + +| 维度 | 核心特征(可量化) | 30分钟级 | 60分钟级 | 日线级 | +|------|-----------------|---------|---------|--------| +| **成交量(资金核心)** | 价格创新高/微涨,但量能显著萎缩;或放量但价格涨不动 | 量能较近期峰值萎缩≥30%,或放量但1-2根K线涨不足1% | 量能较峰值萎缩≥40%,或放量滞涨(成交量达近期平均1.2倍+,K线涨不动) | 量能较峰值萎缩≥50%,或放量滞涨(单日成交量达近期平均1.5倍+,收盘价未创新高) | +| **K线(价格直观)** | 上涨节奏骤降,高点上移乏力,出现顶部特征K线 | 2-3根小阳/十字星交替,高点持平,回落幅度不超5个点 | 出现乌云盖顶、阴包阳,连续3根K线未突破前高 | 连续2-3交易日收小阳/十字星/小阴,高点持平,出现墓碑线、黄昏星 | +| **MACD(动能辅助)** | 红柱持续缩短,或与价格形成顶背离 | 红柱较峰值缩短≥30%,未出现死叉 | 红柱较峰值缩短≥50%,DIFF开始走平,可出现轻微顶背离 | 红柱较峰值缩短≥50%,顶背离持续2个交易日+,红柱可开始翻绿 | + +#### 2.4.2 回调性质对比(洗盘 vs 反转) + +| 维度 | 洗盘(短期调整,趋势延续) | 反转(趋势结束,进入下跌) | +|------|--------------------------|--------------------------| +| **成交量** | 缩量下跌!较滞涨期量能萎缩≥30%,越跌量越小,无资金主动出逃 | 放量下跌!下跌过程中量能持续放大,越跌量越大,主力砸盘 | +| **K线形态** | 小阴小阳交替下跌,无大阴线破位,偶有十字星,不破短期支撑位 | 大阴线连拉,出现阴包阳、跳空低开等破位K线,有效跌破中期支撑位 | +| **MACD指标** | 红柱小幅缩短,未翻绿、无明确死叉,指标仅从超买区小幅回落 | 红柱快速消失并翻绿,绿柱持续放大,出现明确死叉,顶背离信号延续 | +| **支撑位** | 收盘价始终站在10/20日均线上方 | 有效跌破60日均线(中期支撑),收盘价站在支撑下方 | +| **周期共振** | 日线保持强势,60/30分钟出现短期调整信号,调整后快速共振回升 | 日线率先走弱,60/30分钟同步出现利空信号,三者持续共振走弱 | + +#### 2.4.3 多周期共振判断步骤 + +``` +第一步:看日线(定方向) + ↓ 核对日线的成交量、K线、MACD是否符合洗盘/反转特征 + ↓ 明确中期回调大方向 + +第二步:看60分钟(找衔接) + ↓ 核对60分钟三大维度信号 + ↓ 确认是否与日线方向一致 + +第三步:看30分钟(抓拐点) + ↓ 核对30分钟三大维度信号 + ↓ 确认是否与日线、60分钟方向一致 + +第四步:确认共振级别 + ↓ 2个周期同向 = 初步确认 + ↓ 3个周期同向 = 最终确认 + ↓ 结合基本面验证,制定交易策略 +``` + +#### 2.4.4 滞涨后交易决策 + +| 场景 | 信号特征 | 操作建议 | +|------|---------|---------| +| **滞涨信号初现** | 1个维度达标 | 观望为主,不加减仓,重点跟踪另外两个维度 | +| **滞涨信号共振** | 2-3个维度达标 | 轻仓/大幅减仓(30分钟级减20%,60分钟级减30%-50%,日线级减50%-70%),仅留极小底仓,不新开多单 | +| **确认洗盘** | 三大维度符合洗盘特征(缩量+无破位+MACD未翻绿) | 在短期支撑位附近低吸回补仓位,止损位设为支撑位下方3%-5% | +| **确认反转** | 三大维度符合反转特征(放量下跌+K线破位+MACD翻绿死叉) | 清仓所有多单,可轻仓试空,止损位设为跌破的支撑位上方3%-5%,坚决不抄底 | + +--- + +### 2.5 多空分歧实战分析 + +#### 2.5.1 多空分歧五维度识别 + +| 维度 | 分歧信号特征 | +|------|-------------| +| **成交量** | 价格创新高/新低但量能放大、涨幅/跌幅收窄;或巨量阴线/阳线后无延续 | +| **K线形态** | 长上影/长下影线交替(影线长度超实体2倍);十字星/纺锤线密集(3根及以上);反转组合出现;跳空缺口当日回补 | +| **技术指标** | MACD顶/底背离;KDJ超买/超卖区内反复交叉;均线纠缠(MA5/MA10与MA20间距<1%) | +| **盘口持仓** | 主力持仓双增(多空均大幅增仓);大单异动(频繁大单扫货后砸盘);持仓量增幅超20%但价格波动<2% | +| **基本面** | 多空消息交织;重要政策/数据发布后价格无明显趋势性波动 | + +#### 2.5.2 分歧强度分级与操作 + +| 级别 | 信号数量 | 概率判断 | 操作建议 | +|------|---------|---------|---------| +| **轻度分歧** | 3-4项 | 大概率震荡整理,趋势放缓 | 仓位控制在50%以内,不追涨杀跌 | +| **中度分歧** | 5-6项 | 反转概率提升,警惕关键位破位 | 仓位控制在30%以内,突破关键位后顺势跟进 | +| **重度分歧** | 7项及以上 | 博弈白热化,价格即将选方向 | 建议观望,等待方向明确 | + +#### 2.5.3 关键位突破有效性验证 + +| 验证维度 | 有效突破(压力位) | 有效跌破(支撑位) | +|---------|------------------|------------------| +| **量能验证** | 突破时量能≥前5日均量1.5倍,分布均匀 | 跌破时量能放大,跌幅超3%,恐慌盘信号明确 | +| **时间验证** | 突破后3个日线周期不回踩,缩量企稳于压力位上方 | 跌破后3个日线周期不反弹,缩量横盘确认 | +| **多周期验证** | 日线突破+60分钟布林带中轨突破+MACD红柱放大 | 日线跌破+60分钟布林带下轨突破+MACD绿柱拉长 | +| **测试次数验证** | 连续测试3-4次后突破,压力位强度衰减 | 连续测试3-4次后跌破,支撑位强度衰减 | + +--- + +## 三、实操Checklist汇总 + +### 3.1 支撑/阻力有效性Checklist + +**适用场景**:盘中快速核对支撑/阻力位是否有效,满足≥4项可确认有效性,≤2项需放弃该点位参考。 + +| 序号 | 核查项 | 结果 | +|------|--------|------| +| 1 | □ 测试次数≥3次,且每次测试后均出现反向走势(支撑回踩反弹,阻力反弹回落) | □ | +| 2 | □ 测试/突破时量价同步(缩量企稳/放量突破,无无量虚动情况) | □ | +| 3 | □ 至少2个时间周期点位重合(如日内5分钟+1小时,波段4小时+日线) | □ | +| 4 | □ 贴合基本面逻辑(对应成本、供需、政策,无基本面背离) | □ | +| 5 | □ 突破后回踩/反抽确认成功(阻力变支撑不跌破,支撑变阻力不突破) | □ | +| 6 | □ 品种流动性充足(主力合约,成交量稳居前列,无低成交波动) | □ | +| 7 | □ 无突发消息干扰(点位非临时消息驱动,可持续性强) | □ | + +**统计**:共____项√,判定:□有效(≥4项) □可疑(3项) □无效(≤2项) + +--- + +### 3.2 止跌确认Checklist + +**适用场景**:快速下跌后判断是否有效止跌,满足≥3项可试仓。 + +| 序号 | 核查项 | 结果 | +|------|--------|------| +| 1 | □ 下跌末端缩量,企稳K线量能≥前3根平均量能1.5倍 | □ | +| 2 | □ 出现锤子线/阳包阴/启明之星等反转形态 | □ | +| 3 | □ 关键支撑位回踩不破,或假跌破后快速收复 | □ | +| 4 | □ 无新利空,或有基本面利好加持 | □ | +| 5 | □ 短周期(5/15分钟)与中周期(1小时)同步企稳 | □ | + +**统计**:共____项√,判定:□可试仓(≥3项) □观望(<3项) + +--- + +### 3.3 反弹性质判断Checklist + +**适用场景**:止跌后判断反弹性质,左侧≥3项为下跌中继,右侧≥3项为反转趋势。 + +**下跌中继反弹** | **反转趋势反弹** +---|--- +□ 反弹缩量,遇阻量能萎缩 | □ 持续放量,突破阻力时量能放大 +□ 无法突破关键阻力位,承压回落 | □ 突破阻力后回踩不跌破,阻力变支撑 +□ 仅短周期反弹,长周期仍空头 | □ 多周期共振向上,均线逐步多头排列 +□ 基本面无改善,下跌驱动仍在 | □ 基本面利好持续发酵,供需格局改变 +□ 反弹持续时间短,快速回落创新低 | □ 反弹持续久,回调浅,低点上移 + +**统计**:下跌中继____项√,反转趋势____项√,判定:□下跌中继 □反转趋势 □待定 + +--- + +### 3.4 多周期共振入场Checklist + +**适用场景**:日内交易多周期共振核查,满足≥8项√且无矛盾信号方可入场。 + +**60分钟周期(定趋势)** + +| 方向 | 核查项 | 结果 | +|------|--------|------| +| 看涨 | □ MA10>MA20,价格站稳MA10上方,回调不跌破 | □ | +| 看涨 | □ MACD在零轴上方运行,红柱持续/温和放大 | □ | +| 看涨 | □ 量价同步:上涨放量、回调缩量,无缩量新高 | □ | +| 看涨 | □ 布林带中轨向上倾斜,价格在中轨上方震荡 | □ | +| 看跌 | □ MA10<MA20,价格跌破MA10下方,反弹不突破 | □ | +| 看跌 | □ MACD在零轴下方运行,绿柱持续/温和放大 | □ | +| 看跌 | □ 量价同步:下跌放量、反弹缩量,无缩量新低 | □ | +| 看跌 | □ 布林带中轨向下倾斜,价格在中轨下方震荡 | □ | + +**30分钟周期(找拐点)** + +| 方向 | 核查项 | 结果 | +|------|--------|------| +| 看涨 | □ 出现阳包阴、启明星等反转K线组合 | □ | +| 看涨 | □ 突破前期小高点,且突破时放量 | □ | +| 看涨 | □ MACD零轴上金叉,或死叉后快速金叉 | □ | +| 看涨 | □ 布林带价格突破中轨,回踩不跌破 | □ | +| 看跌 | □ 出现阴包阳、黄昏星等反转K线组合 | □ | +| 看跌 | □ 跌破前期小低点,且跌破时放量 | □ | +| 看跌 | □ MACD零轴下死叉,或金叉后快速死叉 | □ | +| 看跌 | □ 布林带价格跌破中轨,反弹不突破 | □ | + +**15分钟周期(择入场)** + +| 方向 | 核查项 | 结果 | +|------|--------|------| +| 做多 | □ 突破30分钟确认的拐点压力位 | □ | +| 做多 | □ 突破时成交量≥前5根K线均量1.5倍 | □ | +| 做多 | □ MACD红柱同步放大,无顶背离 | □ | +| 做多 | □ 回踩缩量,且不跌破15分钟MA5 | □ | +| 做多 | □ 止损位设置:入场K线低点下方5-10个点 | □ | +| 做空 | □ 跌破30分钟确认的拐点支撑位 | □ | +| 做空 | □ 跌破时成交量≥前5根K线均量1.5倍 | □ | +| 做空 | □ MACD绿柱同步放大,无底背离 | □ | +| 做空 | □ 反弹缩量,且不突破15分钟MA5 | □ | +| 做空 | □ 止损位设置:入场K线高点上方5-10个点 | □ | + +**补充核查** + +| 核查项 | 结果 | +|--------|------| +| □ 三周期信号无矛盾,趋势方向统一 | □ | +| □ 非脉冲式放量,突破后3根K线不回踩关键位 | □ | +| □ 无突发政策、数据发布 | □ | +| □ 单笔仓位≤10%,止损≤账户1%-2% | □ | + +**统计**:共____项√,判定:□可入场(≥8项) □谨慎入场(7-8项) □禁止入场(≤6项) + +--- + +### 3.5 滞涨判断Checklist + +**适用场景**:快速上涨后判断滞涨及回调性质。 + +**滞涨判断(三大维度)** + +| 维度 | 核查项 | 结果 | +|------|--------|------| +| 成交量 | □ 对应当前周期(30/60分钟/日线),量能萎缩达标,或出现放量滞涨信号 | □ | +| K线 | □ 出现对应周期的顶部K线/组合,高点上移乏力,回落幅度匹配周期特征 | □ | +| MACD | □ 红柱缩短达标,或出现对应周期的顶背离,无明显动能回升信号 | □ | +| 周期 | □ 明确当前周期,区分信号级别(日线>60分钟>30分钟) | □ | +| 共振 | □ 至少2项核对项达标,3项全达标时滞涨确认度≥80% | □ | + +**回调性质判断(洗盘 vs 反转)** + +| 维度 | 洗盘特征 | 反转特征 | +|------|---------|---------| +| 成交量 | □ 缩量下跌,较滞涨期萎缩≥30% | □ 放量下跌,越跌量越大 | +| K线形态 | □ 小阴小阳交替,无大阴线破位 | □ 大阴线连拉,出现阴包阳、跳空低开 | +| MACD | □ 红柱小幅缩短,未翻绿、无明确死叉 | □ 红柱快速消失并翻绿,绿柱持续放大 | +| 支撑位 | □ 不跌破短期支撑位(MA10/MA20) | □ 有效跌破中期支撑位(MA60) | +| 周期 | □ 大周期保持强势,小周期短期调整 | □ 大周期率先走弱,小周期同步利空 | + +**统计**:洗盘____项√,反转____项√,判定:□洗盘(≥3项) □反转(≥3项) □待定 + +--- + +### 3.6 多空分歧识别Checklist + +**适用场景**:判断多空分歧强度,满足3项及以上判定为分歧加剧。 + +| 维度 | 核心核查项 | 分歧信号 | +|------|-----------|---------| +| **成交量** | □ 价格创新高/低,量能放大但涨/跌幅收窄 | □ | +| **成交量** | □ 日内量价波动剧烈(幅度超5%) | □ | +| **成交量** | □ 量放50%+但未突破关键位 | □ | +| **K线形态** | □ 连续长影线(接近实体2倍) | □ | +| **K线形态** | □ 出现反转K线组合 | □ | +| **技术指标** | □ MACD顶/底背离 | □ | +| **技术指标** | □ KDJ极端区间反复交叉 | □ | +| **盘口持仓** | □ 盘口大单异动、反复博弈 | □ | +| **基本面** | □ 多空消息交织 | □ | + +**统计**:共____项√,判定:□轻度分歧(3-4项) □中度分歧(5-6项) □重度分歧(7项+) + +--- + +## 四、交易决策流程 + +### 4.1 完整交易决策流程图 + +``` +┌─────────────────────────────────────────────────────────────────┐ +│ 交易决策流程 │ +└─────────────────────────────────────────────────────────────────┘ + │ + ▼ +┌─────────────────────────────────────────────────────────────────┐ +│ 第一步:趋势判断(60分钟周期) │ +│ • MA10/MA20排列方向 │ +│ • MACD零轴位置 │ +│ • 量价同步性 │ +└─────────────────────────────────────────────────────────────────┘ + │ + ┌───────────────┴───────────────┐ + │ │ + ▼ ▼ + ┌─────────────┐ ┌─────────────┐ + │ 趋势不明 │ │ 趋势明确 │ + │(≤2项达标) │ │(≥3项达标) │ + └─────────────┘ └──────┬──────┘ + │ │ + ▼ ▼ + ┌─────────────┐ ┌─────────────┐ + │ 放弃交易 │ │ 第二步:拐点确认(30分钟) │ + └─────────────┘ │ • 反转K线形态 │ + │ • 突破/跌破有效性 │ + │ • MACD金叉/死叉 │ + └──────┬──────┘ + │ + ┌──────────────┴──────────────┐ + │ │ + ▼ ▼ + ┌─────────────┐ ┌─────────────┐ + │ 拐点无效 │ │ 拐点有效 │ + │(与60分钟矛盾)│ │(与60分钟一致)│ + └─────────────┘ └──────┬──────┘ + │ │ + ▼ ▼ + ┌─────────────┐ ┌─────────────┐ + │ 观望等待 │ │ 第三步:入场执行(15分钟) │ + └─────────────┘ │ • 突破确认 │ + │ • 量能验证(≥1.5倍) │ + │ • 设置止损(入场K线±5-10点)│ + └──────┬──────┘ + │ + ▼ + ┌─────────────┐ + │ 持仓管理 │ + │ • 跟踪止盈 │ + │ • 触发止损 │ + │ • 收盘前平仓 │ + └─────────────┘ +``` + +### 4.2 关键决策节点速查表 + +| 决策节点 | 判定标准 | 通过 | 不通过 | +|---------|---------|------|--------| +| **趋势过滤** | 60分钟≥3项√ | 进入拐点确认 | 放弃交易 | +| **拐点确认** | 30分钟≥3项√且与60分钟同向 | 进入入场执行 | 观望等待 | +| **入场确认** | 15分钟≥4项√ + 补充核查全√ | 按计划入场 | 禁止入场 | +| **离场确认** | 触发止损/止盈或60分钟拐头 | 立即平仓 | 继续持有 | + +--- + +## 五、避坑要点汇总 + +### 5.1 通用避坑要点 + +1. **不单一依赖某一维度** + - 仅看K线(如单根墓碑线)、仅看MACD(如红柱缩短),极易误判 + - 必须结合成交量(资金核心)共振确认 + +2. **不忽视周期联动** + - 日线级出现滞涨/反转信号,即使60分钟/30分钟级有反弹信号,也以日线为主,优先减仓 + +3. **不强行共振** + - 若某一周期信号与其他周期矛盾(如日线洗盘,60分钟反转),不算共振,以日线为准,观望等待信号统一 + +4. **不混淆信号强度** + - 日线信号强度 > 60分钟 > 30分钟 + - 不可因30分钟共振反转,忽视日线强势信号,盲目做空 + +5. **不扛单** + - 日线级反转信号共振(放量+破位+MACD死叉),立即清仓 + - 期货带杠杆,扛单会放大亏损 + +### 5.2 分场景避坑要点 + +| 场景 | 避坑要点 | +|------|---------| +| **支撑/阻力交易** | 仅在主力合约(高流动性)中运用支撑/阻力分析;远月合约、低成交量品种的点位无资金验证,参考价值极低 | +| **止跌抄底** | 快速下跌后第一次反弹,80%为下跌中继;建议等待"二次回踩支撑不破+放量拉升"再入场 | +| **多周期共振** | 不背离大趋势交易;高波动品种需等待5+15+60分钟多周期共振确认,不依赖单一周期信号 | +| **滞涨回调** | 不忽视量能共振;多周期共振的核心是成交量共振,无成交量共振,仅K线+MACD共振,准确率大幅降低 | +| **多空分歧** | 分歧期忌追涨杀跌,仓位控制在30%以内;价格突破关键位且量能验证后,顺势跟进 | + +### 5.3 品种特性避坑 + +| 品种类型 | 代表品种 | 注意事项 | +|---------|---------|---------| +| **高波动品种** | 沪锡、沪银、碳酸锂 | 假止跌、假突破信号频发,需多周期共振确认;严格设置止损 | +| **中波动品种** | 燃料油、集运欧线 | 受地缘与供需影响,警惕政策调控风险 | +| **低波动品种** | 甲醇、沪镍 | 适合趋势跟踪,结合产业基本面操作 | + +--- + +## 附录:核心公式与参数 + +### A.1 枢轴点计算公式 +``` +枢轴点(PP)=(高+低+收)/3 +一级支撑(S1)= 2×PP - 高 +二级支撑(S2)= PP -(高-低) +一级压力(R1)= 2×PP - 低 +二级压力(R2)= PP +(高-低) +``` + +### A.2 量能计算标准 +``` +企稳放量标准:企稳K线成交量 ≥ 前3根K线平均量能 × 1.5 +突破放量标准:突破时成交量 ≥ 前5根K线均量 × 1.5 +缩量标准:回调量能较峰值萎缩 ≥ 30%(洗盘特征) +``` + +### A.3 止损设置标准 +``` +日内交易止损:入场K线低点/高点下方/上方 5-10个点 +波段交易止损:支撑位/阻力位下方/上方 3%-5% +资金风控止损:单笔止损 ≤ 账户资金的 1%-2% +``` + +### A.4 仓位管理标准 +``` +正常仓位:单笔仓位 ≤ 10% +试错仓位:≤ 5% +分歧期仓位:≤ 30% +``` + +--- + +**重要提示**:本文档内容仅为技术分析实操参考,不构成任何投资建议。期货交易风险极高,需结合自身风险承受能力,搭配科学止损策略使用,谨慎操作。 + +--- + +*文档整合完成日期:2026年3月7日* +*整合来源:5份期货交易技术分析实战文档*