AgentStack
SKILL verified MIT Self-run

Forex Market Analysis

skill-lzh-xbccz-hermes-finance-forex-market-analysis · by Lzh-xbccz

外汇货币对与美元指数八维分析。利率路径与美元方向定大局,1-7维先形成主判断,第8维用CZSC缠论确认/冲突/不足,结构锚定止盈止损。

No reviews yet
0 installs
2 views
0.0% view→install

Install

$ agentstack add skill-lzh-xbccz-hermes-finance-forex-market-analysis

✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access Used
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets No
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

Are you the author of Forex Market Analysis? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

外汇货币对日内交易全流程

> ⛔ 铁律:你不是在写行情播报,你是在做证据审计。每个方向判断必须回答"为什么",并先做反向审计。允许使用"证据不足"、"方向未确认"、"观望";禁止在证据冲突时硬给做多/做空。

> 核心理念:利率路径与美元方向定大局,结构位定执行。 > 外汇的核心在利率预期、央行政策路径、美元强弱和风险偏好,不在链上或资金费率。


> ⛔ 禁止调用 mcp_yfinance 系列工具:Yahoo Finance 频繁 429。所有数据通过 scripts/ 目录下的 fetch 脚本获取(内置延迟+重试)。模型不要额外调 mcp_yfinance_get_historical_stock_prices 等 MCP 工具。

一、铁律(不可违反)

1. 先判断是否有方向优势

  • 输出只能是 🟢 做多 / 🔴 做空 / ⚪ 观望,但默认不是强行二选一。
  • 方向由你基于各维度证据的逻辑强度和可靠性综合判断得出,不要用投票计数或权重打分决定方向。
  • 判断不出方向、数据窗口临近、美元与对手货币驱动冲突时,必须输出 ⚪ 观望。
  • 方向针对用户给的交易对本身,不是对某个货币的主观看法。

2. 止盈止损必须锚定客观技术结构

  • ✅ 允许参考的结构:前高/前低(独立摆点)、形态颈线、趋势线交点、斐波那契回撤位、密集成交区上沿/下沿、EMA21/EMA55
  • 禁止使用:24h 最高/最低点、今日开盘价、「跌 2% 就走」等固定百分比、任何以时间为边界而非结构为边界的价位
  • 每一个 SL/TP 价位必须在报告中标注「结构依据」——具体说明这是哪个结构、什么时候形成的

3. 止损幅度由结构决定

  • 做多止损:放在最近关键结构低点下方 0.2%-0.3%
  • 做空止损:放在最近关键结构高点上方 0.2%-0.3%
  • 止损幅度不由百分比决定(但如果结构决定的幅度超过账户风控上限,需特别标注风险,建议减小仓位而非放宽止损)
  • 外汇波动较加密小,SL 缓冲可适当收窄至 0.15%-0.25%,但必须以结构位为准

4. 必须带失效条件

  • 至少 2 个明确的「不等止损、立即手动平仓」的条件
  • 失效条件必须是客观可观察的(4H K 线收盘、DXY 突破关键位、央行/宏观消息驱动转向等)

5. 数据缺口必须降级处理

  • 报告开头必须标注分析时间(UTC)
  • 技术结构、主导力量(央行/利率)、交叉验证三项里只要缺 1 项,默认降级为 ⚪ 观望
  • 新闻、情绪等非关键块缺失时,可继续分析,但必须明确写出「数据缺口」
  • 若 Yahoo Finance / Google News 返回 429、4xx、空数据,先减少请求并复用已拉取数据;仍失败则停止补抓,绝不编造
  • 若处于周末或美国节假日,美股/DXY 现货数据默认视为上一交易日参考,不得当作实时盘中联动
  • 重大数据公布前 30 分钟,自动降级为观望

6. 先复盘轨迹,再谈方向

  • 每做一个货币对,必须先看它最近 30D 4H 是怎么走出来的,再看当前截面
  • 必须回答:这个货币对最近更像 趋势推进 / 箱体洗盘 / 冲高派发 / 跌破回收 / 阴跌磨人 里的哪一种
  • 如果你连最近主导手法都说不清,就不能把当前波动解读为高置信度机会

