mcpField
A
aipa-analyze

aipa-analyze

github.com/quanhua92其他257 次安装1 天前更新
代码仓库

关于 aipa-analyze

aipa-analyze 是用于分析越南股票、加密货币和全球资产的 AI 命令行技能,将 OHLCV 数据与大模型分析结合,并采用 Wyckoff、VPA 和均线动量评分等方法。

主要功能

  1. 01AI 技术分析
  2. 02同时分析多个代码
  3. 03采用 Wyckoff 和 VPA 方法
  4. 04可配置周期和移动平均线
  5. 05自定义问题和分析语言

适用场景

  1. 01分析 VCB 等越南股票
  2. 02比较多个代码
  3. 03查看加密货币或全球资产图表
  4. 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 时:

  1. 使用普通的 uvx,以便快速从缓存执行: uvx aipa-cli analyze VCB
  2. 失败时回退——如果命令因架构错误或缺少参数而失败,请使用 @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否OpenRouterOpenAI 兼容 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_smatruetrue / falsetrue = SMA,false = EMA。控制所有命令使用的 MA 类型。CLI 标志(--sma、--ema)会覆盖单次调用的设置。
languagevnen / vnanalyze 和 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 生态”等分组时,也可以直接引用这些列表。

名称股票代码数量
VN30ACB, 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, VPL30
VINGROUPVIC, VHM, VRE, VPL4
TMGEX, GEE, VIX, EIB, VGC, IDC6
MASANMSN, MCH, MSR, MML, VCF, VSN, NET7
INDEXVNINDEX, VN30, VN30F1M, VN100, VNMIDCAP, VNSMALLCAP, VNALLSHARE, VNXALLSHARE, VNFIN, HNX30, VNREAL, VNENE, VNMITECH, VNUTI, VNCONS, VNCOND, VNHEAL, VNIND, VNFINLEAD, VNFINSELECT, VNDIAMOND, VNDIVIDEND22
CROSSVNINDEX, ^GSPC, GC=F, SJC-GOLD, KC=F, BZ=F, BTCUSDT7

注意: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)
支持的时间间隔
时间间隔说明
1m1 分钟
5m5 分钟
15m15 分钟
30m30 分钟
1h1 小时
4h4 小时
1D1 天(默认)
1W1 周

注意:所有时间间隔均可原生使用——1m、5m、15m、30m、1h、4h、1D、1W、2W。非原生时间间隔会在客户端根据基础数据聚合生成。


aipa analyze — AI 分析

对一个或多个股票代码运行 AI 驱动的技术分析。

aipa analyze TICKER [TICKERS...] [options]
标志
标志默认值描述
TICKER [TICKERS...]—一个或多个股票代码(自动转为大写)
--interval1D时间间隔:1m、5m、15m、30m、1h、4h、1D、1W、2W
--limit N20获取的柱线/蜡烛图数量
--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 列出所有可用模板。

单一股票代码模板(英文)
索引模板描述
0Trading OpportunityWyckoff 阶段、Smart Money 行为、部署路线图、风险管理
1News & Events Research检测极端波动(>6.7% 或成交量 >150%),通过网络搜索查找原因
2Price Action & VolumeVPA 分析、Smart Money 交易痕迹、供需区
3MA Momentum & TrendMA 排列、交叉检测、成交量确认
4Wyckoff MethodWyckoff 阶段、Spring/Upthrust/SOS 事件、价格目标
5Bob Volman Price Action微型回调入场、突破/衰退设置、交易规划
多股票代码模板(英文)
索引模板描述
0Trading Opportunity分析所有股票代码,并按机会质量排名
1Stock Performance Comparison比较价格走势强度、MA 动能、成交量
2Market Trend Analysis通过 MA 评分分析板块轮动、吸筹/派发
3Risk & Support/Resistance结合成交量背景绘制支撑/阻力位
4News & Events Research检测多个股票代码的极端波动
5Bob Volman Price Action应用于多个股票代码并进行排名
6Wyckoff 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,并看到此回退输出,应当使用打印出的上下文自行执行分析:

  1. 从 stdout 输出中读取 OHLCV 数据、MA 评分和市场背景
  2. 应用 CLI 原本会使用的同一分析框架(Wyckoff、VPA、MA 动能等)
  3. 像 LLM Agent 生成结果一样,生成分析结果
  4. 按照 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
基础面如何增强技术分析

