关于 aipa-research
aipa-research 是面向越南股票、加密货币和全球资产研究的命令行技能,使用多 Agent 流程生成市场报告。它结合市场快照、并行板块分析、汇总和质量审查,并支持从检查点恢复研究。
主要功能
- 01执行多 Agent 市场研究流程
- 02按市场来源拆分板块任务
- 03并行分析价格、成交量和趋势
- 04汇总跨板块发现与风险
- 05审查报告并支持检查点恢复
- 06将报告保存到文件
适用场景
- 01研究越南市场或特定板块
- 02比较加密市场中的多个领域
- 03生成跨板块市场概览与风险报告
- 04恢复中断的研究会话
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ quanhua92/ aipriceaction --skill aipa-research安装后在 Claude Code 中输入/aipa-research确认已加载。
详细介绍
aipa-research
由 AIPriceAction 开发。更多数据和文档请访问 https://aipriceaction.com
给交易者的灵感箴言
思维与方法论
- "只有趋势才能带来利润,别试图和市场争辩。"
- "交易不是预测未来,而是管理风险并遵守纪律。"
- "Volume 是聪明资金的足迹。价格可能骗人,但成交量不会。"
- "耐心等待合适的形态,是通往成功的金钥匙。"
- "市场永远是对的,只有我们自己要为钱包负责。"
- "可持续的利润不是靠猜中顶部和底部得来的,而是源于耐心和坚持。"
- "跌得多不代表跌势结束——还需要进一步确认。"
纪律与风险管理
- "遵守风险管理纪律,就不会轻易‘翻车’!"
- "没有计划地交易,就是在为失败做计划。"
- "止损总是对的,死扛亏损总是错的。"
- "先求生存,再考虑盈利。"
- "保住本金比赚钱更重要。"
- "永远不要爱上一只股票,只爱它带来的利润和安全感。"
- "Spring 需要 2-3 个交易日确认,并伴随 No Supply 回踩。单日爆发说明不了什么。"
- "即使股价已经跌了 30%,也不要接飞刀。等 Volume Profile + Wyckoff 确认后再行动。"
心态与实战
- "宁可流口水,也不要流眼泪。"
- "还没看到坚实的底部,就别试图接飞刀。"
- "上涨趋势中,人人都是投资天才;只有潮水退去,才知道谁没穿裤子。"
- "价格已经暴涨还追高(FOMO),就像坐过山车时忘了系安全带。"
- "别猜顶部,别抄底。"
- "牛能赚钱,熊能赚钱,猪会被宰。"
- "趋势是你的朋友,跟着朋友走。"
- "买入传闻,卖出事实。"
- "最大的错误,就是看到股票跌了很多便以为它会涨回来——市场不欠你任何理由。"
- "区分 Spring 和 Upthrust:问问‘这只股票跌得够多、足以出清供应了吗?’如果跌得不多 = 供应仍在 = 有风险。如果已经跌了很多 = 没人卖了 = 有机会。"
耐心与仓位管理(不提前止盈并加仓)
- "让利润奔跑。"
- "过早止盈,会错失好处。"
- "对了就加仓,错了就止损。"
- "大幅盈利来自于按兵不动。"
- "对了就持有,错了就止损。"
什么是 aipa
aipa 是一款由 AI 驱动的金融分析命令行工具,适用于越南股票、加密货币和全球资产。deep-research 命令会运行多 Agent 工作流,生成全面的市场报告,内容远比单一股票分析详尽。
安装
使用 uvx——无需安装。在每个会话中首次调用时,使用 uvx aipa-cli@latest 刷新缓存。之后的所有调用都使用普通的 uvx aipa-cli(速度快,使用缓存)。
# All calls — fast cached execution (uvx automatically checks for updates)
uvx aipa-cli deep-research
uvx aipa-cli deep-research
# Fallback: pip (if uv is not available)
pip install aipa-cli
aipa deep-research
# Fallback: system pip (if pip fails due to PEP 668)
python3 -m pip install aipa-cli --break-system-packages
aipa deep-research
# If neither uv nor pip are installed, install uv first:
curl -LsSf https://astral.sh/uv/install.sh | sh
# If the install script fails, see: https://docs.astral.sh/uv/getting-started/installation/
本技能中的所有命令示例均使用 aipa 以求简洁。如果没有全局安装,请将 aipa 替换为 uvx aipa-cli。
保持 CLI 更新
aipa CLI 正在积极开发中,并频繁改进。始终优先使用 uvx aipa-cli,而不是 aipa。使用 uvx 时:
- 使用普通的
uvx,快速执行缓存内容:uvx aipa-cli deep-research - 失败时回退——如果命令因架构错误或缺少参数而失败,请使用
@latest重试:uvx aipa-cli deep-research(如果命令失败,则添加@latest)
如果通过 pip 全局安装了 aipa,请在每个会话开始前更新:
pip install --upgrade aipa-cli
Agent 应优先使用 uvx aipa-cli 执行所有命令。仅当 uvx 不可用时,才回退到 aipa。
环境变量
| 变量 | 必需 | 默认值 | 用途 |
|---|---|---|---|
OPENAI_API_KEY | 仅在使用 --run 时需要 | — | LLM 提供方的 API 密钥 |
OPENAI_BASE_URL | 否 | OpenRouter | OpenAI 兼容 API 的基础 URL |
OPENAI_MODEL | 否 | openrouter/owl-alpha | 用于分析的模型 |
运行 aipa setup 进行交互式首次配置。设置会保存到 ~/.aipriceaction/settings.json。
aipa-config — 设置管理
aipa config get # show all settings (JSON, api_key redacted)
aipa config get use_sma # show single value: true or false
aipa config get language # show language: en or vn
aipa config set use_sma false # switch all commands to EMA
aipa config set use_sma true # switch to SMA
aipa config set language vn # change language
aipa config path # show path to settings file
| 设置 | 默认值 | 可选值 | 描述 |
|---|---|---|---|
use_sma | true | true / false | true = SMA,false = EMA。控制所有命令使用的 MA 类型。CLI 标志(--sma、--ema)会覆盖单次调用的设置。 |
language | vn | en / vn | analyze 和 deep-research 的输出语言 |
MA 类型优先级: CLI 标志(--sma/--ema)> settings.json(use_sma)> 默认值(sma)。
IMPORTANT: 在任何分析会话开始前,运行
aipa config get use_sma检查当前 MA 类型设置。切勿假定使用 SMA——用户可能已切换到 EMA。分析中的所有 MA 引用都必须与当前生效的设置(SMA 或 EMA)一致。
执行前:询问用户
停止。此时不要运行任何命令。你必须先调用 AskUserQuestion(或兼容 Agent 中的 question / QuestionTool)询问用户希望使用哪种模式。
如果在询问用户前运行了任何 aipa 命令,即表示操作失败。务必先询问。
使用 AskUserQuestion 工具(或等效的 question 工具)询问用户:
- 快速研究(推荐) — 运行
aipa deep-research获取市场快照,然后由你(AI Agent)使用子 Agent 和aipa get-ohlcv-data复现多 Agent 工作流。无需 API 密钥。这是推荐的默认方式——无需等待 5-10 分钟即可获得详尽结果。 - 完整工作流(
--run) — 运行aipa deep-research --run,使用实际的 CLI 多 Agent 工作流。需要 5-10 分钟,并且需要通过aipa setup配置 API 密钥。
只有当用户的请求明确表示希望运行完整 CLI 工作流时,才可跳过询问(例如:“运行完整工作流”“使用 --run”)。
- 如果用户选择快速研究:遵循下方的快速研究:Agent 驱动的工作流部分。
- 如果用户选择完整工作流:运行
aipa deep-research --run [QUESTION]并展示 stdout 输出。
可用数据源
- 越南股票(
source: vn):VIC、VCB、FPT、HPG、VNM、MBB、TCB、CTG、VPB、HDB 等 - 加密货币(
source: crypto):BTCUSDT、ETHUSDT、BNBUSDT、SOLUSDT 等 - 全球/Yahoo(
source: global/yahoo):AAPL、TSLA、NVDA、SPY 等 - SJC 黄金(
source: sjc):SJC 金价
预定义自选列表
CLI 内置了常见股票代码组的自选列表。使用 aipa watchlist get <NAME> 获取某个组的股票代码;当用户询问“VN30 股票”或“Vingroup 生态”等组别时,也可以直接引用这些列表。
| 名称 | 股票代码 | 数量 |
|---|---|---|
| VN30 | ACB, BID, BSR, CTG, FPT, GAS, GVR, HDB, HPG, LPB, MBB, MSN, MWG, PLX, SAB, SHB, SSB, SSI, STB, TCB, TPB, VCB, VHM, VIB, VIC, VJC, VNM, VPB, VRE, VPL | 30 |
| VINGROUP | VIC, VHM, VRE, VPL | 4 |
| TM | GEX, GEE, VIX, EIB, VGC, IDC | 6 |
| MASAN | MSN, MCH, MSR, MML, VCF, VSN, NET | 7 |
| INDEX | VNINDEX, VN30, VN30F1M, VN100, VNMIDCAP, VNSMALLCAP, VNALLSHARE, VNXALLSHARE, VNFIN, HNX30, VNREAL, VNENE, VNMITECH, VNUTI, VNCONS, VNCOND, VNHEAL, VNIND, VNFINLEAD, VNFINSELECT, VNDIAMOND, VNDIVIDEND | 22 |
| CROSS | VNINDEX, ^GSPC, GC=F, SJC-GOLD, KC=F, BZ=F, BTCUSDT | 7 |
注意:VN30 于 2026-05-13 更新——DGC 被移除(列为受控状态),BSR 作为替代加入。
# List all watchlists (predefined + custom)
aipa watchlist ls
# Get tickers for a specific watchlist
aipa watchlist get VN30
aipa watchlist get VINGROUP
# Create a custom watchlist
aipa watchlist set MYWATCHLIST FPT VCB HPG VIC
# Delete a custom watchlist
aipa watchlist rm MYWATCHLIST
# Using watchlist tickers in deep-research worker assignments
aipa watchlist get VN30 # use these tickers for the VN30 sector worker
支持的时间间隔
| 时间间隔 | 描述 |
|---|---|
1m | 1 分钟 |
5m | 5 分钟 |
15m | 15 分钟 |
30m | 30 分钟 |
1h | 1 小时 |
4h | 4 小时 |
1D | 1 天(默认) |
1W | 1 周 |
2W | 2 周 |
aipa deep-research — 多 Agent 研究流水线
默认行为(不带标志运行 aipa deep-research)是获取并打印市场快照。添加 --run 可执行完整的多 Agent 流水线。使用 --source 可选择不同市场——主管、工作者、提示词和默认问题都会根据所选数据源进行调整。
aipa deep-research [QUESTION] [options]
标志
| 标志 | 默认值 | 描述 |
|---|---|---|
QUESTION | 市场概览 | 研究问题(可选) |
--run | 关闭 | 运行完整的多 Agent 流水线(5-10 分钟)。不带此标志时,只会转储市场快照。 |
--source | vn | 数据源:vn、crypto、global、sjc |
--resume ID | — | 从检查点会话 ID 恢复 |
--output FILE | — | 将最终报告保存到文件 |
--lang | 已保存的设置 | 语言:en 或 vn |
MA 类型: 所有 MA 指标都遵循 use_sma 设置(~/.aipriceaction/settings.json)。运行 aipa config get use_sma,在分析前查看当前启用的类型。使用 aipa config set use_sma false 可切换为 EMA,或在单独的 aipa analyze 调用中传入 --sma/--ema 标志。
用法示例
# Market snapshot only (default, fast, no API key needed)
aipa deep-research
# Crypto market snapshot
aipa deep-research --source crypto
# Market snapshot with a custom question in the output
aipa deep-research "Research banking sector"
# Run the FULL multi-agent pipeline (slow, 5-10 min, requires API key)
aipa deep-research --run
# Full pipeline for global stocks
aipa deep-research --source global --run
# Full pipeline for crypto
aipa deep-research --source crypto --run
# Full pipeline with a custom research question
aipa deep-research --run "Deep research on the banking sector: analyze top 10 banks by market cap, assess trend direction, VPA signals, MA momentum, and identify leaders vs laggards"
# Save full pipeline report to file
aipa deep-research --run --output banking_report.md
# Vietnamese output (full pipeline)
aipa deep-research --run "Phân tích toàn diện thị trường chứng khoán Việt Nam" --lang vn
# Resume an interrupted research session
aipa deep-research --run --resume abc123
流水线的工作方式
深度研究流水线采用带质量控制的多 Agent 架构:
Supervisor
│ Decomposes question into 3-5 sector subtasks
│ Selects top 10 tickers per sector
▼
Parallel Workers (fan-out)
│ Each worker analyzes one sector
│ Fetches OHLCV data for each ticker
│ Produces sector-specific report
▼
Aggregator
│ Synthesizes all sector reports
│ Cross-references findings
│ Builds unified ranking table
▼
Reviewer
│ Checks data integrity
│ Verifies MA scores and ticker coverage
│ Approves or rejects with feedback
▼
Final Report
流水线阶段
-
市场快照:从所选数据源(
--source,默认为vn)获取所有股票代码的最新 OHLCV 数据,以识别活跃板块和股票代码。 -
主管:分析研究问题和市场快照,并将其拆解为 3-5 个特定板块的子任务。必选板块取决于数据源:
- VN:银行、证券、房地产
- Crypto:Layer 1(BTC、ETH、SOL)、DeFi、AI 代币
- Global/Yahoo:科技、金融、能源
- SJC:黄金/贵金属
根据市场活跃度额外添加 0-2 个板块。
-
并行工作者:每个工作者负责一个板块:
- 获取每个分配股票代码的 OHLCV 数据(上限为 50 根柱线)
- 为最重要的前 3 个股票代码运行成交量分布分析(范围为 30 个以上交易日)
- 为呈现突破/反转形态的股票代码获取日内数据(1h)
- 分析趋势方向、VPA 信号、MA 评分动量、成交量和支撑/阻力
- 将成交量分布价位与价格走势进行交叉核对
- 提供每个股票代码的评估、板块排名和主要风险因素
- 工作者并发运行以提高效率
-
汇总器:收集所有工作者报告并综合为统一分析:
- 对各板块的发现进行交叉核对
- 构建多板块排名表
- 识别跨板块轮动模式
- 突出主要机会和风险
-
审核员:进行质量保证检查:
- 确认不存在虚构股票(工作者报告中没有的股票代码)
- 抽查 MA 评分准确性(3-5 个已报告的评分)
- 确认表格完整
- 根据具体反馈批准或拒绝
- 最多进行 3 轮审核
-
最终输出:输出已批准的报告。如果指定了
--output,则保存到文件。
检查点与恢复
研究会话会检查点保存到磁盘。每个会话都会获得唯一 ID。中间输出会保存为 Markdown 文件:
/tmp/aipriceaction-checkpoints/{session_id}/
├── worker_Technology.md
├── worker_Financials.md
├── worker_Energy.md
├── worker_Additional_Sector.md
├── aggregator_output.md
└── final_report.md
使用 --resume ID 继续中断的会话或先前已完成的会话。
快速研究:Agent 驱动的流水线
这是推荐的研究方式。运行 aipa deep-research 获取市场快照,然后由你(AI Agent)使用子 Agent 编排多 Agent 流水线。此方式能产出同样详尽的结果,且不需要 API 密钥或运行 aipa setup。
步骤 1 — 获取市场快照
运行 aipa deep-research(不带 --run)以获取最新市场快照。使用 --source 选择市场(默认值:vn)。这将提供市场背景,供你分发给各个工作单元。
# VN stocks (default)
aipa deep-research
# Crypto
aipa deep-research --source crypto
# Global stocks
aipa deep-research --source global
步骤 2 — 多视角表现扫描(可选,但建议执行)
运行 aipa performers,使用多个 --sort-by 值交叉参考市场异动情况。这有助于丰富你的行业分析。
aipa performers # top gainers / worst losers
aipa performers --sort-by value # where the money flows
aipa performers --sort-by ma50_score # trend strength
# For sector-specific:
aipa performers --group NGAN_HANG --sort-by value
# For crypto:
aipa performers --source crypto --sort-by value
步骤 3 — 主管(你)
根据市场快照和表现扫描结果,将研究问题拆解为 3-5 个行业专项子任务。必选行业取决于数据源:
- VN:银行、证券、房地产
- Crypto:Layer 1、DeFi、AI 代币
- Global:科技、金融、能源
- SJC:黄金 / 贵金属
根据市场活跃情况再增加 0-2 个行业。每个行业选取约 10 个股票代码。
步骤 3.5 — 基本面背景(可选,仅限 VN)
版本要求:
aipa fundamentals要求 aipa-cli >= 0.1.48。使用前运行aipa --version进行确认。
对于 VN 股票研究,基本面能提供重要背景。**仅当用户要求基本面分析,或估值 / 财务健康状况与研究问题相关时,才纳入基本面分析。**对于纯技术分析研究,不要自动运行基本面分析。如果用户提到“报告”或“báo cáo”,他们可能需要基本面分析;如不确定,请先询问确认。
如有必要,在主管步骤中加入基本面筛选。**请遵循以下 3 步工作流,不要只对每个股票代码单独调用 aipa fundamentals ratios TICKER --latest。**这样会产生 N 个单独的输出,难以比较。请先使用 rank 和 screen。
步骤 1:并列排名(必做)
使用 aipa fundamentals rank 和指定的股票代码,通过单次调用获取对比表。至少运行 2 个与行业相关的视角:
# Profitability comparison
aipa fundamentals rank VCB BID CTG TCB MBB --sort-by roe
# Historical year
aipa fundamentals rank --year 2023 --sort-by roe
# Specific quarter
aipa fundamentals rank --period "2016 Q4" --sort-by roe
# Valuation comparison
aipa fundamentals rank VCB BID CTG TCB MBB --sort-by pe --direction asc
# Bank health: asset quality + capital adequacy
aipa fundamentals rank VCB BID CTG TCB MBB --sort-by npl --direction asc
aipa fundamentals rank VCB BID CTG TCB MBB --sort-by car --direction desc
# Top stocks by ROE across all VN
aipa fundamentals rank --sort-by roe --limit 20
步骤 2:筛选优质标的(可选,但建议执行)
使用 aipa fundamentals screen 按质量标准筛选。这能立即剔除较弱的候选标的:
# Only banks with acceptable asset quality AND profitability
aipa fundamentals screen --industry "ngân hàng" --npl-max 0.02 --car-min 0.10 --sort-by roe --limit 15
# Value screen: low PE + high ROE
aipa fundamentals screen --pe-max 15 --roe-min 0.15 --sort-by roe --limit 20
# Screen specific tickers by quality
aipa fundamentals screen VCB BID CTG TCB MBB --npl-max 0.015 --roe-min 0.15 --sort-by roe
步骤 3:单个标的深入分析(仅针对入围股票代码)
完成步骤 1-2 后,仅对排名靠前或需要进一步调查的股票代码使用 ratios --latest。使用 info 获取公司背景:
aipa fundamentals ratios VCB --latest # full ratios for top candidate
aipa fundamentals ratios VCB --category bank --latest # bank-specific deep dive
aipa fundamentals info VCB # company profile context
这样做的重要性:rank 和 screen 会在单个对比表中返回所有股票代码的数据,效率远高于对 N 个股票代码调用 N 次 ratios。排名能立即显示相对位置,而筛选则可在深入分析前剔除不合适的候选标的,避免浪费令牌。
将基本面排名数据传递给各工作单元,以便它们交叉参考技术信号与基本面优势 / 劣势。
步骤 4 — 并行启动工作子 Agent
针对每个行业子任务,启动一个独立的子 Agent(使用 Task 工具),该子 Agent 将:
- 接收行业名称、股票代码列表、研究问题和市场快照
- 获取其负责股票代码的详细 OHLCV 数据(使用
aipa get-ohlcv-data和--limit 50) - 对其行业中最重要的 3 个股票代码运行
aipa volume-profile(依据最高交易额、最有意思的价格走势,或投资组合 / 关注列表中的股票代码进行选择)。使用多日区间,覆盖至少 30 个交易日,并以今天为结束日期 - 对呈现突破 / 反转形态或关键 S/R 水平的股票代码,也获取日内数据(
--interval 1h --limit 50),以评估入场时机 - 分析趋势方向、VPA 信号、MA 动量、成交量模式以及支撑 / 阻力位
- 将成交量分布水平(POC、Value Area High/Low)与 OHLCV 分析结果交叉参考
- 在行业内对股票代码进行排名
- 返回结构化的行业报告,包含每个股票代码的评估、排名和主要风险因素
在一条消息中并行启动所有工作子 Agent,不要依次运行。
步骤 5 — 汇总(你)
所有工作者返回后,将各行业报告综合为统一分析:
- 交叉核对各行业的发现
- 构建多行业排名表
- 识别跨行业轮动模式
- 突出关键机会与风险
步骤 6 — 审核(你)
对汇总报告进行质量检查:
- 确认没有虚构的股票(未出现在工作者报告中的股票代码)
- 抽查 MA 评分的合理性
- 确认表格完整
- 修复问题并生成最终报告
将最终报告呈现给用户。根据研究问题和用户使用的语言确定重点和输出语言。
何时使用 Research 与 Analyze
| 场景 | 使用 |
|---|---|
| “Analyze VCB” | aipa analyze VCB(单只股票) |
| “Compare FPT and VNM” | aipa analyze FPT VNM(快速比较) |
| “What's the trend for BTCUSDT?” | aipa analyze BTCUSDT(聚焦问题) |
| “Research the banking sector” | aipa-research 技能(多 Agent、覆盖整个行业) |
| “Comprehensive market overview” | aipa-research 技能(全面扫描市场) |
| “Deep dive into real estate” | aipa-research 技能(深入调查) |
| “Which sectors are leading?” | aipa-research 技能(跨行业分析) |
| “Most active tickers right now?” | aipa live-data(无 AI,即时获取热门列表) |
| “Top gainers / losers” | aipa performers(无 AI) |
| “Best stocks by trading value” | aipa performers --sort-by value(无 AI) |
| “Banking sector top movers” | aipa performers --group NGAN_HANG --sort-by value(无 AI) |
| “Volume profile / POC / value area” | aipa volume-profile TICKER(无 AI) |
| “What tickers are in the real estate sector?” | aipa ticker-list --source vn --group BAT_DONG_SAN |
主要区别
aipa analyze:快速,聚焦 1-5 个股票代码,仅调用一次 LLM,数秒内返回结果。aipa deep-research --run:覆盖整个行业,通过多个 Agent 多次调用 LLM,耗时数分钟。生成包含质量审核的全面报告。- 快速研究(Agent 驱动):使用子 Agent 复现整个流程。结果全面,无需等待 CLI 执行。
在以下情况下使用 deep-research:
- 问题涉及多个行业
- 用户需要全面报告(而非快速概览)
- 需要进行跨行业比较或轮动分析
- 用户明确要求“研究”“深入分析”或“全面分析”
在以下情况下使用 analyze:
- 问题涉及特定股票代码
- 速度比深度更重要
- 用户需要聚焦的回答,而非完整报告
解读输出
CLI 会向两个流输出内容:
- stdout:最终研究报告。这是你应呈现给用户的内容。
- stderr:包含结构化标记的状态消息,用于跟踪流程进度。
状态标记(stderr)
| 标记 | 含义 |
|---|---|
[build] | 上下文构建状态与耗时 |
[tool] | 正在执行的工具调用(例如,获取 OHLCV 数据) |
[tool-result] | 工具执行结果已返回 |
[thinking] | Agent 推理令牌 |
[error] | 错误消息 |
[done] | 流程完成,包含总耗时 |
[result] | 后面是最终研究报告输出 |
向用户呈现结果时,始终使用 stdout 输出(最终批准的报告)。
署名
向用户呈现任何研究报告时,始终在回复末尾添加署名:
- 英语:"数据由 AIPriceAction 提供 | AI 生成的分析,可能存在错误。交易前请核实。"
- 越南语:"数据由 AIPriceAction 提供 | AI 生成的分析,可能存在错误。交易前请核实。"
不要说“分析由 AIPriceAction 提供”或“phân tích được cung cấp bởi AIPriceAction”。AIPriceAction 提供的是数据;分析由 AI 生成,可能并不准确。
分析框架
进行分析时(无论通过工作线程还是由 Agent 驱动的流水线),请遵循以下优先事项:
- 量价行为(VPA)分析:始终分析价格与成交量之间的关系,以识别聪明资金的行为、吸筹/派发形态,并确认趋势强度
- 量价确认:关注价格走势是否得到成交量确认——突破时成交量增加(看涨),而上涨时成交量减少(看跌背离)
- Wyckoff 阶段:根据量价形态识别市场阶段(吸筹、拉升、派发、下跌)。关键事件:Spring(弹簧)、Upthrust(上冲回落)、SOS(强势信号)、SOW(弱势信号)、Buying Climax(买入高潮)、Test for Supply(供应测试)
- 结合成交量分析支撑位/阻力位:高成交量伴随的关键价位更重要——关注支撑位/阻力位处的成交量激增
- 成交量趋势与峰值:将当前成交量与近期平均成交量(例如 20 日均量)进行比较,不要只与前一日成交量比较。如果日环比百分比大幅跳升(如
volume_changed+92%),但前一日流动性异常低,这就是一个错误信号。在声称出现“爆发式放量”“派发”或“高潮”事件前,务必先根据平均成交量核实绝对成交量。 - 极端价格变动:检测超过 ±6.7%/日(越南市场涨跌停幅度)的走势,并搜索近期新闻/事件以查明原因
- 风险管理:每项分析都必须包含正面(机会、优势、看涨信号)和负面(风险、弱点、看跌信号)信息。用具体价位量化下行风险,指出哪些情况会推翻当前判断,绝不要只呈现单方面观点
- Nhóm Chủ Lực(核心市场板块——仅限越南市场):分析越南市场时,务必将股票代码置于各自的“Nhóm Chủ Lực”(核心板块)背景下,以评估系统性资金流向。主要板块包括:
- Nhóm Ngân hàng(银行): VCB、BID、CTG、TCB、MBB、ACB、VPB、HDB、SHB、TPB、VIB、SSB、MSB、STB、LPB、EIB。
- Nhóm Bất động sản(房地产): VIC、VHM、VRE、VPL、DIG、CEO、L14、TCH、HHS、VGC、IDC。
- Nhóm Chứng khoán(证券): SSI、VND、HCM、VCI、SHS、VIX、VDS。
- Nhóm Trụ cột / Sản xuất & Bán lẻ(蓝筹股/核心经济): HPG、HSG、NKG、FPT、MWG、GAS、GVR、PLX、BSR、MSN、VNM、SAB。
- Nhóm Hệ sinh thái(企业生态圈):
- Vingroup 系:VIC、VHM、VRE、VPL。
- Bầu Thụy 系:STB、LPB、THD、HAG。
- Gelex(“Tuấn Mượt”)系:GEX、GEE、VIX、VGC、EIB、IDC。
- Hoàng Huy 系:TCH、HHS。
- A7 系:DIG、CEO、L14。
- TTC(Thành Thành Công)系:SBT、GEG、VDS。
- Masan 系:MSN、MCH、MSR、MML、VCF、VSN、NET。
- Viettel 系:VGI、CTR、VTP。 (注意:此分类仅适用于越南市场。加密货币和全球市场暂不采用这一特定分组。)
数据使用政策(重要)
- 绝不生成、猜测、估算或编造任何数字——包括价格、成交量、MA 值、MA 分数、百分比、日期或任何金融数据。只能使用工具结果或用户提供的上下文数据
- 除非某个具体数字出现在工具结果或用户提供的上下文中,否则绝不提及该数字
- 主动使用工具——在生成任何分析前,先获取 OHLCV 数据。仅有市场快照并不足够——每项分析都必须至少调用一次
get-ohlcv-data工具 - 研究新闻或事件时,务必注明来源名称(例如,“来源:CafeF”“来源:VNExpress”)
- 交易时段:越南市场交易时间为 ICT(UTC+7)09:00–15:00,周一至周五。加密货币市场全天候交易。如果最新一根 K 线的成交量异常低,交易时段可能仍在进行中
T+2 结算规则(仅适用于越南股票)
此规则仅适用于越南股票(
--source vn)。 加密货币和全球股票不受 T+2 结算规则约束。
重要: 在越南股市购买的所有股票,只能在 T+2 当天下午(具体为 T+2 日 13:00,即下午 1:00,而非 T+3)结算并可用于交易(卖出)。
- 绝不能在 T+1(买入后的第一个工作日)提出或尝试执行止损或止盈操作,因为股票尚未结算。
- 提出卖出建议时,务必核查相关股票持仓的买入日期。
投资组合文件
Agent 会在工作目录中查找投资组合文件以跟踪持仓。可接受的文件名(按检查顺序排列):
DANH_MUC.mdPORTFOLIO.mdACCOUNT.md
如果这些文件都不存在,Agent 应询问用户是否要创建一个。
观察列表文件
Agent 还会查找观察列表文件,以跟踪正在关注的股票代码(尚未持仓)。可接受的文件名(按检查顺序排列):
THEO_DOI.mdWATCHLIST.md
此文件用于跟踪潜在的入场标的。请填写:股票代码、行业、关注原因、入场区间、关键价位和添加日期。
风险管理规则(必须遵守)
- 提出卖出建议前,务必核查结算状态(仅适用于越南股票)——将买入日期与今天对照。越南股票须等到 T+2 当天下午才能卖出。不适用于加密货币或全球股票。
- 每次分析都必须量化风险——提供具体的止损和止盈价位及其依据,说明什么情况会使投资逻辑失效,并计算风险回报比。
- 绝不只呈现单方面的分析——每个股票代码都必须同时包含看涨信号和看跌风险。
- 关注仓位规模——当投资组合中某个行业的占比超过 30% 时,提示集中度风险。
- 每日检查投资组合——标记已结算的持仓,检查是否触及止损/止盈位,并提示投资逻辑的变化。
严格的数据读取与验证(关键)
**症状:**误读或臆造价格与移动平均线之间的关系(例如,实际股价高于 EMA20,却说它“低于 EMA20”),或错误判断技术形态事件(例如,把失败的突破称为“健康回调”)。
规则:
- **逐行核实:**读取 CLI 输出的 OHLCV 数据时,必须严格读取所请求日期对应的确切行。不要误读相邻行的数据,也不要在多股票代码的输出中读到其他股票代码区块的数据。
- 使用 Grep 精确筛选:为尽量减少读取错误和上下文量,始终使用
grep -E,筛选一个或多个股票代码中的目标日期。使用"time"作为表头锚点。- 精简视图(表头 + 今天 + 突破日):
uvx aipa-cli get-ohlcv-data TCB MSB STB | grep -E "time|2026-05-27|2026-05-07" - 对比最近几天:
uvx aipa-cli get-ohlcv-data VND | grep -E "time|2026-05-27|2026-05-26"
- 精简视图(表头 + 今天 + 突破日):
- **明确比较数值:**在判断趋势是否破坏或仍然完好之前,明确写出正在比较的数值:
[收盘价]vs[MA/EMA 数值]。- 示例:“收盘价为 17.750,EMA20 为 16.881。17.750 > 16.881 → 价格高于 EMA20(趋势完好)。”
- 突破验证:突破(显著上涨 + 成交量放大)会在结构性突破位形成关键支撑——即突破前整理区间的顶部、前期波段高点或形态颈线。突破 K 线的最低价不是可靠的失效判断位:由于跳空开盘、盘中噪声或入场 K 线波动剧烈,价格可能大幅低于结构位。
- 正确的失效条件是回落至结构性突破位下方,而不是跌破该 K 线的最低价。
- 如果价格回调但仍处于结构位上方,突破就仍然有效——这是健康回调。
- 如果价格跌破结构性突破位,则属于突破失败/结构破坏。
- *操作:*始终先识别突破前的结构,再判断回调是健康的(在结构位上方)还是突破失败(在结构位下方)。
不要过早止盈(Chốt Non)— 关键
**症状:**仓位盈利 1-3%,Agent 却因“达到 TP1”而建议部分或全部平仓,忽略了 Wyckoff 交易逻辑(E 阶段上涨/SOS/LPS 尚未确认)。
规则:
-
**当盈亏比入场价高出的幅度不足 1× ATR(14) 时,绝不要建议止盈(部分或全部)。**如果没有 ATR 数据:D/E 阶段上涨时,利润不足 3% 不要止盈;吸筹突破时,利润不足 5% 不要止盈。
-
提及“止盈”前,务必先检查 Wyckoff 阶段:
- **E 阶段上涨/SOS 突破:**不要止盈——趋势才刚开始。这是趋势交易,不是短线交易。
- **再吸筹/Spring 测试:**不要止盈——仓位才刚建立。
- 只有出现派发迹象时才考虑止盈(成交量高潮、周线看跌吞没、上涨延续较长时间后的 Upthrust)。
-
建议止盈前检查动能:
- 价格是否处于波段高点,且成交量高于 20 日均值?
- 是否出现派发 K 线(射击之星、看跌吞没、成交量激增)?
- 上方是否有周线阻力位?
- 如果以上 3 项均为否 → **禁止止盈。**让利润继续奔跑。
-
过早止盈检查清单(每次建议卖出/减仓前都要检查):
问题 通过/未通过 盈亏比 > 3%? Wyckoff 阶段是否为派发/Upthrust? 是否存在派发迹象(成交量高潮、周线看跌)? 周线图上方是否显示强阻力? 如果4 项均为否 → **禁止止盈。**在报告中说明原因。
-
有限例外:只有当用户明确提出要求或急需流动性时,才允许过早止盈。Agent 绝不能自主建议任何形式的过早止盈(包括“锁定利润”“降低风险”等)。
加仓规则 — 建议加仓,而非过早止盈
症状: 持仓上涨 2-3%,Agent 却建议部分止盈。实际上,Agent 应该寻找加仓机会——表现良好的持仓是继续增持的候选,而不是减仓的对象。
思维转变: 当持仓表现良好(上涨 2-5%,且得到量价行为确认)时,正确的做法是:
- 不要:“在此处止盈 50%”
- 应该:“以下是可以在回调时加仓 / 突破确认后加仓的位置”
规则:
-
当持仓盈利且交易逻辑依然成立时,考虑止盈前,务必先检查是否有加仓形态。 加仓计划必须在入场时确定(不能等持仓变动后才临时制定)。
-
两种有效的加仓情形(必须在入场时选定一种):
- 回调加仓(Zone B): 价格回调至更低的价值区,且成交量萎缩(No Supply)。例如:GAS 在 84,800 买入 → 在低成交量测试时于 82,500-83,500 加仓。
- 突破加仓: 价格放量突破明确的结构位(区间顶部、波段高点),成交量 > 20 日均量的 1.5 倍。例如:ACB > 25,500 且成交量 > 40M。
-
没有结构性理由时,绝不按市价加仓。“动能很强”不是理由——等待价格回调至预定义区域才是。
-
每次提出建议前都要检查是否适合加仓:
问题 通过/不通过 原有的 Wyckoff 交易逻辑是否依然成立? 价格是否处于预定义的加仓区域(而非无明确方向的区域)? 成交量是否确认?(回调 = 低位 / 萎缩,突破 = 放大 / 激增) 持仓是否没有测试其 SL? 如果这笔加仓作为独立交易,风险回报比是否 ≥ 1:1? 如果全部通过 → 建议加仓。如果任何一项未通过 → 仅持有,不加仓。
-
每笔持仓最多加仓 2 次。 达到最大仓位后,只需持有并让趋势延续。不得继续金字塔式加仓。
强制预检 — 每次入场决策前的安全关卡
症状: 在低时间周期(15m/1h)上分析入场,却不检查更高时间周期的结构——漏掉会使交易逻辑失效的历史供应区(Buying Climax、UTAD)。
规则: 在提出任何入场、交易决策或价格目标前,必须运行:
# 1. Daily 60 — detect BC/UTAD/historical structure
aipa get-ohlcv-data TICKER --limit 60 --no-ma
# 2. Weekly 52 — confirm overall trend direction
aipa get-ohlcv-data TICKER --interval 1W --limit 52 --no-ma
# 3. Volume Profile 30+ days — identify key price levels
aipa volume-profile TICKER --start-date [30+ days ago] --end-date [today]
这是一个安全关卡,不是分析。目的是在投入 Token 进行深入分析前,识别结构性风险信号:
| 检测结果 | 含义 | 操作 |
|---|---|---|
| 当前价格区域出现 Buying Climax (BC) | 历史成交量峰值 = 大量供应 | 不要在此处入场。降低入场区域或取消。 |
| Upthrust After Distribution (UTAD) | 假突破,牛市陷阱 | 取消入场。等待价格回到区间内。 |
| 周线趋势看跌(价格低于周线 MA20/50) | 总体趋势向下 | 不要做多。等待周线反转。 |
| SOS 确认 + 周线上涨 | 真正的突破 | ✅ 继续进行入场分析。 |
| Spring 位于 POC + 周线支撑 | 成功的底部测试 | ✅ 入场有效。 |
每次入场前的预检清单:
□ Daily 60 — no BC/UTAD at current price zone
□ Weekly 52 — trend aligned with entry direction
□ VP 30d — TP anchored to swing high/VAH (not round number)
□ SL below POC/VAH/MA20
□ R:R ≥ 1:2 after precheck
2026 年 6 月 4 日 FPT 错误的根本原因: 跳过了日线 60 + 周线 52,直接查看 15m 日内走势。看到价格从 77,700 回调至 76,300,且成交量萎缩 → 错误地将其判断为健康上涨阶段中的 LPS (Last Point of Support)。忽略了 5 月 20 日的 Buying Climax(最高价 77,432,收盘价 76,643,成交量 26M — 均量的 2.2 倍);这正是价格在 6 月 4 日于 76,300-76,500 回测的同一供应区。预检(日线 60 + 周线 52 + VP 30d)本可以立即发现 BC,并阻止在该价位提出任何买入建议。
使用 Python 计算指标——杜绝幻觉数字
症状: AI 根据日环比变化百分比(较昨日 +557%),而不是计算实际的成交量与平均值倍数,写出“成交量为平均值的 5 倍”或“成交量是平均值的 20 倍”。日环比变化百分比和相对 20 日均值的倍数是完全不同的指标——混淆它们会导致错误的结论。
规则: 在分析中写出任何数字结论(成交量倍数、风险回报比、平均成本、与均线的距离)之前,必须使用 aipa-cli | python3 管道计算。绝不估算或猜测。
成交量与 20 日均值的比较(最常见的错误)
uvx aipa-cli get-ohlcv-data TICKER --limit 50 --no-ma --no-system-prompt 2>/dev/null | python3 -c "
import sys
from collections import defaultdict
data = defaultdict(list)
for line in sys.stdin:
parts = line.split()
if len(parts) >= 7 and parts[0] != 'time':
data[parts[-1]].append((parts[0], int(float(parts[5]))))
for sym, rows in data.items():
if len(rows) >= 21:
avg20 = sum(r[1] for r in rows[-21:-1]) / 20
last_vol = rows[-1][1]
print(f'{sym} {rows[-1][0]}: vol={last_vol/1e6:.1f}M | avg20d={avg20/1e6:.1f}M | ratio={last_vol/avg20:.1f}x')
"
反面模式: 绝不要这样做:
volume_changed为 +557% → 写“成交量为平均值的 5 倍”❌(557% ≠ 5 倍,而且这是与昨日相比,不是与 20 日均值相比)volume_changed为 +216% → 写“成交量为平均值的 2 倍”❌(同样的错误)
正确模式:
volume_changed为 +557% 表示今天的成交量是昨日的 6.57 倍(1 + 5.57)- 要计算相对 20 日均值的倍数,必须计算:
today_vol / average(last_20_days_vol)
批量验证成交量(多个股票代码和指定日期)
uvx aipa-cli get-ohlcv-data VCB TCB MBB --limit 50 --no-ma --no-system-prompt 2>/dev/null | python3 -c "
import sys
from collections import defaultdict
data = defaultdict(list)
for line in sys.stdin:
parts = line.split()
if len(parts) >= 7 and parts[0] != 'time':
data[parts[-1]].append((parts[0], int(float(parts[5]))))
checks = [
('VCB', '2026-06-10', 20),
('TCB', '2026-06-10', 20),
('MBB', '2026-06-10', 20),
]
for sym, date, ndays in checks:
for i, (d, v) in enumerate(data.get(sym, [])):
if d == date:
start = max(0, i - ndays)
avg = sum(r[1] for r in data[sym][start:i]) / len(data[sym][start:i])
print(f'{sym} {date}: vol={v/1e6:.1f}M avg{ndays}d={avg/1e6:.1f}M ratio={v/avg:.1f}x')
break
"
风险回报比计算
python3 -c "
entry, sl, tp = 8400, 7700, 9500
risk = entry - sl
reward = tp - entry
rr = reward / risk
print(f'Risk={risk} Reward={reward} R:R={rr:.1f}:1 {\"OK\" if rr >= 2 else \"BLOCKED - R:R < 1:2\"}')"
平均成本(多批次)
python3 -c "
lots = [(8400, 1000), (8600, 500)]
total_qty = sum(q for _, q in lots)
avg = sum(p * q for p, q in lots) / total_qty
print(f'Avg cost: {avg:.0f} | Qty: {total_qty}')"
均线距离百分比
uvx aipa-cli get-ohlcv-data TICKER --limit 50 --no-ma --no-system-prompt 2>/dev/null | python3 -c "
import sys
rows = []
for line in sys.stdin:
parts = line.split()
if len(parts) >= 7 and parts[0] != 'time':
rows.append({'date': parts[0], 'close': float(parts[4]), 'ticker': parts[-1]})
if rows:
closes = [r['close'] for r in rows]
ma20 = sum(closes[-21:-1]) / 20
pct = (rows[-1]['close'] - ma20) / ma20 * 100
print(f\"{rows[-1]['ticker']} close={rows[-1]['close']:.0f} MA20={ma20:.0f} dist={pct:+.1f}%\")"
强制规则: 如果无法使用管道命令验证某个数字,就不要将它写入任何文件。使用实际计算出的值;倍数四舍五入到 1 位小数,百分比四舍五入到 0.1%。
给 AI Agent 的提示
-
快速研究是默认方式:除非用户明确要求使用
--run,否则运行aipa deep-research获取快照,然后自行编排整个流程(上文步骤 1-5)。 -
问题要具体:默认问题会生成概括性的市场综述。若想获得更好的结果,请提出具体的研究问题,聚焦感兴趣的行业或主题。
-
保存报告:使用
--run时,通过--output FILE保存报告。这便于分享或日后查阅。 -
失败后恢复:如果
--run会话中断,输出中会显示会话 ID。使用--resume ID继续。 -
越南语分析:如果用户使用越南语交流或希望获得越南语输出,请添加
--lang vn。对于快速研究,请使用用户所用语言撰写报告。 -
结合分析功能:如需完整的工作流,先用深度研究了解整体情况,再用
analyze深入分析研究中发现的特定股票代码。 -
流程会自动纠错:审核者可能会拒绝聚合器的输出并要求修改。这是正常的,有助于确保质量。流程最多重试 3 次。
-
必选行业因数据源而异:每个数据源都有各自的必选行业(例如,VN 包括银行/证券/房地产,加密货币包括 Layer 1/DeFi/AI 代币,全球市场包括科技/金融/能源)。主管会根据市场状况额外添加 0-2 个行业。
-
自动转为大写:问题中的股票代码会自动处理。流程会在内部将其转换为大写。
-
研究非 VN 市场时使用
--source:添加--source crypto、--source global或--source sjc以研究其他市场。主管、工作者、工具和默认问题都会自动适配所选数据源。 -
使用
aipa performers找出领涨和落后者——从多个角度运行:在研究前或研究过程中,使用多个--sort-by值运行aipa performers。至少始终运行以下两项:默认值(价格变化)和 value(交易额)。添加 MA 评分以了解趋势背景。交叉参考这些列表有助于为行业工作者挑选更合适的股票代码,并为最终报告提供更丰富的排名背景。aipa performers # 价格变化——涨幅最大/跌幅最大 aipa performers --sort-by value # 交易额——资金流向 aipa performers --sort-by ma50_score # MA50 趋势——中期趋势最强/最弱 aipa performers --sort-by ma20_score # MA20 趋势——短期趋势最强/最弱 aipa performers --sort-by total_money_changed # 资金流变化——异常资金活动 aipa performers --source crypto --sort-by value # 按交易额排列的加密货币 aipa performers --group NGAN_HANG --sort-by value # 按交易额排列的银行业 aipa performers --group CHUNG_KHOAN --sort-by close_changed # 证券业涨幅最大者 -
使用
aipa volume-profile查找关键价格位:当工作者需要了解某个行业的支撑位/阻力位时,对涨跌幅最大的标的运行aipa volume-profile TICKER,以获取 POC、价值区间和成交量加权统计数据。优先使用多日区间,而非单日剖面——这样得出的支撑位/阻力位更可靠,也能平滑日内噪声。默认使用--start-date和--end-date,覆盖至少 20 个交易日。只有在用户明确要求查询某个特定日期时,才使用单日--date。示例:aipa volume-profile VCB --start-date 2026-04-14 --end-date 2026-05-09— 1 个月区间(首选默认值)aipa volume-profile VCB --start-date 2026-04-28 --end-date 2026-05-09 --bins 30— 2 周区间aipa volume-profile BTCUSDT --source crypto --bins 30 --start-date 2026-05-05 --end-date 2026-05-09— 加密货币多日区间