trading-analysis: Tick-Level Money Flow Analysis

SkillCommerce & finance

Analyze A-share money flow from tick-level data using the trading-analysis CLI, with both historical and real-time modes. Use this skill whenever the user mentions money flow, capital flow, main force inflow/outflow, institutional buying, tick-level analysis, order size classification (super-large/large/medium/small orders), real-time monitoring of capital flow, or wants to know whether smart money is buying or selling a stock. Also use when the user asks about 资金流向, 主力资金, 大单, 超大单, 散户, 逐笔分析, or 实时监控.

Instructions available. Your AI can read the instructions. Execution depends on the setup they require.

Add ahel to your AI once: Claude, ChatGPT, Cursor, Claude Code or Codex. Then ask it to use this.

Then ask your AI: use the trading-analysis: Tick-Level Money Flow Analysis skill

What this skill tells your AI

The instructions your AI receives, as published by oopslink/trading-skills in skills/trading-analysis/SKILL.md and read by ahel’s review.

Architecture

trading-analysis CLI
        |
        v
  miniqmt_cli.client.transport (HTTP)
        |
        v
  miniqmt-cli daemon (Windows, port 8765)
        |
        v
  xtquant tick snapshots (3-second intervals)

Requires: miniqmt-cli daemon running + SSH tunnel active. Verify with miniqmt-cli health before use.

How It Works

  1. Fetches 3-second tick snapshots from the daemon (/data/ticks)
  2. Diffs adjacent snapshots to get per-interval delta (amount, volume, trade count)
  3. Classifies direction: lastPrice >= ask1 = active buy, <= bid1 = active sell, else neutral (split 50/50)
  4. Hybrid tier assignment: avg_amount = delta_amount / delta_trades determines tier, delta_amount is accumulated
  5. Aggregates buy/sell/net per tier, computes main force net (xlarge + large) and retail net (medium + small)

Tier Thresholds (Default)

TierAverage Per-Trade AmountLabel
Extra-large>= 100 wan (1,000,000)超大单
Large20 ~ 100 wan大单
Medium4 ~ 20 wan中单
Small< 4 wan小单

Thresholds are configurable via --thresholds.

Commands

# Single stock, today, full trading day
trading-analysis moneyflow --code 002028.SZ

# Specify date (historical)
trading-analysis moneyflow --code 002028.SZ --date 20260416

# Custom time range
trading-analysis moneyflow --code 002028.SZ --start 093000 --end 110000

# Multiple stocks (outputs per-stock tables + ranking)
trading-analysis moneyflow --code 002028.SZ --code 000859.SZ --code 300618.SZ

# JSON output
trading-analysis moneyflow --code 002028.SZ --format json

# Custom thresholds (wan): small/medium boundary, medium/large, large/xlarge
trading-analysis moneyflow --code 002028.SZ --thresholds 4,20,100

# Use specific miniqmt-cli client config
trading-analysis moneyflow --code 002028.SZ --config ~/.miniqmt_cli/client.toml

Real-time Mode (--live)

Polls the daemon for latest tick snapshots every N seconds, accumulates deltas into a running summary, and displays via Rich Live (in-place terminal refresh). Ctrl+C to stop; prints final summary on exit.

# Single stock real-time (default 10s refresh)
trading-analysis moneyflow --code 002028.SZ --live

# Multiple stocks real-time ranking
trading-analysis moneyflow --code 002028.SZ --code 000859.SZ --code 300618.SZ --live

# Custom refresh interval (30 seconds)
trading-analysis moneyflow --code 002028.SZ --live --interval 30
  • Single stock: full four-tier table, updated in-place
  • Multiple stocks: compact ranking table sorted by main force net inflow
  • Requires market hours for meaningful data; outside trading hours the display will show zeros
  • Combine with --signal to get alert-on-trigger behavior; see Signal Expressions below.

Signal Expressions (--signal)

Live mode supports a minimal expression language for triggering alerts when conditions are met. The expression is evaluated every refresh interval against the running per-stock state.

# Alert when main force is net buying AND price is above MA20
trading-analysis moneyflow --code 002028.SZ --live \
  --signal "main_net > 0 and price > ma20"