用户要求查询基础面时,请结合技术面和基本面进行分析:

  1. 估值背景:股票是估值偏高(PE/PB 高)还是偏低?PE=8 时的突破与 PE=30 时的突破有所不同。
  2. 银行健康状况(越南银行):NPL、CAR、CASA、CIR 提供重要的风险背景。NPL 高企且技术面看跌 = 强烈卖出信号。
  3. 盈利能力确认:ROE/ROA 高企有助于支撑看涨观点。利润率下滑 = 技术面强势背后的基本面疲软。
  4. 筛选候选标的:使用 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 后备方案),请遵循以下优先级:

  1. 量价行为(VPA)分析:始终分析价格与成交量之间的关系,以识别聪明资金的行为、吸筹/派发形态,并确认趋势强度
  2. 价量确认:观察价格变动是否得到成交量确认——突破时成交量增加(看涨),而上涨时成交量减少则构成看跌背离
  3. Wyckoff 阶段:根据价量形态识别市场阶段(吸筹、上涨、派发、下跌)。关键事件:Spring、Upthrust、SOS(强势信号)、SOW(弱势信号)、Buying Climax、Test for Supply
  4. 结合成交量分析支撑位/阻力位:伴随高成交量的关键价位更具参考意义——观察支撑位/阻力位处的成交量激增
  5. 成交量趋势与激增:将当前成交量与近期平均成交量(例如 20 日均量)进行比较,而不仅仅是与前一日的成交量比较。如果前一日流动性异常低,那么较大的日环比百分比涨幅(例如 volume_changed +92%)就是一个错误信号。声称出现「爆发式放量」、「派发」或「高潮」事件前,务必先根据平均成交量核实绝对成交量。
  6. 极端价格变动:检测超过 ±6.7%/日(越南市场涨跌停幅度)的变动,并搜索近期新闻/事件以找出原因
  7. 风险管理:每次分析都必须包含正面(机会、优势、看涨信号)和负面(风险、弱点、看跌信号)观点。以具体价位量化下行风险,指出哪些情况会推翻当前判断,绝不能只呈现单一观点
  8. 基本面背景(按需提供):用户要求分析基本面时,应通过 PE、PB、ROE、NPL、CAR 及其他财务指标丰富技术分析。基本面不能取代技术分析,只能补充背景信息。
  9. 核心板块(仅限越南市场):分析越南市场时,务必将股票代码置于各自所属的「核心板块」中进行解读,以评估系统性资金流向。主要板块如下:
    • 银行板块: 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。 (注意:此分类仅适用于越南市场。加密货币和全球市场目前尚未采用此特定分类。)

数据使用政策(重要)

  1. 绝不要编造、猜测、估算或臆造任何数字——包括价格、成交量、均线值、均线评分、百分比、日期或任何金融数据。只能使用工具结果或用户提供的上下文中的数据
  2. 除非某个具体数字出现在工具结果或用户提供的上下文中,否则绝不要提及该数字
  3. 主动使用工具——回答与价格相关的问题前,调用 aipa analyze、aipa get-ohlcv-data 和/或 aipa performers
  4. 研究新闻或事件时,务必注明来源名称(例如,「来源:CafeF」、「来源:VNExpress」)
  5. 交易时段:越南市场交易时间为周一至周五 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 会在工作目录中查找投资组合文件以跟踪持仓。可接受的文件名(按检查顺序排列):

  1. DANH_MUC.md
  2. PORTFOLIO.md
  3. ACCOUNT.md

如果这些文件都不存在,Agent 应询问用户是否要创建一个。

观察列表文件

Agent 还会查找观察列表文件,以跟踪正在关注的股票代码(尚未持仓)。可接受的文件名(按检查顺序排列):

  1. THEO_DOI.md
  2. WATCHLIST.md

此文件用于跟踪潜在的入场标的。请填写:股票代码、行业、关注原因、入场区间、关键价位和添加日期。

风险管理规则(必须遵守)

  1. 提出卖出建议前,务必核查结算状态(仅适用于越南股票)——将买入日期与今天对照。越南股票须等到 T+2 当天下午才能卖出。不适用于加密货币或全球股票。
  2. 每次分析都必须量化风险——提供具体的止损和止盈价位及其依据,说明什么情况会使投资逻辑失效,并计算风险回报比。
  3. 绝不只呈现单方面的分析——每个股票代码都必须同时包含看涨信号和看跌风险。
  4. 关注仓位规模——当投资组合中某个行业的占比超过 30% 时,提示集中度风险。
  5. 每日检查投资组合——标记已结算的持仓,检查是否触及止损/止盈位,并提示投资逻辑的变化。

严格的数据读取与验证(关键)

