从Vibe-Trading学交易Skill:完整模板与Prompt工程
Vibe-Trading 这个项目今天在 GitHub 上新增了近万星,核心思路是用 LLM 封装一个「有感觉的交易代理」——不是简单预测涨跌,而是让模型综合市场情绪、技术指标和新闻,给出带理由的交易建议。这听着很酷,但如果你只想拿它跑个 demo,那几天后 star 数就跟你无关了。真正有价值的是:把这种智能体逻辑拆成可复用的 Skills,之后遇到任何需要判断的决策场景,你都能用同一套模板套上去。
本文不复述 Vibe-Trading 的代码细节(你去看仓库就行),我给你的是「如何自己写一个交易决策 Skill」的完整方法论,包括:
- 一个可直接复制使用的 Prompt 模板
- 差 Prompt vs 好 Prompt 的对比分析
- 背后为什么有效
- 3 种扩展变体
- 完整的 SKILL.md 目录结构
读完你就能立刻在自己的项目里加上一个能跑的交易智能体。

1. 这个 Skill 解决什么具体问题
很多开发者想给交易系统加 AI 分析,但直接调 GPT 的 API 往往得到「这看起来像是个上涨趋势」「建议谨慎操作」这类模糊回答。问题出在 Prompt 没有结构化,导致模型回答不具备可执行性。
这个 TradeDecider Skill 要解决的是:给定实时市场数据,LLM 输出一个结构化的交易决策,包含操作方向、仓位比例、止损点位和推理过程。输出格式必须是 JSON,方便下游程序自动执行。
2. 触发条件和适用场景
触发条件:
- 每隔 15 分钟(或你设定的时间窗口)获取最新 K 线数据(Open, High, Low, Close, Volume)
- 当价格突破某个阈值或出现技术信号(如 RSI 超卖)时调用
- 也可以手动请求:「分析 BTC/USDT 当前行情,给出交易建议」
适用场景:
- 自动化交易机器人(需风控层兜底)
- 作为辅助工具,给人类交易员提供建议
- 多资产组合的快速筛选
3. 完整 Skill 结构(SKILL.md 示例)
这是我的 Skill 目录结构,符合主流 AI-Skills 规范:
TradeDecider/
├── SKILL.md # 主描述文件,含元信息、触发、Prompt
├── prompt.md # 核心 Prompt(可选,也可以内联)
├── tools/
│ ├── get_market_data.py # 从交易所 API 拉取数据
│ └── parse_decision.py # 解析 LLM JSON 输出,做后处理
├── examples/
│ ├── input.json # 示例输入
│ └── output.json # 示例输出
└── tests/
└── test_trade_decider.py # 单元测试
SKILL.md 完整内容(可直接复制)
# TradeDecider Skill
name: TradeDecider
version: 1.0.0
description: >
根据实时市场数据,分析趋势和风险,输出结构化的交易决策。仅用于辅助建议,不构成投资建议。
author: your-name
triggers:
- event: price_update
schedule: "*/15 * * * *"
condition: "abs(price_change_percent_15m) > 0.5"
- event: manual_ask
keywords: ["分析行情", "交易建议", "该不该买"]
prompt: |
你是一个专业的加密货币交易分析师,擅长技术分析和风险管理。下面是当前市场数据(以JSON格式给出):
{{ market_data }}
请根据以下要求进行分析并输出 JSON:
1. 趋势判断:看涨/看跌/震荡
2. 操作建议:买入/卖出/持有/做空/做多
3. 建议仓位比例:0-100% (表示占总资金的百分比)
4. 止损价格:精确到小数点后2位
5. 止盈价格:精确到小数点后2位
6. 推理理由:不超过100字,包含具体指标引用
输出格式必须严格如下,不要添加任何额外文字:
{
"trend": "看涨",
"action": "买入",
"position_percent": 30,
"stop_loss": 51200.50,
"take_profit": 53500.00,
"reason": "RSI(14)从30回升到40,突破下行趋势线,成交量放大,建议轻仓买入。"
}
**约束**:
- 如果条件不满足,输出 action 为 "持有",position_percent 为 0。
- 止损价必须低于当前价(买入时)或高于当前价(卖出时)。
- 仓位比例不宜超过50%(默认风控)。
4. 实际案例演示
差 Prompt vs 好 Prompt
差 Prompt:
请你分析一下现在的比特币行情,告诉我该怎么做。
好 Prompt(上面的完整 Prompt)。
对比效果:
| 维度 | 差 Prompt | 好 Prompt |
|---|---|---|
| 输出一致性 | 每次不同格式,甚至带解释 | 严格 JSON,机器可解析 |
| 可执行性 | 模糊建议 | 明确的 price 和 percent |
| 风控 | 无约束,可能建议全仓 | 强制仓位≤50%,止损逻辑 |
| 推理质量 | 幻想理由 | 必须引用指标 |
Python 调用示例
import openai
import json
def trade_decision(market_data: dict) -> dict:
full_prompt = f"""你是一个专业的加密货币交易分析师,擅长技术分析和风险管理。下面是当前市场数据(以JSON格式给出):
{json.dumps(market_data)}
请根据以下要求进行分析并输出 JSON:
1. 趋势判断:看涨/看跌/震荡
2. 操作建议:买入/卖出/持有/做空/做多
3. 建议仓位比例:0-100% (表示占总资金的百分比)
4. 止损价格:精确到小数点后2位
5. 止盈价格:精确到小数点后2位
6. 推理理由:不超过100字,包含具体指标引用
输出格式必须严格如下,不要添加任何额外文字:
{{
"trend": "看涨",
"action": "买入",
"position_percent": 30,
"stop_loss": 51200.50,
"take_profit": 53500.00,
"reason": "RSI(14)从30回升到40,突破下行趋势线,成交量放大,建议轻仓买入。"
}}
**约束**:
- 如果条件不满足,输出 action 为 "持有",position_percent 为 0。
- 止损价必须低于当前价(买入时)或高于当前价(卖出时)。
- 仓位比例不宜超过50%(默认风控)。"""
response = openai.ChatCompletion.create(
model="gpt-4",
messages=[{"role": "user", "content": full_prompt}],
temperature=0.2
)
result = json.loads(response.choices[0].message.content)
return result
# 从交易所获取实时数据
market_data = {
"symbol": "BTC/USDT",
"current_price": 52300.50,
"open_24h": 51000.00,
"high_24h": 53000.00,
"low_24h": 50000.00,
"volume_24h": 15000.5,
"rsi_14": 42.3,
"ma_7": 51800,
"ma_25": 51500
}
decision = trade_decision(market_data)
print(decision)
# 输出示例:{'trend': '震荡', 'action': '持有', 'position_percent': 0, ...}
5. 原理:为什么这种 Prompt 有效
- 角色设定:明确身份(分析师)缩小模型的知识分布,使其从金融分析角度回答,而不是通用闲聊。
- 输入格式化:结构化数据替代自然语言描述,减少理解偏差。模型在JSON格式上训练充分,能准确提取数字。
- 输出格式约束:强制JSON且给出示例,消除格式漂移。使用低 temperature(0.2)进一步压缩随机性。
- 推理理由要求引用指标:基于数据而非幻觉。尽管LLM仍可能编造数字,但要求具体指标名(如RSI, MA)可以暴露出错误(若指标不存在输出会错,但仍比没有强)。
- 风控约束:硬性限制仓位≤50%、止损逻辑,即使模型判断失误,资金损失可控。
6. 复用和组合技巧
这个 TradeDecider 可以和其他 Skill 组合:
- RiskManager Skill:接收 TradeDecider 的决策,结合账户余额、杠杆倍数、历史胜率,输出执行前的最终调整。
- NewsAnalyzer Skill:分析最新新闻情绪,输出 sentiment 因子,注入到 TradeDecider 的 market_data 中(增加一个 sentiment 字段)。
- Backtester Skill:用历史数据调用 TradeDecider,记录决策,对比真实走势,输出胜率报告。
变体1:股票市场版
只需修改 SKILL.md 中的角色描述和指标名称(如把 RSI 换成 MACD、PE),同时调整仓位比例上限(股票可允许更高),价格精度更改为小数点后2位。
变体2:加密货币全自动交易(配合API)
在 tools/ 下增加 execute_order.py,将决策中的 action 和 position_percent 映射到交易所的限价单。注意添加风控检查(如最大损失限制)。
变体3:多时间框架分析
把 market_data 扩充为4个时间框架的数据(15m,1h,4h,1d),在 Prompt 中要求模型综合考虑。输出时需注明参考的时间框架。
7. 注意事项
- LLM 的交易决策不可靠,永远不要直接用于真实资金。这个 Skill 只适合模拟、辅助研究或纯教育。
- 成本:每次调用 GPT-4 约 $0.02-0.05,15分钟频率一天约 $5-10。建议先用 GPT-3.5-turbo 测试,或本地部署小模型。
- 数据更新:必须确保 market_data 新鲜,过时的数据会导致错误判断。

本文提供的 SKILL.md 模板可以直接迁移到任何判断类场景(医疗初诊、客服分类、代码审查),只需要替换领域知识和约束条件。不要只 star 别人的项目,自己动手封装一个 Skill。