# Alert on a reversal signal
trading-analysis moneyflow --code 002028.SZ --live \
  --signal "main_net > 500000 and ma5 > ma20"

# Multiple stocks — signal is evaluated per code independently
trading-analysis moneyflow --code 002028.SZ --code 000859.SZ --live \
  --signal "main_net > 0"

Variables (all in yuan unless noted):

VariableMeaning
main_netMain force net inflow (xlarge + large tiers)
retail_netRetail net inflow (medium + small tiers)
priceLatest tick lastPrice
ma5 / ma10 / ma20 / ma60Simple moving average of that many 1-minute closes

Operators: >, <, >=, <=, ==, and, or (lowercase only).

Literals: integers and floats; numbers are in yuan (e.g. 500000 = 50 wan).

Semantics:

  • If any referenced variable is None (e.g. MA window not yet filled), the signal is not triggered — no false positives during warm-up.
  • MA windows are auto-detected from the expression; ma20 triggers a preload of 20 1-minute klines before the live loop starts.
  • Trigger flips edge-sensitive: the alert fires once when False → True. It re-arms when the expression goes back to False.

Output: when triggered, the live display prints a red banner >>> 002028.SZ 信号触发: <expr> <<< and the footer shows "已触发: [codes]". On Ctrl+C exit, a final summary lists which codes ever triggered.

Limitations:

  • No parentheses — precedence is strictly cmp → and → or with left-to-right evaluation.
  • No arithmetic (+, -, *, /) inside expressions — compare variables to literal thresholds only.
  • No historical lookback beyond the MA window (no "price N minutes ago").

Parameter Reference

ParameterDefaultFormat
--code(required, multiple)XXXXXX.SZ / XXXXXX.SH
--datetodayYYYYMMDD
--start093000HHMMSS
--end150000HHMMSS
--formattabletable / json / csv
--thresholds4,20,100comma-separated wan
--configfrom miniqmt-cli client.tomlpath
--liveoffflag
--interval10seconds

Output Example

002028.SZ  2026-04-16 09:30 ~ 15:00
──────────────────────────────────────────────────
档位       买入(万)    卖出(万)    净流入(万)   方向
超大单      1,230.5      480.2      +750.3    净流入
大单          860.1      920.3       -60.2    净流出
中单          340.7      290.1       +50.6    净流入
小单          180.3      210.8       -30.5    净流出
──────────────────────────────────────────────────
主力合计                             +690.1    净流入
散户合计                              +20.1    净流入

统计: 快照 4,800 条 | 有效区间 4,799 | 买入 2,103 | 卖出 2,288 | 中性 408

Multiple stocks append a ranking:

── 主力净流入排名 ──
#1  002028.SZ  +690.1万
#2  300618.SZ  +120.3万
#3  000859.SZ   -45.2万

Interpreting Results

  • 主力合计 > 0: Main force (institutions/large traders) net buying -- bullish signal
  • 主力合计 < 0: Main force net selling -- bearish signal
  • 超大单 dominant: Likely institutional activity
  • 大单 dominant without 超大单: Could be large retail or small institutional
  • All activity in 小单/中单: Retail-driven, no clear institutional signal

Troubleshooting

SymptomCauseFix
"cannot reach daemon"SSH tunnel or daemon downminiqmt-cli health; restart tunnel/daemon
"无数据"Non-trading hours, invalid code, or no cached dataCheck code format, try during market hours
All tiers show 0No trading activity in the time rangeWiden the time range
大单/超大单 always 03-second avg too small to hit thresholdLower thresholds: --thresholds 2,10,50
Live mode shows all zerosOutside trading hours, no new ticksRun during market hours (09:30-15:00)
Live mode not updatingDaemon not returning fresh snapshotsCheck miniqmt-cli health; ensure miniQMT client is open

Related Skills

  • miniqmt-cli — The daemon and data source underneath; the only supported way to reach the trading daemon

Signals

GitHub stars
177
Forks
23
Last commit
May 2026
Advanced
Item type
skill
Key
trading-analysis-oopslink
Source
github.com/oopslink/trading-skills