intraday-signal
Single-symbol, short-horizon technical read across 5 分钟 / 15 分钟 / 1 小时—
produces an explicit long/short call anchored to a price, a probability-weighted
forward read, and a concrete entry/stop/target plan, backed by server-side
auto-detected K-line signals (MACD divergence/背驰, candle patterns such as
Pin Bar, 123 structures). Ends by rendering an interactive dashboard and
writing a journal entry.
Scope: one symbol per run. For a cross-section "where is money moving"
question use capital-rotation; for live tracking of a watchlist across a
session use market-session-tracker; this skill is the deep single-symbol
drill-down when the user wants a concrete short-term trade read.
When to use
- "MU 短线怎么走", "这里能不能做多/做空", "给我一个短线入场点"
- "5分钟15分钟1小时怎么看", "MACD 有没有背离", "这是不是 Pin Bar"
- "盈亏比多少", "入场点在哪", "止损止盈怎么设"
- Not for a broad market/sector scan (
capital-rotation)
- Not for live multi-symbol session monitoring (
market-session-tracker)
- Not for weeks/months-horizon swing entries (
sepa-strategy)
Workflow
Step 1 — Resolve the symbol
If ambiguous (e.g. a company name with multiple listings), ask back rather than guessing.
Step 2 — Tiered grounding context
The chart server pulls the three timeframes of K-line itself (5m/15m/1h × 1000
bars) — no manual longbridge kline calls needed. Multi-source grounding is
tiered so runs stay fast — pull the "always" tier every run, judge the rest by
the day's tape:
- Always, before anything else: read
journal/lessons.md — the distilled
lesson list from past post-mortems. Every rule there was paid for with a real
loss; the read you're about to write must not repeat one. If a lesson applies
to today's setup, say so explicitly in the report(如"止损已避开 1000 关口
扎堆区,参照 lessons 2026-07-06").
- Always, check first:
twitter-reader — X is the fastest tape on breaking
news and sentiment; on an intraday horizon its lead time over aggregated feeds
is exactly the window that matters. Search the symbol, read the last few hours.
X sentiment is an input, not a conclusion — form the price-structure read in
Step 3 independently, then reconcile; don't go hunting the chart for evidence
of whatever narrative X planted. If the twitter-reader skill is not
available in the current session, don't silently skip it: write "X 未查"
into the report/context.sources_used, and treat the 催化日/平静日 call as
provisional(longbridge-news 有延迟,"还没看到新闻"不等于"没有新闻").
- Always: event risk(财报 + 宏观时刻表). Two calls, no manual hunting:
longbridge finance-calendar report --symbol <SYM>.US --format json(下一个
财报日;若返回为空再退回 news / X / IR 并注明未确认)and
longbridge finance-calendar macrodata --market US --star 3 --start <today> --end <horizon-end> --format json(横跨持仓周期的重要宏观发布,带前值/预测;
时间为 ET——CPI/非农 8:30, 多数数据 10:00, FOMC 决议 14:00 + 记者会 14:30). Any
hard event inside the trade horizon must appear in the scenarios — a stop
cannot protect you through a gap(跳空开盘直接越过止损价,实际亏损可远大于计划).
- Always: market alignment(大盘/板块对齐). One call:
longbridge quote SPY.US QQQ.US <sector-ETF>.US(如半导体 SMH、软件 IGV).
State whether the intended direction is with or against today's index/sector
tape; trading against it is allowed but must be justified in one line.
- Always: volume check.
GET /api/symbols/<SYM>/relvol(服务端已算好的
相对成交量——当前量相对同时段常态量的倍数)+ longbridge capital <SYM>.US --format json(triple-bucket flow). Breakouts and reversals without volume
are suspects, not signals; cite relvol when calling any breakout real.
- Always:
longbridge-news on the symbol — official/aggregated headlines.
It lags X by minutes to hours, so treat it as confirmation and source-anchoring
for what X surfaced, not as the breaking-news feed; its item timestamps are
publish times, not event times. The chart server also auto-attaches raw
headlines to the sidebar's news list, but that's unclassified — the AI must
still read and tag them for context.
- Always: options levels(期权关键价位). One call:
python3 .claude/skills/options-levels/scripts/levels.py <SYM> — 现价附近
最近两个到期日的高持仓行权价(磁铁位/止损扎堆区)+ 全链 put/call 比。
上方高持仓 call 位 ≈ 上行磁铁与压力,下方高持仓 put 位 ≈ 支撑墙;这些
价位直接约束 Step 4 的止损与目标摆放(见 entry plan 规则)。CBOE 不覆盖
的标的(无期权)注明"期权 N/A"即可。
- On-demand (judge by the day's tape, don't run every time):
trump-truth-monitor
(policy-sensitive days), sec-edgar (filing/insider leads), gdelt / fred
(macro event days).
- Whatever was actually pulled goes into
context.sources_used (Step 4).
- Housekeeping, pulled as needed regardless of tiering: the user's live position
via
longbridge positions --format json if they hold this symbol, and account
size via longbridge portfolio --format json (needed for position sizing in
Step 4 — never ask the user, read the broker).
Step 3 — Preview: read the technicals
Check the chart server is up (curl -s http://localhost:1792/api/health; if
down: pnpm start at the repo root in the background), then POST a preview (no
prediction):
curl -s -X POST http://localhost:1792/api/charts \
-H 'Content-Type: application/json' \
-d '{"type":"intraday","symbol":"<SYM>.US","name":"..."}'
Only add a "position": {"shares": N, "cost": X} field when longbridge positions shows a real holding in this symbol — never a placeholder; a
fabricated position renders a bogus 持仓视角 card on the dashboard.
The response's data.technicals gives, per timeframe: the latest DIF/DEA/HIST,
the session VWAP(last_vwap,当日成交量加权均价——日内机构衡量贵贱的基准线,
m5/m15 有值), the last ~6 swing highs/lows, the most recent 金叉/死叉
(last_cross), any
auto-detected divergence_candidates / beichi_candidates, and pattern_123 —
auto-detected 123 reversal structures (①extreme → ②reaction pivot → ③higher-low /
lower-high), each with status (forming = trigger not yet broken, confirmed =
close broke the ② trigger), trigger, and invalidation prices. A forming
pattern_123 is a ready-made entry setup: entry at the ② trigger break, stop
beyond ① (all confirmed pivots only — the chart itself also draws these
automatically, in both preview and final render).
The response also carries meta.day_context(日线背景与日内参照位,服务端自动算):
daily_trend(up/down/range,日线收盘对 MA20/MA50 的位置)、daily_ma20/daily_ma50、
high_20d/low_20d(近 20 个交易日高低)、prev_day(昨日高/低/收)、
pre_market(今日盘前高低)、opening_range(开盘前 30 分钟区间)、vwap。
meta 还带 options_levels(期权墙——服务端拉 CBOE 自动算,与 Step 2 的
options-levels 脚本同源同口径,preview 里有值时 Step 2 的脚本调用可省)和
event_risk(下次财报日 + 近 3 天重要宏观发布——同样可替代 Step 2 的
finance-calendar 调用);两者都会渲染到页面(期权墙画线 + 事件风险卡)。
先读 day_context 再读三个周期——1 小时的"趋势"可能只是日线大区间里的一段震荡;
h1 方向与 daily_trend 相反时必须在报告里写明这是逆日线的判断。这些参照位
也画在图上("日内参照位"图层)。
Read these numbers — don't guess MACD direction from eyeballing candles.
MACD 是滞后的确认指标,不是方向的来源:方向来自结构(摆动点、123、
关键参照位的攻守),MACD/背离只用来确认或否决,一根还没被结构支持的
背离候选不构成入场理由. Note the
auto-detector can't confirm a pivot on the last 1-2 bars (needs bars on both sides);
for very recent action, read last_dif/last_dea/last_hist directly and reason
about it yourself (e.g. a sharp reversal-and-close-on-the-low bar is a real signal
even before any swing/divergence algorithm can confirm it — see the MU 2026-07-01
session for an example: the auto-divergence check didn't catch the final-hour
blow-off because the session's last bar can't be a confirmed pivot yet).
Step 4 — Write the technical read
First, classify the day from Step 2's pull (消息面权重定级):
- 催化日 — a live symbol-moving item exists today: earnings/guidance, policy
or tariff news touching the name, a major industry headline, or any story that
already visibly moved the price. News leads, technicals follow: technical
levels are demoted to "where does it land after the shock" rather than
direction; every scenario's probability must state how the news shifted it;
if the news points against the technical read, cap the technical-side scenario
at ≤40% or call
neutral.
- 平静日 — no such item. Technicals lead; news is confirmation only and must
not override a clean structure read.
State which regime was applied in conclusion.summary. Then, using the
timeframe data + Step 3's numbers, decide:
- Direction + anchor —
long / short / neutral, anchored to a specific
timeframe + time + price (never a bare directional call with no anchor).
Timeframe roles(周期分工): 日线定背景(day_context.daily_trend +
关键参照位——顺日线的短线判断成功率天然更高,逆日线要单独说明理由),
h1 定趋势方向, m15 定结构与入场, m5 只做触发与微调。
位置参照(必做): 方向判断必须对照 VWAP 与日内参照位说话——价格在
VWAP 上方还是下方、离昨高/昨低/盘前高低/开盘区间哪条最近、是攻还是守。
"突破"类情景的 trigger 应指向具体参照位(如"放量站上昨高"),而不是
凭感觉画的价位。The anchor lives on m15 by default — anchor.timeframe also sets
the dashboard's default tab. Anchor on m5 only for a pure scalp call, on h1
only for a swing-level statement. Align anchor.time to a bar boundary of its
timeframe (m15 → :00/:15/:30/:45).
- Scenarios — 2 to 4, by real structure(通常是上破/震荡/下破三个,不要为
凑数硬编一个 5% 的情景), probabilities summing to ~100%, each with a
path
(what the K-line likely does) and a trigger (what confirms it). Reuse the
3-scenario discipline from market-session-tracker (Bull/Base/Bear-style).
- Range-bound playbook — if one scenario is "震荡/oscillating", fill
range_bound_plan with an explicit tactic for both directions (long_tactic
and short_tactic) — never describe only one side of a two-sided range.
For a neutral call the playbook additionally MUST carry numeric low /
high(箱体下沿/上沿,low < high,须包住锚点价) — 观望 = 预判价格守在
这个区间内。这两个数是观望判断的事后对账依据:服务端会按"收盘价离开区间 =
破位(判错)/ 守满一个交易时段 = 守住(判对)"记入记分板,没有它们观望就
是一个说错零成本的空话。
- Entry plan —
entry, stop, target1_pct, target2_pct — only for
long / short calls. A neutral call submits NO entry_plan: 观望就是
现在没有可执行的入场/止损/目标,两侧的条件应对全部写进 range_bound_plan
(见上一条),不要一边喊观望一边给价位。Steps 5–6 below (position size,
trade management) likewise apply only to directional calls.
- Stop = structure, not a number. The stop sits beyond a named structure
(swing point 外沿、123 结构的 ①、区间边界), never a bare round number or
arbitrary %. Name the structure in
stop_note.
- Stop crowding check(止损显眼度). Before finalizing, check the stop
against three crowded zones: 整数关口(±0.5%)、当日/昨日高低点(±0.3%)、
Step 2 期权高持仓价位(±0.5%). A stop inside any of them is where sweeps
happen(2026-07-06 三笔止损全灭于 1000 关口上方)— either push it beyond
the zone with extra cushion (smaller size for the wider stop), or switch
to a confirmation entry(等反抽失败再进). State in
stop_note which
zones were checked and cleared.
- R/R in both口径. Compute direction-aware R/R twice: T1-based and
T2-based (
long: risk = entry−stop, reward = target−entry; short
mirrored). Report both. One unified rule(全仓库同一口径): T1-based
R/R < 1:1 → the plan is rejected, rework the entry or pass; 1:1–2:1 →
allowed, but the report must explicitly say 赔率偏薄(the chart sidebar
flags < 2:1 in red for the same reason — that's a warning, not the
rejection line). If only the T2 口径 reaches 2:1, say so explicitly
(远目标是有条件的,不许拿它化妆头条盈亏比).
- Event gate. Default: no holding through earnings or a scheduled
FOMC/CPI-class release within the horizon. An exception must state the gap
risk in one line(跳空可越过止损,最大亏损≠1R).
- Session liquidity. Entries outside regular hours(盘前/盘后)must be
flagged: spreads wide, size thin, stop execution unreliable. Also note the
9:30–10:00 ET window is fake-breakout-prone — a breakout entry there needs
relvol confirmation.
- Position size(仓位) — from the
longbridge portfolio pull: risk
budget = 1% of account value by default (0.5% on a 催化日 or counter-tape
trade); shares = floor(budget / |entry − stop|). Nominal cap(名义上限):
the position's nominal value(shares × entry)must not exceed 30% of account
value — a tight stop makes the risk formula spit out huge share counts
(止损贴得越近算出的股数越多,极端时名义金额会超过账户本身,等于隐性加杠杆);
when the risk-based size breaks the cap, cut shares to the cap and say so.
Report 股数、名义金额、占账户 %。A plan without a size is not a plan —
this is what separates an opinion from a trade.
- Trade management(入场后) — write the management leg into
entry_plan.note / the report: at T1 take half off and move the stop to
breakeven(推保本); time stop — ~6 bars of the anchor timeframe
(m5 锚点 ≈30min、m15 锚点 ≈1.5h、h1 锚点 ≈6h——波段级判断不该被日内级的
时间止损误杀), if the trade hasn't moved by then the thesis is stale, exit
flat; stopped out = stay out, no revenge re-entry unless a new structure
signal forms.
- Existing position(若用户已持仓) — the read must end with an explicit
加 / 减 / 持 / 清 call on the live position, reconciled against cost basis —
not just a fresh-entry plan alongside an ignored holding.
- Signals(可选) — the chart auto-detects and draws MACD divergence/背驰,
candle patterns, and 123 structures server-side; cite those markers in the
report rather than re-labeling them. The only signal worth adding by hand is
an
other-type note for something the detectors cannot see yet — e.g. a
last-bar blow-off whose pivot the swing algorithm can't confirm (the MU
2026-07-01 final hour) — anchored to a specific timeframe + time +
price.
context — besides prediction, write the context payload (see
chart skill's context schema): tag every news/sentiment item pulled in
Step 2 with source + tag + a one-line note, list what was actually
pulled in sources_used, and write the conclusion card (stance /
summary / action). generated_at = now, ISO timestamp.
Step 5 — Final render
PATCH the same chart with BOTH prediction and context filled in, in one
call (see chart skill's prediction / context schemas for the full shapes):
curl -s -X PATCH http://localhost:1792/api/charts/ \
'Content-Type: application/json' \
-d '{
"prediction": { "direction": "short", "anchor": {"timeframe":"m15","time":"2026-07-06T14:15:00Z","price":61.10}, "scenarios": [ ... ] },
"context": {
"generated_at": "2026-07-06T14:30:00Z",
"conclusion": { "stance": "short", "summary": "一句话综合判断", "action": "现在该做什么" },
"news": [ { "time": "2026-07-06T13:10:00Z", "source": "longbridge", "tag": "catalyst", "title": "...", "note": "AI 一句话解读" } ],
"sources_used": ["longbridge-news", "twitter-reader"]
}
}' < id-from-step-3 > -H
Include position in the Step-3 POST (from the optional longbridge positions
pull) if the user holds this symbol — the dashboard renders a 持仓视角 card.
Step 6 — Report structure
Present in this order (mirrors the user's original ask):
- 大盘/板块环境 + 事件风险(顺风还是逆风;财报/宏观时刻表内有没有雷)
- 方向判断 + 锚点(在哪个位置做的判断)
- 情景推演(后续 K 线可能的多种走势,带百分比)
- 震荡应对(若为震荡情景:多、空两种打法)
- 入场计划(双口径盈亏比 + 入场点/止损/目标 + 止损依托的结构)
- 仓位建议(股数、名义金额、占账户 %、单笔风险额)+ 入场后管理(T1 减半推保本 / 时间止损)
- 持仓处置(若已持仓:加 / 减 / 持 / 清,对照成本价)
- 支撑信号(引用图上自动检测的 MACD 背离/背驰、K 线形态、123 结构,指到具体 K 线;如有
other 补充备注一并说明;量能 relvol 佐证)
- 图表链接:主链接是
data.url(形如
http://localhost:1792/symbol/<SYM>?analysis=<id>——标的驾驶舱页面钉在本次
分析上,含本次预测/情景/入场/信号,分析完立即打开就是看它;旧的
http://localhost:1792/charts/<id> 链接依然有效,会自动跳转到这里),辅链接是
去掉 ?analysis= 参数的驾驶舱主页 http://localhost:1792/symbol/<SYM>
(聚合活数据 + 历史分析,永远跟随最新一次分析),附在后面
- 免责声明:仅供参考,不构成投资建议
Step 7 — Journal
Write journal/YYYY-MM-DD-<symbol>-intraday.md (US session date). Same-day
re-run on the same symbol appends a new timestamped section — never overwrite.
The cockpit's 历史 tab (GET /api/symbols/:sym/analyses, rendered on
/symbol/<SYM>) now lists past analyses for this symbol with a mechanical
outcome judgment (hit_target / hit_stop / open, computed server-side from
post-anchor bars) — that's a quick mechanical scoreboard, not a substitute for
the journal's narrative record.
Calibration loop(对账): every run, before writing the journal entry,
pull GET /api/overview/stats(或该标的的 GET /api/symbols/:sym/analyses)
and copy the mechanical scoreboard into the entry — one line: 总次数、命中率、
目标/止损/守区间/破区间的分布(观望判断按守住/破位计入,说错不再是零成本)、
平均盈亏倍数 avg_r(每笔平均赚/亏多少个止损单位——命中率 40% 但赢 2 亏 1
长期是赚的,命中率 70% 但赢小亏大照样亏,光看命中率会骗人).
The scoreboard is machine-judged, so this step is a copy, not an audit — no
counting discipline required. Scenario-probability calibration(标了 60% 的
情景实际兑现了几成)stays qualitative: when the scoreboard shows a losing
streak or the stated probabilities feel systematically over-confident, say so
in that day's entry — probabilities that never get compared against outcomes
degrade into rhetoric.
Lesson distillation(教训沉淀): whenever a post-mortem (收盘复盘或单笔
对账) produces an actionable lesson — a rule that would have changed an entry,
a stop, or a probability — append it to journal/lessons.md as one dated line
(合并同类条目并加注重复次数; lessons already absorbed into skill rules move
to the file's 已固化 section, never deleted). A lesson that only lives in a
dated journal file is a lesson the next run will not see.
Anti-patterns
- ❌ A directional call with no anchor price/time
- ❌ Scenarios that don't sum to ~100%, or only one scenario
- ❌ A range-bound call that only covers one direction (must give both long and short tactics)
- ❌ A
neutral call without numeric low/high in range_bound_plan(没有区间的观望事后无法对账,等于零成本喊话)
- ❌ Submitting a plan whose T1-based R/R is below 1:1, or a 1:1–2:1 plan without explicitly calling the odds thin(赔率偏薄要写出来)
- ❌ Reporting only the T2-based R/R(拿有条件的远目标化妆盈亏比)
- ❌ An entry plan with no position size, or a size invented without pulling
longbridge portfolio
- ❌ A stop parked on a round number / bare % with no structure behind it
- ❌ A stop inside a crowded zone(整数关口 / 当日昨日高低点 / 期权高持仓价位)without the crowding check named in
stop_note
- ❌ Skipping
journal/lessons.md, or repeating a mistake already recorded there without addressing it
- ❌ Finding the earnings date by manual news-hunting when
longbridge finance-calendar report --symbol answers it in one call
- ❌ Calling
longbridge option quote(本账户无期权行情权限,必报 no quote access)— per-strike data comes from options-levels
- ❌ Planning to hold through earnings or an FOMC/CPI-class event without naming the gap risk
- ❌ A counter-tape call (against SPY/QQQ/sector direction) with no one-line justification
- ❌ Calling a breakout real without citing relvol/volume
- ❌ "看起来有背离" without citing the auto-detected marker (or the two specific bars, if the detector hasn't confirmed it yet)
- ❌ Skipping the preview call and guessing MACD values instead of reading them
- ❌ Ignoring
day_context — a direction call that never says where price sits vs VWAP / 昨日高低 / 盘前区间, or an h1-counter-daily call without naming it
- ❌ Using MACD divergence as the entry reason by itself, without a structure (swing / 123 / 参照位) backing the same read
- ❌ Skipping the journal write
- ❌ Contradicting a live
market-session-tracker read for the same symbol without reconciling — this is a narrower, single-symbol lens, not an override
- ❌ Writing a
context.news item without a source
- ❌ Skipping the 催化日/平静日 classification, or trading pure technical levels on a 催化日 without stating how the news shifted each scenario's probability
- ❌ Calling a day 平静 from
longbridge-news alone without having checked X — longbridge lags; "no headline yet" there doesn't mean no news
- ❌ A
conclusion.action that contradicts the prediction's direction without explaining why
- ❌ Pulling every on-demand source (
trump-truth-monitor / sec-edgar / gdelt / fred) on every run — tiering exists to keep runs fast; judge by the day's tape
Related skills
chart — renders type intraday; this skill is chart's primary caller for that type
longbridge-kline — same data the chart server pulls; call directly only for in-chat analysis
longbridge-capital-flow — optional grounding context (distribution check)
options-levels — always-tier: per-strike open-interest levels(磁铁位/止损扎堆区)+ put/call ratios from the CBOE delayed chain
twitter-reader — always-tier, checked first (fastest tape on breaking news/sentiment)
longbridge-news — always-tier grounding context (lagging official headlines; confirmation + source anchor)
trump-truth-monitor — on-demand grounding context (policy-sensitive days)
sec-edgar — on-demand grounding context (filing/insider leads)
gdelt / fred — on-demand grounding context (macro event days)
market-session-tracker — broader live multi-symbol session monitoring; this skill is the single-symbol short-term drill-down
sepa-strategy — the weeks/months-horizon counterpart for swing entries
1---2name: intraday-signal3description: Short-term multi-timeframe (5m/15m/1h) technical read for a single symbol — pulls K-line across three timeframes, reads MACD + swing structure, writes a direction call (long/short/neutral) with an explicit anchor price, a 2–4 scenario forward read, a range-bound playbook (long tactic + short tactic; a neutral call carries a numeric low/high zone instead of an entry plan and is scored on whether the zone held), an entry/stop/target plan with dual-basis R/R (T1 + T2) for directional calls only, position sizing with a nominal cap from the live broker account, an event-risk gate (earnings / FOMC / CPI), and market/sector alignment + relvol volume checks — MACD divergence/背驰, candle patterns like Pin Bar, and 123 structures are auto-detected and drawn server-side — then renders it via the `chart` skill (type `intraday`, POST preview → PATCH prediction) and logs a journal entry. US-only, single-symbol, short horizon (intraday to a few sessions) — a companion to `market-session-tracker`, not a replacement. Triggers:4---56# intraday-signal78Single-symbol, short-horizon technical read across 5 分钟 / 15 分钟 / 1 小时—9produces an explicit long/short call anchored to a price, a probability-weighted10forward read, and a concrete entry/stop/target plan, backed by server-side11auto-detected K-line signals (MACD divergence/背驰, candle patterns such as12Pin Bar, 123 structures). Ends by rendering an interactive dashboard and13writing a journal entry.1415> **Scope**: one symbol per run. For a cross-section "where is money moving"16> question use `capital-rotation`; for live tracking of a watchlist across a17> session use `market-session-tracker`; this skill is the deep single-symbol18> drill-down when the user wants a concrete short-term trade read.1920## When to use2122- "MU 短线怎么走", "这里能不能做多/做空", "给我一个短线入场点"23- "5分钟15分钟1小时怎么看", "MACD 有没有背离", "这是不是 Pin Bar"24- "盈亏比多少", "入场点在哪", "止损止盈怎么设"25- **Not** for a broad market/sector scan (`capital-rotation`)26- **Not** for live multi-symbol session monitoring (`market-session-tracker`)27- **Not** for weeks/months-horizon swing entries (`sepa-strategy`)2829## Workflow3031### Step 1 — Resolve the symbol3233If ambiguous (e.g. a company name with multiple listings), ask back rather than guessing.3435### Step 2 — Tiered grounding context3637The chart server pulls the three timeframes of K-line itself (5m/15m/1h × 100038bars) — no manual `longbridge kline` calls needed. Multi-source grounding is39tiered so runs stay fast — pull the "always" tier every run, judge the rest by40the day's tape:4142- **Always, before anything else: read `journal/lessons.md`** — the distilled43 lesson list from past post-mortems. Every rule there was paid for with a real44 loss; the read you're about to write must not repeat one. If a lesson applies45 to today's setup, say so explicitly in the report(如"止损已避开 1000 关口46 扎堆区,参照 lessons 2026-07-06").47- **Always, check first**: `twitter-reader` — X is the fastest tape on breaking48 news and sentiment; on an intraday horizon its lead time over aggregated feeds49 is exactly the window that matters. Search the symbol, read the last few hours.50 X sentiment is an _input_, not a conclusion — form the price-structure read in51 Step 3 independently, then reconcile; don't go hunting the chart for evidence52 of whatever narrative X planted. **If the `twitter-reader` skill is not53 available in the current session, don't silently skip it: write "X 未查"54 into the report/`context.sources_used`, and treat the 催化日/平静日 call as55 provisional(longbridge-news 有延迟,"还没看到新闻"不等于"没有新闻").**56- **Always: event risk(财报 + 宏观时刻表)**. Two calls, no manual hunting:57 `longbridge finance-calendar report --symbol <SYM>.US --format json`(下一个58 财报日;若返回为空再退回 news / X / IR 并注明未确认)and59 `longbridge finance-calendar macrodata --market US --star 3 --start <today>60--end <horizon-end> --format json`(横跨持仓周期的重要宏观发布,带前值/预测;61 时间为 ET——CPI/非农 8:30, 多数数据 10:00, FOMC 决议 14:00 + 记者会 14:30). Any62 hard event inside the trade horizon must appear in the scenarios — a stop63 cannot protect you through a gap(跳空开盘直接越过止损价,实际亏损可远大于计划).64- **Always: market alignment(大盘/板块对齐)**. One call:65 `longbridge quote SPY.US QQQ.US <sector-ETF>.US`(如半导体 SMH、软件 IGV).66 State whether the intended direction is with or against today's index/sector67 tape; trading against it is allowed but must be justified in one line.68- **Always: volume check**. `GET /api/symbols/<SYM>/relvol`(服务端已算好的69 相对成交量——当前量相对同时段常态量的倍数)+ `longbridge capital <SYM>.US70--format json`(triple-bucket flow). Breakouts and reversals without volume71 are suspects, not signals; cite relvol when calling any breakout real.72- **Always**: `longbridge-news` on the symbol — official/aggregated headlines.73 It lags X by minutes to hours, so treat it as confirmation and source-anchoring74 for what X surfaced, not as the breaking-news feed; its item timestamps are75 publish times, not event times. The chart server also auto-attaches raw76 headlines to the sidebar's `news` list, but that's unclassified — the AI must77 still read and tag them for `context`.78- **Always: options levels(期权关键价位)**. One call:79 `python3 .claude/skills/options-levels/scripts/levels.py <SYM>` — 现价附近80 最近两个到期日的高持仓行权价(磁铁位/止损扎堆区)+ 全链 put/call 比。81 上方高持仓 call 位 ≈ 上行磁铁与压力,下方高持仓 put 位 ≈ 支撑墙;这些82 价位直接约束 Step 4 的止损与目标摆放(见 entry plan 规则)。CBOE 不覆盖83 的标的(无期权)注明"期权 N/A"即可。84- **On-demand** (judge by the day's tape, don't run every time): `trump-truth-monitor`85 (policy-sensitive days), `sec-edgar` (filing/insider leads), `gdelt` / `fred`86 (macro event days).87- Whatever was actually pulled goes into `context.sources_used` (Step 4).88- Housekeeping, pulled as needed regardless of tiering: the user's live position89 via `longbridge positions --format json` if they hold this symbol, and account90 size via `longbridge portfolio --format json` (needed for position sizing in91 Step 4 — never ask the user, read the broker).9293### Step 3 — Preview: read the technicals9495Check the chart server is up (`curl -s http://localhost:1792/api/health`; if96down: `pnpm start` at the repo root in the background), then POST a preview (no97`prediction`):9899```bash100curl -s -X POST http://localhost:1792/api/charts \101 -H 'Content-Type: application/json' \102 -d '{"type":"intraday","symbol":"<SYM>.US","name":"..."}'103```104105Only add a `"position": {"shares": N, "cost": X}` field when `longbridge106positions` shows a **real** holding in this symbol — never a placeholder; a107fabricated position renders a bogus 持仓视角 card on the dashboard.108109The response's `data.technicals` gives, per timeframe: the latest DIF/DEA/HIST,110the session VWAP(`last_vwap`,当日成交量加权均价——日内机构衡量贵贱的基准线,111m5/m15 有值), the last ~6 swing highs/lows, the most recent 金叉/死叉112(`last_cross`), any113auto-detected `divergence_candidates` / `beichi_candidates`, and `pattern_123` —114auto-detected 123 reversal structures (①extreme → ②reaction pivot → ③higher-low /115lower-high), each with `status` (`forming` = trigger not yet broken, `confirmed` =116close broke the ② trigger), `trigger`, and `invalidation` prices. A `forming`117pattern_123 is a ready-made entry setup: entry at the ② trigger break, stop118beyond ① (all confirmed pivots only — the chart itself also draws these119automatically, in both preview and final render).120The response also carries `meta.day_context`(日线背景与日内参照位,服务端自动算):121`daily_trend`(up/down/range,日线收盘对 MA20/MA50 的位置)、`daily_ma20`/`daily_ma50`、122`high_20d`/`low_20d`(近 20 个交易日高低)、`prev_day`(昨日高/低/收)、123`pre_market`(今日盘前高低)、`opening_range`(开盘前 30 分钟区间)、`vwap`。124`meta` 还带 `options_levels`(期权墙——服务端拉 CBOE 自动算,与 Step 2 的125`options-levels` 脚本同源同口径,preview 里有值时 Step 2 的脚本调用可省)和126`event_risk`(下次财报日 + 近 3 天重要宏观发布——同样可替代 Step 2 的127`finance-calendar` 调用);两者都会渲染到页面(期权墙画线 + 事件风险卡)。128**先读 day_context 再读三个周期**——1 小时的"趋势"可能只是日线大区间里的一段震荡;129h1 方向与 `daily_trend` 相反时必须在报告里写明这是逆日线的判断。这些参照位130也画在图上("日内参照位"图层)。131132Read these numbers — don't guess MACD direction from eyeballing candles.133**MACD 是滞后的确认指标,不是方向的来源**:方向来自结构(摆动点、123、134关键参照位的攻守),MACD/背离只用来确认或否决,一根还没被结构支持的135背离候选不构成入场理由. Note the136auto-detector can't confirm a pivot on the last 1-2 bars (needs bars on both sides);137for very recent action, read `last_dif`/`last_dea`/`last_hist` directly and reason138about it yourself (e.g. a sharp reversal-and-close-on-the-low bar is a real signal139even before any swing/divergence algorithm can confirm it — see the MU 2026-07-01140session for an example: the auto-divergence check didn't catch the final-hour141blow-off because the session's last bar can't be a confirmed pivot yet).142143### Step 4 — Write the technical read144145**First, classify the day from Step 2's pull (消息面权重定级):**146147- **催化日** — a live symbol-moving item exists today: earnings/guidance, policy148 or tariff news touching the name, a major industry headline, or any story that149 already visibly moved the price. News leads, technicals follow: technical150 levels are demoted to "where does it land after the shock" rather than151 direction; every scenario's probability must state how the news shifted it;152 if the news points against the technical read, cap the technical-side scenario153 at ≤40% or call `neutral`.154- **平静日** — no such item. Technicals lead; news is confirmation only and must155 not override a clean structure read.156157State which regime was applied in `conclusion.summary`. Then, using the158timeframe data + Step 3's numbers, decide:1591601. **Direction + anchor** — `long` / `short` / `neutral`, anchored to a specific161 timeframe + time + price (never a bare directional call with no anchor).162 **Timeframe roles(周期分工)**: 日线定背景(`day_context.daily_trend` +163 关键参照位——顺日线的短线判断成功率天然更高,逆日线要单独说明理由),164 h1 定趋势方向, m15 定结构与入场, m5 只做触发与微调。165 **位置参照(必做)**: 方向判断必须对照 VWAP 与日内参照位说话——价格在166 VWAP 上方还是下方、离昨高/昨低/盘前高低/开盘区间哪条最近、是攻还是守。167 "突破"类情景的 trigger 应指向具体参照位(如"放量站上昨高"),而不是168 凭感觉画的价位。**The anchor lives on m15 by default** — `anchor.timeframe` also sets169 the dashboard's default tab. Anchor on m5 only for a pure scalp call, on h1170 only for a swing-level statement. Align `anchor.time` to a bar boundary of its171 timeframe (m15 → :00/:15/:30/:45).1722. **Scenarios** — 2 to 4, by real structure(通常是上破/震荡/下破三个,不要为173 凑数硬编一个 5% 的情景), probabilities summing to ~100%, each with a `path`174 (what the K-line likely does) and a `trigger` (what confirms it). Reuse the175 3-scenario discipline from `market-session-tracker` (Bull/Base/Bear-style).1763. **Range-bound playbook** — if one scenario is "震荡/oscillating", fill177 `range_bound_plan` with an explicit tactic for **both** directions (`long_tactic`178 and `short_tactic`) — never describe only one side of a two-sided range.179 **For a `neutral` call the playbook additionally MUST carry numeric `low` /180 `high`(箱体下沿/上沿,low < high,须包住锚点价)** — 观望 = 预判价格守在181 这个区间内。这两个数是观望判断的事后对账依据:服务端会按"收盘价离开区间 =182 破位(判错)/ 守满一个交易时段 = 守住(判对)"记入记分板,没有它们观望就183 是一个说错零成本的空话。1844. **Entry plan** — `entry`, `stop`, `target1_pct`, `target2_pct` — **only for185 `long` / `short` calls. A `neutral` call submits NO `entry_plan`**: 观望就是186 现在没有可执行的入场/止损/目标,两侧的条件应对全部写进 `range_bound_plan`187 (见上一条),不要一边喊观望一边给价位。Steps 5–6 below (position size,188 trade management) likewise apply only to directional calls.189 - **Stop = structure, not a number.** The stop sits beyond a named structure190 (swing point 外沿、123 结构的 ①、区间边界), never a bare round number or191 arbitrary %. Name the structure in `stop_note`.192 - **Stop crowding check(止损显眼度).** Before finalizing, check the stop193 against three crowded zones: 整数关口(±0.5%)、当日/昨日高低点(±0.3%)、194 Step 2 期权高持仓价位(±0.5%). A stop inside any of them is where sweeps195 happen(2026-07-06 三笔止损全灭于 1000 关口上方)— either push it beyond196 the zone with extra cushion (smaller size for the wider stop), or switch197 to a confirmation entry(等反抽失败再进). State in `stop_note` which198 zones were checked and cleared.199 - **R/R in both口径.** Compute direction-aware R/R twice: T1-based and200 T2-based (`long`: risk = entry−stop, reward = target−entry; `short`201 mirrored). Report both. **One unified rule(全仓库同一口径): T1-based202 R/R < 1:1 → the plan is rejected, rework the entry or pass; 1:1–2:1 →203 allowed, but the report must explicitly say 赔率偏薄(the chart sidebar204 flags < 2:1 in red for the same reason — that's a warning, not the205 rejection line).** If only the T2 口径 reaches 2:1, say so explicitly206 (远目标是有条件的,不许拿它化妆头条盈亏比).207 - **Event gate.** Default: no holding through earnings or a scheduled208 FOMC/CPI-class release within the horizon. An exception must state the gap209 risk in one line(跳空可越过止损,最大亏损≠1R).210 - **Session liquidity.** Entries outside regular hours(盘前/盘后)must be211 flagged: spreads wide, size thin, stop execution unreliable. Also note the212 9:30–10:00 ET window is fake-breakout-prone — a breakout entry there needs213 relvol confirmation.2145. **Position size(仓位)** — from the `longbridge portfolio` pull: risk215 budget = 1% of account value by default (0.5% on a 催化日 or counter-tape216 trade); `shares = floor(budget / |entry − stop|)`. **Nominal cap(名义上限):217 the position's nominal value(shares × entry)must not exceed 30% of account218 value** — a tight stop makes the risk formula spit out huge share counts219 (止损贴得越近算出的股数越多,极端时名义金额会超过账户本身,等于隐性加杠杆);220 when the risk-based size breaks the cap, cut shares to the cap and say so.221 Report 股数、名义金额、占账户 %。**A plan without a size is not a plan** —222 this is what separates an opinion from a trade.2236. **Trade management(入场后)** — write the management leg into224 `entry_plan.note` / the report: at T1 take half off and move the stop to225 breakeven(推保本); time stop — **~6 bars of the anchor timeframe**226 (m5 锚点 ≈30min、m15 锚点 ≈1.5h、h1 锚点 ≈6h——波段级判断不该被日内级的227 时间止损误杀), if the trade hasn't moved by then the thesis is stale, exit228 flat; stopped out = stay out, no revenge re-entry unless a _new_ structure229 signal forms.2307. **Existing position(若用户已持仓)** — the read must end with an explicit231 加 / 减 / 持 / 清 call on the live position, reconciled against cost basis —232 not just a fresh-entry plan alongside an ignored holding.2338. **Signals(可选)** — the chart auto-detects and draws MACD divergence/背驰,234 candle patterns, and 123 structures server-side; cite those markers in the235 report rather than re-labeling them. The only signal worth adding by hand is236 an `other`-type note for something the detectors cannot see yet — e.g. a237 last-bar blow-off whose pivot the swing algorithm can't confirm (the MU238 2026-07-01 final hour) — anchored to a specific `timeframe` + `time` +239 `price`.2409. **`context`** — besides `prediction`, write the `context` payload (see241 `chart` skill's `context` schema): tag every news/sentiment item pulled in242 Step 2 with `source` + `tag` + a one-line `note`, list what was actually243 pulled in `sources_used`, and write the `conclusion` card (`stance` /244 `summary` / `action`). `generated_at` = now, ISO timestamp.245246### Step 5 — Final render247248PATCH the same chart with BOTH `prediction` and `context` filled in, in one249call (see `chart` skill's `prediction` / `context` schemas for the full shapes):250251```bash252curl -s -X PATCH http://localhost:1792/api/charts/ \253 'Content-Type: application/json' \254 -d '{255 "prediction": { "direction": "short", "anchor": {"timeframe":"m15","time":"2026-07-06T14:15:00Z","price":61.10}, "scenarios": [ ... ] },256 "context": {257 "generated_at": "2026-07-06T14:30:00Z",258 "conclusion": { "stance": "short", "summary": "一句话综合判断", "action": "现在该做什么" },259 "news": [ { "time": "2026-07-06T13:10:00Z", "source": "longbridge", "tag": "catalyst", "title": "...", "note": "AI 一句话解读" } ],260 "sources_used": ["longbridge-news", "twitter-reader"]261 }262 }' < id-from-step-3 > -H263```264265Include `position` in the Step-3 POST (from the optional `longbridge positions`266pull) if the user holds this symbol — the dashboard renders a 持仓视角 card.267268### Step 6 — Report structure269270Present in this order (mirrors the user's original ask):2712721. 大盘/板块环境 + 事件风险(顺风还是逆风;财报/宏观时刻表内有没有雷)2732. 方向判断 + 锚点(在哪个位置做的判断)2743. 情景推演(后续 K 线可能的多种走势,带百分比)2754. 震荡应对(若为震荡情景:多、空两种打法)2765. 入场计划(双口径盈亏比 + 入场点/止损/目标 + 止损依托的结构)2776. 仓位建议(股数、名义金额、占账户 %、单笔风险额)+ 入场后管理(T1 减半推保本 / 时间止损)2787. 持仓处置(若已持仓:加 / 减 / 持 / 清,对照成本价)2798. 支撑信号(引用图上自动检测的 MACD 背离/背驰、K 线形态、123 结构,指到具体 K 线;如有 `other` 补充备注一并说明;量能 relvol 佐证)2809. 图表链接:主链接是 `data.url`(形如281 `http://localhost:1792/symbol/<SYM>?analysis=<id>`——标的驾驶舱页面钉在本次282 分析上,含本次预测/情景/入场/信号,分析完立即打开就是看它;旧的283 `http://localhost:1792/charts/<id>` 链接依然有效,会自动跳转到这里),辅链接是284 去掉 `?analysis=` 参数的驾驶舱主页 `http://localhost:1792/symbol/<SYM>`285 (聚合活数据 + 历史分析,永远跟随最新一次分析),附在后面28610. 免责声明:仅供参考,不构成投资建议287288### Step 7 — Journal289290Write `journal/YYYY-MM-DD-<symbol>-intraday.md` (US session date). Same-day291re-run on the same symbol appends a new timestamped section — never overwrite.292The cockpit's 历史 tab (`GET /api/symbols/:sym/analyses`, rendered on293`/symbol/<SYM>`) now lists past analyses for this symbol with a mechanical294outcome judgment (`hit_target` / `hit_stop` / `open`, computed server-side from295post-anchor bars) — that's a quick mechanical scoreboard, not a substitute for296the journal's narrative record.297298**Calibration loop(对账)**: **every run**, before writing the journal entry,299pull `GET /api/overview/stats`(或该标的的 `GET /api/symbols/:sym/analyses`)300and copy the mechanical scoreboard into the entry — one line: 总次数、命中率、301目标/止损/守区间/破区间的分布(观望判断按守住/破位计入,说错不再是零成本)、302**平均盈亏倍数 `avg_r`(每笔平均赚/亏多少个止损单位——命中率 40% 但赢 2 亏 1303长期是赚的,命中率 70% 但赢小亏大照样亏,光看命中率会骗人)**.304The scoreboard is machine-judged, so this step is a copy, not an audit — no305counting discipline required. Scenario-probability calibration(标了 60% 的306情景实际兑现了几成)stays qualitative: when the scoreboard shows a losing307streak or the stated probabilities feel systematically over-confident, say so308in that day's entry — probabilities that never get compared against outcomes309degrade into rhetoric.310311**Lesson distillation(教训沉淀)**: whenever a post-mortem (收盘复盘或单笔312对账) produces an actionable lesson — a rule that would have changed an entry,313a stop, or a probability — append it to `journal/lessons.md` as one dated line314(合并同类条目并加注重复次数; lessons already absorbed into skill rules move315to the file's 已固化 section, never deleted). A lesson that only lives in a316dated journal file is a lesson the next run will not see.317318## Anti-patterns319320- ❌ A directional call with no anchor price/time321- ❌ Scenarios that don't sum to ~100%, or only one scenario322- ❌ A range-bound call that only covers one direction (must give both long and short tactics)323- ❌ A `neutral` call without numeric `low`/`high` in `range_bound_plan`(没有区间的观望事后无法对账,等于零成本喊话)324- ❌ Submitting a plan whose T1-based R/R is below 1:1, or a 1:1–2:1 plan without explicitly calling the odds thin(赔率偏薄要写出来)325- ❌ Reporting only the T2-based R/R(拿有条件的远目标化妆盈亏比)326- ❌ An entry plan with no position size, or a size invented without pulling `longbridge portfolio`327- ❌ A stop parked on a round number / bare % with no structure behind it328- ❌ A stop inside a crowded zone(整数关口 / 当日昨日高低点 / 期权高持仓价位)without the crowding check named in `stop_note`329- ❌ Skipping `journal/lessons.md`, or repeating a mistake already recorded there without addressing it330- ❌ Finding the earnings date by manual news-hunting when `longbridge finance-calendar report --symbol` answers it in one call331- ❌ Calling `longbridge option quote`(本账户无期权行情权限,必报 no quote access)— per-strike data comes from `options-levels`332- ❌ Planning to hold through earnings or an FOMC/CPI-class event without naming the gap risk333- ❌ A counter-tape call (against SPY/QQQ/sector direction) with no one-line justification334- ❌ Calling a breakout real without citing relvol/volume335- ❌ "看起来有背离" without citing the auto-detected marker (or the two specific bars, if the detector hasn't confirmed it yet)336- ❌ Skipping the preview call and guessing MACD values instead of reading them337- ❌ Ignoring `day_context` — a direction call that never says where price sits vs VWAP / 昨日高低 / 盘前区间, or an h1-counter-daily call without naming it338- ❌ Using MACD divergence as the entry reason by itself, without a structure (swing / 123 / 参照位) backing the same read339- ❌ Skipping the journal write340- ❌ Contradicting a live `market-session-tracker` read for the same symbol without reconciling — this is a narrower, single-symbol lens, not an override341- ❌ Writing a `context.news` item without a `source`342- ❌ Skipping the 催化日/平静日 classification, or trading pure technical levels on a 催化日 without stating how the news shifted each scenario's probability343- ❌ Calling a day 平静 from `longbridge-news` alone without having checked X — longbridge lags; "no headline yet" there doesn't mean no news344- ❌ A `conclusion.action` that contradicts the prediction's direction without explaining why345- ❌ Pulling every on-demand source (`trump-truth-monitor` / `sec-edgar` / `gdelt` / `fred`) on every run — tiering exists to keep runs fast; judge by the day's tape346347## Related skills348349- `chart` — renders type `intraday`; this skill is chart's primary caller for that type350- `longbridge-kline` — same data the chart server pulls; call directly only for in-chat analysis351- `longbridge-capital-flow` — optional grounding context (distribution check)352- `options-levels` — always-tier: per-strike open-interest levels(磁铁位/止损扎堆区)+ put/call ratios from the CBOE delayed chain353- `twitter-reader` — always-tier, checked first (fastest tape on breaking news/sentiment)354- `longbridge-news` — always-tier grounding context (lagging official headlines; confirmation + source anchor)355- `trump-truth-monitor` — on-demand grounding context (policy-sensitive days)356- `sec-edgar` — on-demand grounding context (filing/insider leads)357- `gdelt` / `fred` — on-demand grounding context (macro event days)358- `market-session-tracker` — broader live multi-symbol session monitoring; this skill is the single-symbol short-term drill-down359- `sepa-strategy` — the weeks/months-horizon counterpart for swing entries