7. 分清货币对分子分母

  • 始终明确货币对的 numerator / denominator 方向
  • 做多 EURUSD = 看涨欧元、看跌美元;做空 USDJPY = 看跌美元、看涨日元
  • 不要把「美元走强」的宏观判断直接等同于「做多 USDXXX」

8. 央行与宏观事件优先

  • 外汇的核心驱动是利率路径和央行政策
  • 若当前处在央行决议窗口(前 48h 内或后 24h 内),宏观权重大于技术面
  • 若结构与利率/美元方向冲突,优先服从利率/美元方向

9. 禁止用固定止损距离

  • 外汇波动率因货币对而异:GBPUSD 日均波动远大于 EURUSD,USDCNH 有管理波动
  • 止损必须以各货币对自身结构位为准,不可统一套用「30 pips」「50 pips」

10. 仓位公式固定

  • 仓位 = risk_amount / |entry - SL|
  • 不可用其他公式代替
  • 需要换算合约单位时在报告中注明

二、八维分析框架

| # | 维度 | 核心关注 | 外汇对应项 | |---|------|---------|-----------| | 1 | 📈 技术结构 | K线趋势、支撑阻力、形态识别 | 多周期结构、波段节奏 | | 2 | ⛓️ 利差与美元结构 | 利差预期、DXY关系、避险/风险偏好结构 | 替代链上数据 | | 3 | 🏦 主导力量 | 央行路径、收益率差、政策预期 | 替代 OI/资金费率 | | 4 | 😱 情绪面 | VIX、避险流、risk-on/risk-off | 替代恐惧贪婪指数 | | 5 | 🌍 宏观基本面 | CPI、NFP、GDP、PMI、央行会议、地缘 | 权重高于技术面 | | 6 | 🔍 交叉验证 | DXY、美债收益率、相关交叉盘、黄金/原油 | 替代多交易所验证 | | 7 | 📊 仓位/CFTC | 杠杆基金、资产管理、美元指数持仓 | 外汇市场专属增强 | | 8 | 🧭 缠论结构 | CZSC 中枢、笔、背驰、买卖点候补 | 只做确认/冲突/不足 |

强制输出规则

  1. 先给 各维度证据,只基于第 1-7 维逐项列出每个维度的偏多/偏空/中性/缺失状态及理由。不要用投票计数或权重打分决定方向。
  2. 必须做 反向审计:若美元、利差、央行路径或风险情绪与技术方向冲突,最终方向降级为观望。
  3. 再给 缠论确认,说明 CZSC 是确认、冲突还是不足。
  4. 最终方向由你基于各维度证据的逻辑强度综合判断后决定,不能由缠论单独决定;与利率/央行路径冲突时必须降级。
  5. 使用 python3 -m hermes_finance analyze forex 或 MCP analyze_forex,默认会尽量用采集器 K 线跑 CZSC。

维度详解

📈 技术面
  • 趋势定义:higher highs + higher lows = 上升趋势(至少 2 组);lower highs + lower lows = 下降趋势
  • 均线系统:EMA21/EMA55 多空排列,4H 与 1H 共振时信号最强
  • 关键形态:双顶/双底、头肩顶/底、上升/下降三角形、旗形/三角旗、W 底 / M 顶
  • 量价关系:外汇无集中交易所成交量,Yahoo Finance 成交量仅作弱代理,不单独作为执行依据
⛓️ 市场结构(外汇版)
  • 利差预期:通过 ^TNX(10Y)/ ^FVX(5Y)利差变化判断美元吸引力
  • 美元指数:DXY 直接影响所有 USD 对手货币对方向
  • 避险结构:VIX > 30 → 日元/瑞郎走强;VIX 30 = 恐慌(利好避险货币)
  • 避险流:股市大跌 → JPY/CHF 走强,AUD/NZD 走弱
  • Fear & Greed(Alternative.me,仅作弱参考)
🌍 宏观基本面
  • 核心数据:NFP、CPI、GDP、PMI、零售销售、央行利率决议
  • 事件驱动:FOMC 会议纪要、央行行长讲话、地缘事件
  • 权重规则:央行决议窗口期宏观权重 > 60%;日常 > 30%
