关于 aipa-analyze
aipa-analyze 是用于分析越南股票、加密货币和全球资产的 AI 命令行技能,将 OHLCV 数据与大模型分析结合,并采用 Wyckoff、VPA 和均线动量评分等方法。
主要功能
- 01AI 技术分析
- 02同时分析多个代码
- 03采用 Wyckoff 和 VPA 方法
- 04可配置周期和移动平均线
- 05自定义问题和分析语言
适用场景
- 01分析 VCB 等越南股票
- 02比较多个代码
- 03查看加密货币或全球资产图表
- 04通过成交量分布评估价格区间
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ quanhua92/ aipriceaction --skill aipa-analyze安装后在 Claude Code 中输入/aipa-analyze确认已加载。
详细介绍
aipa-analyze
由 AIPriceAction 开发。更多数据和文档请访问 https://aipriceaction.com
给交易者的灵感箴言
思维与方法论
- "只有趋势才能带来利润,别试图与市场争辩。"
- "交易不是预测未来,而是管理风险并遵守纪律。"
- "Volume 是聪明资金的足迹。价格可能会骗人,但成交量不会。"
- "耐心等待合适的形态,是通往成功的金钥匙。"
- "市场永远是对的,我们的钱包只能由自己负责。"
- "可持续的利润不是靠猜对顶部和底部得来的,而是源于耐心与坚持。"
- "跌得多不一定就跌完了——还需要进一步确认。"
纪律与风险管理
- "遵守风险管理纪律,就不会‘翻车’,明白吗!"
- "没有计划地交易,就是在为失败做计划。"
- "止损永远是对的,扛亏永远是错的。"
- "先活下来,再考虑盈利。"
- "保住本金比赚钱更重要。"
- "永远不要爱上一只股票,只爱它带来的利润和安全感。"
- "Spring 需要 2-3 个交易日确认,并伴随 No Supply 回调。单日爆发说明不了什么。"
- "即使已经跌了 30%,也不要接飞刀。等 Volume Profile + Wyckoff 确认后再说。"
心理与实战
- "宁可流口水,也不要流眼泪。"
- "还没看到坚实的底部之前,别试图接飞刀。"
- "在上涨趋势中,人人都是投资天才;只有潮水退去时,才知道谁没穿裤子。"
- "价格已经暴涨后再追买(FOMO),就像坐过山车却忘了系安全带。"
- "别猜顶部,别探底部。"
- "牛能赚钱,熊能赚钱,猪会被宰。"
- "趋势是你的朋友,跟着朋友走。"
- "买入传闻,卖出事实。"
- "最大的错误,是看到股票跌了很多就以为它会涨回来——市场不欠你一个理由。"
- "区分 Spring 和 Upthrust:问问‘这只股票跌得够多、足以出清供应了吗?’如果跌得不够多 = 供应仍在 = 有风险。如果已经跌得够多 = 没人再卖 = 有机会。"
耐心与仓位管理(不提前止盈并加仓)
- "让利润奔跑。"
- "过早止盈,就少了滋味。"
- "判断正确就加仓,判断错误就止损。"
- "大幅盈利源于按兵不动。"
- "对了就持有,错了就止损。"
什么是 aipa
aipa 是一款由 AI 驱动的金融分析 CLI,适用于越南股票、加密货币和全球资产。它将 OHLCV 价格数据与 LLM 分析相结合,运用 Wyckoff、VPA(Volume Price Analysis)和 MA 动量评分等框架,生成可执行的交易见解。
安装
使用 uvx,无需安装。每次会话的首次调用,请使用 uvx aipa-cli@latest 刷新缓存。之后的所有调用都使用普通的 uvx aipa-cli(速度快,且使用缓存)。
# All calls — fast cached execution (uvx automatically checks for updates)
uvx aipa-cli analyze VCB
uvx aipa-cli analyze TCB
# Fallback: pip (if uv is not available)
pip install aipa-cli
aipa analyze VCB
# Fallback: system pip (if pip fails due to PEP 668)
python3 -m pip install aipa-cli --break-system-packages
aipa analyze VCB
# 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 analyze VCB - 失败时回退——如果命令因架构错误或缺少参数而失败,请使用
@latest重试:uvx aipa-cli analyze VCB(如果命令失败,则添加@latest)
如果通过 pip 全局安装了 aipa,请在每次会话前更新:
pip install --upgrade aipa-cli
Agent 应优先使用 uvx aipa-cli 执行所有命令。只有在 uvx 不可用时,才回退到 aipa。
环境变量
| 变量 | 必需 | 默认值 | 用途 |
|---|---|---|---|
OPENAI_API_KEY | 是(用于 AI) | — | 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)一致。
可用数据源
- 越南股票(
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 analyze
aipa analyze $(aipa watchlist get VN30)
支持的时间间隔
| 时间间隔 | 说明 |
|---|---|
1m | 1 分钟 |
5m | 5 分钟 |
15m | 15 分钟 |
30m | 30 分钟 |
1h | 1 小时 |
4h | 4 小时 |
1D | 1 天(默认) |
1W | 1 周 |
注意:所有时间间隔均可原生使用——1m、5m、15m、30m、1h、4h、1D、1W、2W。非原生时间间隔会在客户端根据基础数据聚合生成。
aipa analyze — AI 分析
对一个或多个股票代码运行 AI 驱动的技术分析。
aipa analyze TICKER [TICKERS...] [options]
标志
| 标志 | 默认值 | 描述 |
|---|---|---|
TICKER [TICKERS...] | — | 一个或多个股票代码(自动转为大写) |
--interval | 1D | 时间间隔:1m、5m、15m、30m、1h、4h、1D、1W、2W |
--limit N | 20 | 获取的柱线/蜡烛图数量 |
--source | 自动检测 | 按来源筛选:vn、crypto、global |
--start-date | — | 开始日期(例如 2025-04-01) |
--end-date | — | 结束日期(例如 2025-04-30) |
--reference-ticker | 自动检测 | 参考代码:VNINDEX(VN 股票)、BTCUSDT(加密货币)、^GSPC(全球) |
--lang | 已保存的设置 | 语言:en 或 vn |
--ma-type | 设置 | 移动平均线类型:ema 或 sma(来自 use_sma 设置) |
--question TEXT | 模板 0 | 自定义分析问题(覆盖模板) |
--questions | — | 列出可用的问题模板并退出 |
--context-only | — | 输出原始上下文,不调用 LLM(无需 API 密钥) |
--no-system-prompt | — | 从上下文输出中排除系统提示词 |
--verbose | — | 分析期间显示思考 token |
使用示例
# Basic single-ticker analysis
aipa analyze VCB
# Multi-ticker comparison
aipa analyze VCB TCB MBB CTG VPB
# Specific interval and bar count
aipa analyze BTCUSDT --interval 4h --limit 50
# Custom date range
aipa analyze FPT --start-date 2025-01-01 --end-date 2025-05-01
# Custom analysis question
aipa analyze VIC --question "What is the Wyckoff phase and what are the key price targets?"
# Vietnamese language output
aipa analyze VNM --lang vn
# Dump raw data context without AI analysis (no API key needed)
aipa analyze VCB --context-only
# Show thinking tokens during analysis
aipa analyze HPG --verbose
# Override auto-detected reference ticker
aipa analyze VCB --reference-ticker VN30
# Specific source
aipa analyze BTCUSDT --source crypto
分析工作流
每次分析请求都请遵循以下多步工作流。不要只运行 aipa analyze 就停止。
第 1 步:日线周期分析
先在日线图上运行 aipa analyze。至少使用 --limit 50 以获得足够的上下文。识别 Wyckoff 阶段或设置 TP 时,使用 --limit 60 或更高值。
aipa analyze VCB --limit 50
第 2 步:通过成交量分布分析支撑位/阻力位
运行 aipa volume-profile 获取结构性价格水平(POC、价值区域、高成交量节点)。使用至少覆盖 20 个交易日的多日区间。
aipa volume-profile VCB --start-date 2026-04-14 --end-date 2026-05-27
**注意:**上述日期仅为示例。始终使用至少覆盖 30 个交易日(约 6 个日历周)且截至今天的区间。动态计算 --start-date。
将成交量分布的水平与日线分析交叉对照——成交量密集区所在的关键支撑位/阻力位更具参考价值。
第 3 步:深入分析日内走势(如有需要)
根据日线分析,判断查看日内走势是否有帮助:
| 触发条件 | 操作 |
|---|---|
| 日线显示正在形成突破/反转 | 运行 --interval 1h --limit 50 查看入场时机 |
| 日线显示在关键价位附近窄幅盘整 | 运行 --interval 4h --limit 50 检查形态 |
| 用户询问入场/出场时机或剥头皮交易 | 运行 --interval 15m --limit 50 查看微观结构 |
| 日线图走势明确且时机没有歧义 | 跳过日内分析——日线分析已足够 |
# 1h for entry/exit timing
aipa analyze VCB --interval 1h --limit 50
# 15m for scalping or micro structure
aipa analyze VCB --interval 15m --limit 50
第 4 步:呈现综合分析
综合所有步骤,整合为一条回复:
- 日线图:趋势、Wyckoff 阶段、关键价位
- 成交量分布:经成交量确认的结构性支撑位/阻力位
- 日内走势(如有分析):入场/出场时机、短期形态
不要将每个步骤单独作为一个章节呈现。请将各项见解整合为连贯的分析。
何时使用此技能或其他技能
| 用户请求 | 使用 |
|---|---|
| “分析 VCB” | aipa analyze VCB |
| “比较 FPT 和 VNM” | aipa analyze FPT VNM |
| “对 HPG 进行 Wyckoff 分析” | aipa analyze HPG --question "Wyckoff analysis with phases, events, and price targets" |
| “深入研究银行业” | 改用 aipa-research 技能 |
| “获取 VCB 的价格数据” | 改用 aipa-data 技能 |
| “显示 BTC 的 OHLCV 蜡烛图” | 改用 aipa-data 技能 |
| “今天涨幅最高的股票有哪些?” | aipa live-data(无需 AI,快速查看市场概况) |
| “涨幅榜/跌幅榜” | aipa performers(无需 AI) |
| “按成交额筛选最佳股票” | aipa performers --sort-by value(无需 AI) |
| “成交量分布/POC/价值区域” | aipa volume-profile TICKER(无需 AI) |
| “有哪些银行股?” | aipa ticker-list --source vn --group NGAN_HANG |
关键规则:AI 洞见 → aipa-analyze,原始数据 → aipa-data,综合报告 → aipa-research,快速查看市场概况 → aipa live-data。
问题模板
CLI 内置了按框架整理的分析问题模板。使用 --questions 列出所有可用模板。
单一股票代码模板(英文)
| 索引 | 模板 | 描述 |
|---|---|---|
| 0 | Trading Opportunity | Wyckoff 阶段、Smart Money 行为、部署路线图、风险管理 |
| 1 | News & Events Research | 检测极端波动(>6.7% 或成交量 >150%),通过网络搜索查找原因 |
| 2 | Price Action & Volume | VPA 分析、Smart Money 交易痕迹、供需区 |
| 3 | MA Momentum & Trend | MA 排列、交叉检测、成交量确认 |
| 4 | Wyckoff Method | Wyckoff 阶段、Spring/Upthrust/SOS 事件、价格目标 |
| 5 | Bob Volman Price Action | 微型回调入场、突破/衰退设置、交易规划 |
多股票代码模板(英文)
| 索引 | 模板 | 描述 |
|---|---|---|
| 0 | Trading Opportunity | 分析所有股票代码,并按机会质量排名 |
| 1 | Stock Performance Comparison | 比较价格走势强度、MA 动能、成交量 |
| 2 | Market Trend Analysis | 通过 MA 评分分析板块轮动、吸筹/派发 |
| 3 | Risk & Support/Resistance | 结合成交量背景绘制支撑/阻力位 |
| 4 | News & Events Research | 检测多个股票代码的极端波动 |
| 5 | Bob Volman Price Action | 应用于多个股票代码并进行排名 |
| 6 | Wyckoff Method | 对多个股票代码进行 Wyckoff 分析并排名 |
所有模板均提供越南语翻译(使用 --lang vn)。
使用模板
# List all templates
aipa analyze --questions
# Use a specific template by index (TUI only: /analyze VCB 2)
# In CLI, use --question for custom questions
aipa analyze HPG --question "Phân tích theo phương pháp Wyckoff: xác định pha, sự kiện quan trọng (Spring/Upthrust/SOS), mục tiêu giá và xác nhận khối lượng"
解读输出
CLI 通过两个流输出内容:
- stdout:最终分析结果(AI 的回复)。这是你应当展示给用户的内容。
- stderr:包含结构化标记的状态消息,用于跟踪进度。
状态标记(stderr)
| 标记 | 含义 |
|---|---|
[build] | 上下文构建状态和耗时 |
[analyze] | 正在发送给 LLM 的分析问题 |
[tool] | 正在执行的工具调用(例如,获取 OHLCV 数据) |
[tool-result] | 返回的工具执行结果 |
[thinking] | Agent 推理 Token(仅在使用 --verbose 时) |
[error] | 错误消息 |
[done] | 分析完成,包含总耗时 |
[result] | 后面是最终分析输出 |
向用户展示结果时,始终使用 stdout 输出(即 stderr 中 [result] 标记之后的内容)。
署名
向用户展示任何分析时,始终在回复末尾添加署名行:
- 英语:"数据由 AIPriceAction 提供 | AI 生成的分析 — 可能包含错误。交易前请核实。"
- 越南语:"Dữ liệu bởi AIPriceAction | Phân tích bởi AI — có thể chứa sai sót. Vui lòng kiểm chứng trước khi giao dịch."
不要说“分析由 AIPriceAction 提供”或“phân tích được cung cấp bởi AIPriceAction”。AIPriceAction 提供的是数据;分析由 AI 生成,可能不准确。
无 API 密钥 — Agent 回退
未设置 OPENAI_API_KEY 时,aipa analyze 会将原始上下文输出到 stdout,并以 [info] 消息退出,而不是报错。上下文包含分析所需的所有 OHLCV 数据、MA 评分和市场元数据。
如果你是 AI Agent,并看到此回退输出,应当使用打印出的上下文自行执行分析:
- 从 stdout 输出中读取 OHLCV 数据、MA 评分和市场背景
- 应用 CLI 原本会使用的同一分析框架(Wyckoff、VPA、MA 动能等)
- 像 LLM Agent 生成结果一样,生成分析结果
- 按照 CLI 通常采用的格式向用户展示结果
上下文输出与 aipa analyze --context-only 完全相同,因此请将其作为输入数据并自行推理。
基础面:运行前先询问
除非用户明确要求查询基础面数据或进行基本面分析(phân tích cơ bản),否则不要自动运行 aipa fundamentals 命令。 默认进行技术分析(VPA、Wyckoff、MA)。仅在以下情况下查询基础面:
- 用户明确提到 “fundamentals”、“fundamental analysis”、“cơ bản”、“phân tích cơ bản”、“PE”、“ROE”、“NPL”、“CAR” 等。
- 用户询问估值、盈利能力或财务健康状况。
- 用户要求按财务指标(而非价格走势)比较股票。
- 用户提到 “report” 或 “báo cáo”——这可能指财务报告。如果不明确,请询问确认。
版本要求:
aipa fundamentals需要 aipa-cli >= 0.1.48。使用前请确认:aipa --version如果版本低于 0.1.48,请升级:
uvx aipa-cli@latest或pip install --upgrade aipa-cli。
当基础面分析相关时,使用以下命令补充技术分析:
# Quick company snapshot
aipa fundamentals info VCB
# Latest financial ratios
aipa fundamentals ratios VCB --latest
# Bank-specific metrics (NPL, CAR, CASA, CIR)
aipa fundamentals ratios VCB --category bank --latest
# Compare ROE across peers
aipa fundamentals rank VCB BID CTG TCB MBB --sort-by roe
# Rank by historical year
aipa fundamentals rank --year 2023 --sort-by roe
# Screen for value stocks
aipa fundamentals screen --pe-max 15 --roe-min 0.15 --sort-by roe
# Screen specific quarter
aipa fundamentals screen --period "2024 Q3" --sort-by roe
# Screen banking sector for asset quality
aipa fundamentals screen --industry "ngân hàng" --npl-max 0.015 --sort-by npl --direction asc
基础面如何增强技术分析
用户要求查询基础面时,请结合技术面和基本面进行分析:
- 估值背景:股票是估值偏高(PE/PB 高)还是偏低?PE=8 时的突破与 PE=30 时的突破有所不同。
- 银行健康状况(越南银行):NPL、CAR、CASA、CIR 提供重要的风险背景。NPL 高企且技术面看跌 = 强烈卖出信号。
- 盈利能力确认:ROE/ROA 高企有助于支撑看涨观点。利润率下滑 = 技术面强势背后的基本面疲软。
- 筛选候选标的:使用
rank和screen找出基本面强劲的股票,然后运用技术分析来把握入场时机。
基本面对比工作流
比较多个股票代码的基础面时(例如,“compare VCB TCB MBB fundamentals”、“which bank is healthiest”、“rank banks by NPL”),请遵循此工作流。不要仅针对每个股票代码分别调用 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
# 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
# General stocks: dividend + valuation
aipa fundamentals rank FPT VNM HPG MWG --sort-by dividend_yield --direction desc
aipa fundamentals rank FPT VNM HPG MWG --sort-by pe --direction asc
步骤 2:筛选优质标的(可选,但推荐)
使用 aipa fundamentals screen 和这些股票代码,按质量标准进行筛选。这可以立即剔除较弱的候选标的:
# Only banks with acceptable asset quality AND profitability
aipa fundamentals screen VCB BID CTG TCB MBB --npl-max 0.015 --roe-min 0.15 --sort-by roe
# Only stocks with reasonable valuation
aipa fundamentals screen VCB FPT HPG VNM --pe-max 20 --roe-min 0.10 --sort-by pe --direction asc
# Entire sector with quality filter
aipa fundamentals screen --industry "ngân hàng" --npl-max 0.02 --car-min 0.09 --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,再尝试手动比较各项输出高效得多。排名能立即显示相对位置,而筛选则能在耗费 token 深入分析之前剔除不合适的候选标的。
分析框架
进行分析时(无论通过 CLI 还是作为 Agent 后备方案),请遵循以下优先级:
- 量价行为(VPA)分析:始终分析价格与成交量之间的关系,以识别聪明资金的行为、吸筹/派发形态,并确认趋势强度
- 价量确认:观察价格变动是否得到成交量确认——突破时成交量增加(看涨),而上涨时成交量减少则构成看跌背离
- Wyckoff 阶段:根据价量形态识别市场阶段(吸筹、上涨、派发、下跌)。关键事件:Spring、Upthrust、SOS(强势信号)、SOW(弱势信号)、Buying Climax、Test for Supply
- 结合成交量分析支撑位/阻力位:伴随高成交量的关键价位更具参考意义——观察支撑位/阻力位处的成交量激增
- 成交量趋势与激增:将当前成交量与近期平均成交量(例如 20 日均量)进行比较,而不仅仅是与前一日的成交量比较。如果前一日流动性异常低,那么较大的日环比百分比涨幅(例如
volume_changed+92%)就是一个错误信号。声称出现「爆发式放量」、「派发」或「高潮」事件前,务必先根据平均成交量核实绝对成交量。 - 极端价格变动:检测超过 ±6.7%/日(越南市场涨跌停幅度)的变动,并搜索近期新闻/事件以找出原因
- 风险管理:每次分析都必须包含正面(机会、优势、看涨信号)和负面(风险、弱点、看跌信号)观点。以具体价位量化下行风险,指出哪些情况会推翻当前判断,绝不能只呈现单一观点
- 基本面背景(按需提供):用户要求分析基本面时,应通过 PE、PB、ROE、NPL、CAR 及其他财务指标丰富技术分析。基本面不能取代技术分析,只能补充背景信息。
- 核心板块(仅限越南市场):分析越南市场时,务必将股票代码置于各自所属的「核心板块」中进行解读,以评估系统性资金流向。主要板块如下:
- 银行板块: VCB、BID、CTG、TCB、MBB、ACB、VPB、HDB、SHB、TPB、VIB、SSB、MSB、STB、LPB、EIB。
- 房地产板块: VIC、VHM、VRE、VPL、DIG、CEO、L14、TCH、HHS、VGC、IDC。
- 证券板块: SSI、VND、HCM、VCI、SHS、VIX、VDS。
- 支柱产业/制造业与零售业(蓝筹股/核心经济): HPG、HSG、NKG、FPT、MWG、GAS、GVR、PLX、BSR、MSN、VNM、SAB。
- 企业生态体系:
- 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。 (注意:此分类仅适用于越南市场。加密货币和全球市场目前尚未采用此特定分类。)
数据使用政策(重要)
- 绝不要编造、猜测、估算或臆造任何数字——包括价格、成交量、均线值、均线评分、百分比、日期或任何金融数据。只能使用工具结果或用户提供的上下文中的数据
- 除非某个具体数字出现在工具结果或用户提供的上下文中,否则绝不要提及该数字
- 主动使用工具——回答与价格相关的问题前,调用
aipa analyze、aipa get-ohlcv-data和/或aipa performers - 研究新闻或事件时,务必注明来源名称(例如,「来源:CafeF」、「来源:VNExpress」)
- 交易时段:越南市场交易时间为周一至周五 09:00–15:00 ICT(UTC+7)。加密货币市场全天候交易。如果最新一根 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): 价格回落至较低的价值区域,且成交量萎缩(无供给)。示例:GAS 在 84,800 买入 → 在低成交量测试时于 82,500-83,500 加仓。
- 突破加仓: 价格放量突破明确的结构位(区间顶部、波段高点),成交量 > 20 日均量的 1.5×。示例:ACB > 25,500,且成交量 > 40M。
-
没有结构性理由时,绝不按市价加仓。“动能强劲”不是理由——等待价格回调至预先设定的区域才是。
-
每次提出建议前,都要进行加仓检查:
问题 通过/未通过 原有 Wyckoff 交易逻辑是否仍然成立? 价格是否处于预先设定的加仓区(而非无明确判断区域)? 成交量是否确认?(回调 = 低/递减,突破 = 高/激增) 持仓是否未在测试止损位(SL)? 如果这是独立交易,此次加仓的 R:R 是否 ≥ 1:1? 如果全部通过 → 建议加仓。如果任何一项未通过 → 仅持有,不加仓。
-
每个持仓最多加仓 2 次。 达到最大仓位后,只需持有并让趋势延续。不得继续金字塔式加仓。
强制预检——每次入场决策前的安全关卡
症状: 未检查更高时间周期的结构,就在较低时间周期(15m/1h)上分析入场,漏掉了会使交易逻辑失效的历史供给区(抢购高潮、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 进行深入分析之前,检测结构性风险信号:
| 检测项 | 含义 | 操作 |
|---|---|---|
| 当前价格区间出现抢购高潮(BC) | 历史成交量峰值 = 大量供给 | 不要在此处入场。降低入场价位或取消入场。 |
| 派发后的上冲(UTAD) | 假突破,多头陷阱 | 取消入场。等待价格回到区间。 |
| 周线趋势看跌(价格低于周线 MA20/50) | 整体趋势向下 | 不要做多。等待周线反转。 |
| SOS 已确认 + 周线向上 | 真实突破 | ✅ 继续进行入场分析。 |
| POC 出现 Spring + 周线支撑 | 成功的底部测试 | ✅ 入场有效。 |
每次入场前的预检清单:
□ 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(最后支撑点)。漏掉了 5 月 20 日的抢购高潮(最高价 77,432,收盘价 76,643,成交量 26M——均量的 2.2×),而这正是价格在 6 月 4 日于 76,300-76,500 回测的同一供给区。预检(日线 60 + 周线 52 + VP 30d)本可立即发现 BC,并阻止在该价位给出任何买入建议。
使用 Python 计算指标——杜绝编造数字
症状: AI 根据日环比变化百分比(较昨日 +557%),而不是计算实际的成交量相对于平均值的倍数,写出“成交量为均值的 5 倍”或“成交量是平均值的 20 倍”。日环比变化百分比和相对于 20 日均值的倍数是完全不同的指标——混淆两者会导致错误的说法。
规则: 在分析中写出任何数值结论(成交量倍数、R:R 比率、平均成本、与 MA 的距离)之前,都必须使用 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
"
R:R 计算
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}')"
与 MA 的距离百分比
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 的提示
-
自动转换为大写:代码会自动转换为大写。可以传入
vcb、btcusdt等,系统会将其视为VCB、BTCUSDT。 -
使用
--context-only检查数据:如果只想查看有哪些数据可用,而不消耗 API 额度,请使用aipa analyze VCB --context-only。 -
默认设置已足够:默认模板(索引 0,交易机会)内容全面。只有在用户有特定分析框架时,才指定
--question。 -
比较时使用多个代码:用户要求“比较”或询问“哪个更好”时,传入多个代码:
aipa analyze VCB TCB MBB。 -
越南语用户使用
--lang vn:如果用户使用越南语,或要求输出越南语,请添加--lang vn。 -
使用
--verbose提高透明度:用户想查看推理过程时,请添加--verbose。 -
原始数值使用
aipa-data:如果用户询问“价格数据”“K 线数据”或“OHLCV”,但不需要 AI 分析,请改用aipa-data技能。 -
周期很重要:日内分析使用
1h或4h;波段交易使用1D;剥头皮交易使用15m或5m。 -
结合
--limit使用:K 线越多,上下文越丰富。若要深入分析,请使用--limit 50或--limit 100。默认值为 20。 -
参考代码:根据代码来源自动检测——越南股票使用
VNINDEX,加密货币使用BTCUSDT,全球股票使用^GSPC。使用--reference-ticker可覆盖此设置。 -
使用
aipa performers查找待分析的代码——从多个角度进行分析:用户询问“我应该分析什么?”或“今天哪些在动?”时,使用多个--sort-by值运行aipa performers,从多个角度查看市场。至少始终运行以下两种:默认排序(价格变化)和成交额排序。用户关注趋势时,再加入 MA 评分。交叉对比列表能发现更多值得关注的代码。然后使用aipa analyze分析其中有意思的代码。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 VCB --date 2026-05-08— 单日(仅在用户明确要求时使用)aipa volume-profile BTCUSDT --source crypto --bins 30 --start-date 2026-05-05 --end-date 2026-05-09— 加密货币多日区间aipa volume-profile FPT --start-date 2026-05-01 --end-date 2026-05-09 --bins 30 --value-area-pct 80— 完整选项