Install
$ agentstack add skill-lzh-xbccz-hermes-finance-forex-market-analysis ✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.
Security review
✓ PassedNo 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.
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-7 维逐项列出每个维度的偏多/偏空/中性/缺失状态及理由。不要用投票计数或权重打分决定方向。 - 必须做
反向审计:若美元、利差、央行路径或风险情绪与技术方向冲突,最终方向降级为观望。 - 再给
缠论确认,说明 CZSC 是确认、冲突还是不足。 - 最终方向由你基于各维度证据的逻辑强度综合判断后决定,不能由缠论单独决定;与利率/央行路径冲突时必须降级。
- 使用
python3 -m hermes_finance analyze forex或 MCPanalyze_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.
Write a review
Versions
- v0.1.0 Imported from the upstream source.