🔍 交叉验证
  • DXY:所有 USD 对手盘的背景板
  • 美债收益率^TNX(10Y)和 ^FVX(5Y)
  • 相关交叉盘:做 EURUSD 时看 GBPUSD、USDCHF
  • 关联资产:黄金(XAUUSD,避险)、原油(通胀预期)
  • 利差对标:2Y 和 10Y 美债利差作为衰退/加息预期代理

三、决策流程(从数据到方向)

第零步:复盘这个货币对最近的走势(决定值不值得做)

三层复盘窗口:

90D 日线轮廓 → 看大环境(央行路径变化痕迹)
30D 4H 轨迹 → 看主导手法(这个货币对平时怎么走)
24H 1H 节奏 → 看今天是在延续、回踩还是诱多/诱空

常见走势手法分类:

  • 趋势推进:higher highs + higher lows,回调浅,沿均线运行
  • 箱体洗盘:长时间区间震荡,上下插针多,真假突破反复出现
  • 冲高派发:急拉后高位横盘,长上影增多,然后回落
  • 跌破回收:先破关键位触发止损,再快速收回区间内部
  • 阴跌磨人:lower highs 持续,反弹弱,量能难以跟上

执行规则:

  • 今天的判断必须和最近 30D 4H 主导手法对照,说明当前是延续还是反着来
  • 若今天的短线信号和最近主导手法明显冲突,优先怀疑是假突破/假跌破
  • 若 DXY 与货币对方向背离,优先服从 DXY 方向(美元是最大单一驱动)

第一步:判断趋势结构(决定能不能做)

多周期确认(自上而下):

日线趋势 → 4H 结构 → 1H 入场点

趋势定义(最客观的标准):

  • 上升趋势 = higher highs + higher lows(至少 2 组)
  • 下降趋势 = lower highs + lower lows(至少 2 组)
  • 震荡 = 无明显高/低点序列,价格在区间内

关键问题:最近一个结构摆点是 higher low 还是 lower high?

  • 如果最近是 higher low → 上升结构未破坏 → 只考虑做多
  • 如果最近是 lower high → 下降结构未破坏 → 只考虑做空
  • 如果结构模糊 → 观望

第二步:判断主导力量(央行/利率/美元方向)

这是外汇八维中第 3 维最重要的维度。按货币对优先级不同:

| 货币对 | 第一驱动 | 第二驱动 | 第三驱动 | |--------|---------|---------|---------| | EURUSD | Fed vs ECB 路径差 | DXY | 美德利差 | | USDJPY | 美债收益率 | BOJ 政策 / 干预风险 | 风险偏好 | | GBPUSD | 英国通胀 / BOE 路径 | 美元方向 | 脱欧/政治风险 | | AUDUSD | 中国 + 全球风险偏好 | 大宗商品 | 美元 / RBA | | USDCNH | 中美利差 | PBOC 管理 | 风险事件 | | DXY | Fed 路径 | 全球风险偏好 | 对手货币(EUR为主) |

主导力量判断矩阵:

| 条件 | 信号 | 操作 | |------|------|------| | DXY ↗ + 10Y ↗ + Fed 鹰派 | 🟢 美元走强 | USDXXX 做多 / XXXUSD 做空 | | DXY ↘ + 10Y ↘ + Fed 鸽派 | 🔴 美元走弱 | USDXXX 做空 / XXXUSD 做多 | | DXY ↗ + VIX ↗ | 🟡 避险 + 美元强 | USDJPY 承压(日元更强),AUDUSD 承压 | | DXY ↘ + VIX ↘ | 🟢 risk-on | AUDUSD/GBPUSD 走强 | | 央行路径分歧大 | 🟡 | 按利差方向 + 结构确认 |

第三步:量价验证(决定时机对不对)

  • 外汇无集中成交量,Yahoo Finance 成交量仅作弱参考
  • 主要看价格行为:突破是否坚决、回踩是否缩量(参考 tick volume 或跳动量)
  • 关键 K 线形态:长上影/下影、吞没、pin bar、inside bar
  • 若在关键央行事件前后,量价验证权重降低,宏观因子权重提高

第四步:精算止盈止损位

做多场景:

SL  = 最近结构低点 × (1 - 0.25%)   ← 必须是独立的4H/1H摆低点
TP1 = 最近的结构阻力              ← 前高、趋势线上轨、形态颈线
TP2 = 下一级结构阻力              ← 更远的独立结构峰
TP3 = 形态理论目标                ← 旗杆高度投影、斐波那契延伸