**症状:**误读或臆造价格与移动平均线之间的关系(例如,实际股价高于 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. **当盈亏比入场价高出的幅度不足 1× ATR(14) 时,绝不要建议止盈(部分或全部)。**如果没有 ATR 数据:D/E 阶段上涨时,利润不足 3% 不要止盈;吸筹突破时,利润不足 5% 不要止盈。

  2. 提及“止盈”前,务必先检查 Wyckoff 阶段:

    • **E 阶段上涨/SOS 突破:**不要止盈——趋势才刚开始。这是趋势交易,不是短线交易。
    • **再吸筹/Spring 测试:**不要止盈——仓位才刚建立。
    • 只有出现派发迹象时才考虑止盈(成交量高潮、周线看跌吞没、上涨延续较长时间后的 Upthrust)。
  3. 建议止盈前检查动能:

    • 价格是否处于波段高点,且成交量高于 20 日均值?
    • 是否出现派发 K 线(射击之星、看跌吞没、成交量激增)?
    • 上方是否有周线阻力位?
    • 如果以上 3 项均为否 → **禁止止盈。**让利润继续奔跑。
  4. 过早止盈检查清单(每次建议卖出/减仓前都要检查):

    问题通过/未通过
    盈亏比 > 3%?
    Wyckoff 阶段是否为派发/Upthrust?
    是否存在派发迹象(成交量高潮、周线看跌)?
    周线图上方是否显示强阻力?

    如果4 项均为否 → **禁止止盈。**在报告中说明原因。

  5. 有限例外:只有当用户明确提出要求或急需流动性时,才允许过早止盈。Agent 绝不能自主建议任何形式的过早止盈(包括“锁定利润”“降低风险”等)。


加仓规则——建议加仓,而非过早止盈

症状: 持仓上涨了 2-3%,Agent 就建议部分止盈。实际上,Agent 应该寻找加仓机会——表现良好的持仓值得考虑加仓,而不是减仓。

思维转变: 当持仓表现良好(上涨 2-5%,且得到量价行为确认)时,正确的做法是:

  • 不要:“在这里止盈 50%”
  • 应该:“这是可以在回调时加仓/突破确认后加仓的位置”

规则:

  1. 当持仓盈利且交易逻辑仍然成立时,考虑任何止盈之前,都必须先检查是否存在加仓机会。 加仓计划必须在入场时确定(不能等持仓变动后再临时制定)。

  2. 两种有效的加仓情形(入场时必须选定一种):

    • 回调加仓(Zone B): 价格回落至较低的价值区域,且成交量萎缩(无供给)。示例:GAS 在 84,800 买入 → 在低成交量测试时于 82,500-83,500 加仓。
    • 突破加仓: 价格放量突破明确的结构位(区间顶部、波段高点),成交量 > 20 日均量的 1.5×。示例:ACB > 25,500,且成交量 > 40M。
  3. 没有结构性理由时,绝不按市价加仓。“动能强劲”不是理由——等待价格回调至预先设定的区域才是。

  4. 每次提出建议前,都要进行加仓检查:

    问题通过/未通过
    原有 Wyckoff 交易逻辑是否仍然成立?
    价格是否处于预先设定的加仓区(而非无明确判断区域)?
    成交量是否确认?(回调 = 低/递减,突破 = 高/激增)
    持仓是否未在测试止损位(SL)?
    如果这是独立交易,此次加仓的 R:R 是否 ≥ 1:1?

    如果全部通过 → 建议加仓。如果任何一项未通过 → 仅持有,不加仓。

  5. 每个持仓最多加仓 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 的提示

  1. 自动转换为大写:代码会自动转换为大写。可以传入 vcb、btcusdt 等,系统会将其视为 VCB、BTCUSDT。

  2. 使用 --context-only 检查数据:如果只想查看有哪些数据可用,而不消耗 API 额度,请使用 aipa analyze VCB --context-only。

  3. 默认设置已足够:默认模板(索引 0,交易机会)内容全面。只有在用户有特定分析框架时,才指定 --question。

  4. 比较时使用多个代码:用户要求“比较”或询问“哪个更好”时,传入多个代码:aipa analyze VCB TCB MBB。

  5. 越南语用户使用 --lang vn:如果用户使用越南语,或要求输出越南语,请添加 --lang vn。

  6. 使用 --verbose 提高透明度:用户想查看推理过程时,请添加 --verbose。

  7. 原始数值使用 aipa-data:如果用户询问“价格数据”“K 线数据”或“OHLCV”,但不需要 AI 分析,请改用 aipa-data 技能。

  8. 周期很重要:日内分析使用 1h 或 4h;波段交易使用 1D;剥头皮交易使用 15m 或 5m。

  9. 结合 --limit 使用:K 线越多,上下文越丰富。若要深入分析,请使用 --limit 50 或 --limit 100。默认值为 20。

  10. 参考代码:根据代码来源自动检测——越南股票使用 VNINDEX,加密货币使用 BTCUSDT,全球股票使用 ^GSPC。使用 --reference-ticker 可覆盖此设置。

  11. 使用 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  # 证券板块涨幅最大
    
  12. 使用 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 — 完整选项

评论

支持 Markdown