做空场景:

SL  = 最近结构高点 × (1 + 0.25%)
TP1 = 最近的结构支撑
TP2 = 下一级结构支撑
TP3 = 形态理论目标

移动止损:

  • 到 TP1 → 移损至开仓价
  • 到 TP2 → 移损至 TP1
  • 创新高/低 → 跟踪最近 2 根 4H K 线的结构摆点

仓位计算:

仓位 = risk_amount / |entry - SL|
以 $10,000 账户 2% 风险为例:$200 / |entry - SL| = 可开仓位

四、数据采集(按顺序执行以下数据块)

⚠️ 强制规则:一键脚本采集(禁止手动 curl Yahoo)

# 一键采集(内置429重试+并行)
python3 /root/.hermes/skills/research/forex-market-analysis/scripts/forex_fetch.py EURUSD --compact
# 替换为: EURUSD / USDJPY / GBPUSD / AUDUSD / USDCHF / USDCNH / DXY

宏观数据(TNX/DXY/VIX)通过 fetch 脚本获取,禁止调 mcp_yfinance。


**❌ 绝对禁止直接 curl Yahoo Finance API。下面的代码块仅作参考文档,不要复制执行。**

### 块 0:执行前检查 ⚠️ 必做

> 先确认分析时间和货币对。标的都没对齐,后面的数据越多越危险。

```bash
# 记录分析时间(报告中必须回填)
date -u '+分析时间(UTC): %Y-%m-%d %H:%M'

# 解析并确认货币对
echo "确认货币对: 用户输入 → 标准化为 [EURUSD / USDJPY / GBPUSD / AUDUSD / USDCHF / USDCNH / DXY]"

执行规则:

  • 如果货币对不在支持列表中,停止分析并要求确认
  • 日内结构优先使用 Yahoo Finance 1H 真实 OHLC;聚合采样价格只可用于宏观轮廓,不可直接拿来卡精确止损
  • 一次分析尽量复用同一批响应,避免 Yahoo Finance 频率限制
  • 如果当前价格已经贴近最近主阻力/主支撑,导致首个止盈空间过小、盈亏比低于 1.5,则不追价,等待回踩/反抽或直接观望
  • 重大宏观数据公布前 30 分钟内,自动降级为观望

块 1:实时报价 + 30日历史(Yahoo Finance)

> 外汇对使用 Yahoo Finance 的 FX 代码。注意:EURUSD → EURUSD=X,USDJPY → JPY=X,GBPUSD → GBPUSD=X,AUDUSD → AUDUSD=X,USDCNH → CNH=X,DXY → DX-Y.NYB

# === 实时报价(最新价格 + 变动)===
# 替换 PAIR=X 为实际货币对代码
curl -s -H "User-Agent: Mozilla/5.0" "https://query1.finance.yahoo.com/v8/finance/chart/PAIR=X?interval=1d&range=5d" | python3 -c "
import json, sys
from datetime import datetime, timezone
d = json.load(sys.stdin)['chart']['result'][0]
meta = d['meta']
quotes = d['indicators']['quote'][0]
idx = d['timestamp']
print('=== 实时报价 ===')
prev = meta.get('chartPreviousClose', 0)
cur = meta.get('regularMarketPrice', 0)
chg = (cur - prev) / prev * 100 if prev else 0
print(f'当前价: {cur:.5f}')
print(f'前收盘: {prev:.5f}')
print(f'变动: {chg:+.3f}%')
print(f'交易所: {meta.get(\"exchangeName\", \"?\")}')
print(f'货币: {meta.get(\"currency\", \"?\")}')
print()
print('=== 近5日收盘 ===')
for i in range(len(idx)):
    dt = datetime.fromtimestamp(idx[i], tz=timezone.utc).strftime('%m-%d')
    o = quotes['open'][i]
    c = quotes['close'][i]
    h = quotes['high'][i]
    l = quotes['low'][i]
    chg_d = (c - o) / o * 100 if o else 0
    emoji = '🟢' if chg_d >= 0 else '🔴'
    print(f'{dt} {emoji} O:{o:.5f} H:{h:.5f} L:{l:.5f} C:{c:.5f} 涨跌:{chg_d:+.3f}%')
"

# === 30日历史(日线,用于轮廓判断)===
curl -s -H "User-Agent: Mozilla/5.0" "https://query1.finance.yahoo.com/v8/finance/chart/PAIR=X?interval=1d&range=1mo" | python3 -c "
import json, sys
from datetime import datetime, timezone
d = json.load(sys.stdin)['chart']['result'][0]
quotes = d['indicators']['quote'][0]
idx = d['timestamp']
print('=== 30日价格走势 ===')
closes = []
for i in range(len(idx)):
    dt = datetime.fromtimestamp(idx[i], tz=timezone.utc).strftime('%m-%d')
    o = quotes['open'][i]
    h = quotes['high'][i]
    l = quotes['low'][i]
    c = quotes['close'][i]
    closes.append(c)
    v = quotes['volume'][i] if quotes.get('volume') and i = 0 else '🔴'
    print(f'{dt} {emoji} O:{o:.5f} H:{h:.5f} L:{l:.5f} C:{c:.5f} vol:{v:,.0f}')
if len(closes) >= 2:
    chg_30 = (closes[-1] / closes[0] - 1) * 100 if closes[0] else 0
    hi_30 = max(closes)
    lo_30 = min(closes)
    print(f'30日涨跌: {chg_30:+.3f}% | 区间高: {hi_30:.5f} | 区间低: {lo_30:.5f}')
"

块 1.2:30日 4H 轨迹复盘 ⚠️ 必做

> 不要只看当前一屏数据。先复盘这个货币对近 30D 4H 的主轨迹,再决定今天看到的是延续、洗盘还是陷阱。 > Yahoo Finance 没有原生 4H,需要用 1H 数据聚合。

# === 30日 4H 轨迹复盘(从 1H 聚合) ===
curl -s -H "User-Agent: Mozilla/5.0" "https://query1.finance.yahoo.com/v8/finance/chart/PAIR=X?interval=1h&range=1mo" | python3 -c "
import json, sys
from datetime import datetime, timezone
d = json.load(sys.stdin)['chart']['result'][0]
quotes = d['indicators']['quote'][0]
idx = d['timestamp']

# 聚合 1H 到 4H
rows = []
for i in range(len(idx)):
    o = quotes['open'][i]
    h = quotes['high'][i]
    l = quotes['low'][i]
    c = quotes['close'][i]
    v = quotes['volume'][i] if quotes.get('volume') and i  agg[i-1]['h'] and agg[i]['h'] > agg[i-2]['h'] and agg[i]['h'] > agg[i+1]['h'] and agg[i]['h'] > agg[i+2]['h']:
        ph.append(agg[i])
    if agg[i]['l'] = 0.5 or rng >= 0.8:
        events.append((abs(body), body, rng, r))

print('大波动K线(帮助识别急拉/急砸/洗盘):')
for _, body, rng, r in sorted(events, reverse=True)[:6]:
    dt = datetime.fromtimestamp(r['t'], tz=timezone.utc).strftime('%m-%d %H:%M')
    print(f'  {dt} body:{body:+.3f}% range:{rng:.3f}% O:{r[\"o\"]:.5f} C:{r[\"c\"]:.5f}')
"

# === 90日 日线轮廓(大环境)===
curl -s -H "User-Agent: Mozilla/5.0" "https://query1.finance.yahoo.com/v8/finance/chart/PAIR=X?interval=1d&range=3mo" | python3 -c "
import json, sys
d = json.load(sys.stdin)['chart']['result'][0]
quotes = d['indicators']['quote'][0]
idx = d['timestamp']
closes = [quotes['close'][i] for i in range(len(idx)) if quotes['close'][i] is not None]
if len(closes) = 20 else 0
    chg_7 = (closes[-1] / closes[-7] - 1) * 100 if len(closes) >= 7 else 0
    print('=== 🗺️ 90日 日线轮廓 ===')
    print(f'90日涨跌: {chg_90:+.3f}%')
    print(f'20日涨跌: {chg_20:+.3f}%')
    print(f'7日涨跌: {chg_7:+.3f}%')
    print(f'90日高: {max(closes):.5f} | 90日低: {min(closes):.5f}')
"

复盘后必须输出:

  • 最近 30D 4H 主导手法是什么
  • 最近 2-3 次关键动作是什么(急拉、急跌、假突破、回收、派发)
  • 今天看到的信号属于 延续 / 回踩 / 诱多 / 诱空 / 纯噪音

块 1.5:4H/1H 真实蜡烛 ⚠️ 日内交易者必看

> 日内交易要看真实 OHLC。Yahoo Finance 1H 数据直接提供 OHLC,不需聚合即可用于 1H 结构判断。4H 从 1H 聚合。

# === 1H K线(精确日内级别,Yahoo Finance) ===
curl -s -H "User-Agent: Mozilla/5.0" "https://query1.finance.yahoo.com/v8/finance/chart/PAIR=X?interval=1h&range=5d" | python3 -c "
import json, sys
from datetime import datetime, timezone
d = json.load(sys.stdin)['chart']['result'][0]
quotes = d['indicators']['quote'][0]
idx = d['timestamp']
print('=== 📊 1H K线(近5日,最近24根)===')
count = 0
for i in range(len(idx)):
    o = quotes['open'][i]
    h = quotes['high'][i]
    l = quotes['low'][i]
    c = quotes['close'][i]
    if o is None or h is None or l is None or c is None:
        continue
    count += 1
rows_total = count
shown = 0
for i in range(max(0, len(idx) - 24), len(idx)):
    o = quotes['open'][i]
    h = quotes['high'][i]
    l = quotes['low'][i]
    c = quotes['close'][i]
    if o is None or h is None or l is None or c is None:
        continue
    dt = datetime.fromtimestamp(idx[i], tz=timezone.utc).strftime('%m-%d %H:%M')
    color = '🟢' if c >= o else '🔴'
    body_pct = abs(c - o) / o * 100 if o else 0
    wick_up = (h - max(o, c)) / o * 100 if o else 0
    wick_down = (min(o, c) - l) / o * 100 if o else 0
    print(f'{dt} {color} O:{o:.5f} H:{h:.5f} L:{l:.5f} C:{c:.5f} | 实体:{body_pct:.3f}% 上影:{wick_up:.3f}% 下影:{wick_down:.3f}%')
    shown += 1
print(f'显示 {shown}/{rows_total} 根K线')
"

# === 4H K线(从1H聚合,用于趋势+形态识别) ===
curl -s -H "User-Agent: Mozilla/5.0" "https://query1.finance.yahoo.com/v8/finance/chart/PAIR=X?interval=1h&range=10d" | python3 -c "
import json, sys
from datetime import datetime, timezone
d = json.load(sys.stdin)['chart']['result'][0]
quotes = d['indicators']['quote'][0]
idx = d['timestamp']

rows = []
for i in range(len(idx)):
    o = quotes['open'][i]
    h = quotes['high'][i]
    l = quotes['low'][i]
    c = quotes['close'][i]
    if o is not None and h is not None and l is not None and c is not None:
        rows.append({'t': idx[i], 'o': o, 'h': h, 'l': l, 'c': c})

agg = []
for i in range(0, len(rows) - 3, 4):
    chunk = rows[i:i+4]
    agg.append({
        't': chunk[0]['t'],
        'o': chunk[0]['o'],
        'h': max(x['h'] for x in chunk),
        'l': min(x['l'] for x in chunk),
        'c': chunk[-1]['c'],
    })

print('=== 📊 4H K线(从1H聚合,近10日,最近20根)===')
for r in agg[-20:]:
    dt = datetime.fromtimestamp(r['t'], tz=timezone.utc).strftime('%m-%d %H:%M')
    color = '🟢' if r['c'] >= r['o'] else '🔴'
    body_pct = abs(r['c'] - r['o']) / r['o'] * 100 if r['o'] else 0
    wick_up = (r['h'] - max(r['o'], r['c'])) / r['o'] * 100 if r['o'] else 0
    wick_down = (min(r['o'], r['c']) - r['l']) / r['o'] * 100 if r['o'] else 0
    print(f'{dt} {color} O:{r[\"o\"]:.5f} H:{r[\"h\"]:.5f} L:{r[\"l\"]:.5f} C:{r[\"c\"]:.5f} | 实体:{body_pct:.3f}% 上影:{wick_up:.3f}% 下影:{wick_down:.3f}%')
"

块 2:市场结构(DXY、收益率、利差)⚠️ 必查

> DXY 是美元对一篮子货币的加权指数,是所有 USD 货币对的背景板。^TNX(10Y)和 ^FVX(5Y)反映美债收益率。

# === DXY 美元指数(近5日 + 实时) ===
curl -s -H "User-Agent: Mozilla/5.0" "https://query1.finance.yahoo.com/v8/finance/chart/DX-Y.NYB?interval=1d&range=5d" | python3 -c "
import json, sys
from datetime import datetime, timezone
d = json.load(sys.stdin)['chart']['result'][0]
meta = d['meta']
quotes = d['indicators']['quote'][0]
idx = d['timestamp']
prev = meta.get('chartPreviousClose', 0)
cur = meta.get('regularMarketPrice', 0)
print('=== 💵 DXY 美元指数 ===')
print(f'当前: {cur:.3f} | 前收: {prev:.3f} | 变动: {(cur-prev)/prev*100:+.3f}%' if prev else f'当前: {cur:.3f}')
if cur > 105:
    print('状态: 🟢 美元强势 (>105)')
elif cur > 100:
    print('状态: 🟡 美元中性 (100-105)')
else:
    print('状态: 🔴 美元弱势 (=0 else '🔴'
    print(f'{dt} {emoji} O:{o:.3f} C:{c:.3f} {chg:+.3f}%')
"

# === 10Y 美债收益率 (^TNX) ===
curl -s -H "User-Agent: Mozilla/5.0" "https://query1.finance.yahoo.com/v8/finance/chart/%5ETNX?interval=1d&range=5d" | python3 -c "
import json, sys
from datetime import datetime, timezone
d = json.load(sys.stdin)['chart']['result'][0]
meta = d['meta']
quotes = d['indicators']['quote'][0]
idx = d['timestamp']
prev = meta.get('chartPreviousClose', 0)
cur = meta.get('regularMarketPrice', 0)
print('=== 📈 10Y 美债收益率 (^TNX) ===')
print(f'当前: {cur:.3f}% | 前收: {prev:.3f}% | 变动: {cur-prev:+.3f} bp' if prev else f'当前: {cur:.3f}%')
if cur > 4.5:
    print('状态: 🟢 高收益率 → 美元吸引力强')
elif cur > 3.5:
    print('状态: 🟡 中等收益率')
else:
    print('状态: 🔴 低收益率 → 美元吸引力弱')
print()
print('近5日:')
for i in range(len(idx)):
    dt = datetime.fromtimestamp(idx[i], tz=timezone.utc).strftime('%m-%d')
    o = quotes['open'][i]
    c = quotes['close'][i]
    chg = c - o if o else 0
    emoji = '🟢' if chg>=0 else '🔴'
    print(f'{dt} {emoji} O:{o:.3f}% C:{c:.3f}% {chg:+.3f}bp')
"

# === 5Y 美债收益率 (^FVX) ===
curl -s -H "User-Agent: Mozilla/5.0" "https://query1.finance.yahoo.com/v8/finance/chart/%5EFVX?interval=1d&range=5d" | python3 -c "
import json, sys
d = json.load(sys.stdin)['chart']['result'][0]
meta = d['meta']
prev = meta.get('chartPreviousClose', 0)
cur = meta.get('regularMarketPrice', 0)
print('=== 📈 5Y 美债收益率 (^FVX) ===')
print(f'当前: {cur:.3f}% | 前收: {prev:.3f}% | 变动: {cur-prev:+.3f} bp' if prev else f'当前: {cur:.3f}%')
# 2s10s 利差判断(简化:10Y - 5Y 近似)
spread = cur - prev if prev else 0
if cur  4.5:
    print('状态: 利率预期偏鹰')
"

# === 利差概览(10Y - 2Y 代理 = ^TNX - ^FVX 作为弱近似) ===
curl -s

…

## Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

- **Author:** [Lzh-xbccz](https://github.com/Lzh-xbccz)
- **Source:** [Lzh-xbccz/hermes-finance](https://github.com/Lzh-xbccz/hermes-finance)
- **License:** MIT

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet — be the first.

Versions

  • v0.1.0 Imported from the upstream source.