- Add visual diagrams to explain override_base_prompt behavior - Clarify the difference between "append" (false) and "replace" (true) modes - Add warning messages for advanced users about risks - Update maintainer to "Nofx Team CoderMageFox" - Improve both English and Chinese documentation This change addresses user confusion about the override_base_prompt setting by providing clear visual explanations and practical examples. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-authored-by: tinkle-community <tinklefund@gmail.com>
38 KiB
📖 NoFx Prompt 编写指南
版本: v1.0 更新日期: 2025-01-09 适用系统版本: NoFx v0.x+
📚 目录
🎯 推荐学习路径
新手用户: 快速开始 → 官方模板 → 质量检查 进阶用户: 核心概念 → 字段参考 → 系统约束 → 常见错误 高级用户: 高级话题 → 模式3 → 调试指南
🚀 快速开始(5分钟)
什么是 Prompt?
Prompt 是你给 AI 交易员的"工作指令",决定了 AI 如何分析市场和做出交易决策。
三种使用方式
方式1:使用官方模板(推荐新手)
步骤:
适合: 新手用户,想快速开始 耗时: 2分钟
方式2:在官方模板基础上添加个性化策略(推荐)
步骤:
- 保持
prompts/default.txt不变 - 在 Web 界面的"自定义 Prompt"中添加你的策略
- 关闭 "覆盖默认提示词" 开关(
override_base_prompt = false)
效果说明:
最终提示词 = 官方基础策略(风控+格式) + 你的自定义策略
↑ ↑
系统保证安全 你的交易想法
适合: 进阶用户,想保留风控但加入自己的想法 耗时: 10-30分钟
方式3:完全自定义(高级)
步骤:
- 编写完整的 Prompt(包含所有风控规则)
- 开启 "覆盖默认提示词" 开关(
override_base_prompt = true) - ⚠️ 需要自行负责所有风控和输出格式
效果说明:
最终提示词 = 你的自定义策略(完全替换)
↑
你需要自己保证安全和格式正确
重要警告:
- ❌ 开启后,系统不会自动添加风控规则
- ❌ 输出格式错误会导致交易失败
- ⚠️ 仅适合完全理解系统机制的高级用户
适合: 高级用户,完全理解系统机制 耗时: 1-2小时
立即开始
👉 新手推荐: 跳转到 官方模板库,选择一个模板开始 👉 进阶优化: 继续阅读 可用字段参考 👉 高级定制: 阅读 完全自定义指南
💡 核心概念
Prompt 的工作原理
NoFx 每3分钟会构建一个包含市场数据的消息发送给 AI:
graph LR
A[你的 Prompt<br/>策略指令] --> B[AI模型]
C[市场数据<br/>自动生成] --> B
B --> D[思维链分析]
B --> E[交易决策JSON]
工作流程:
- 系统 Prompt(System): 你编写的策略指令
- 用户 Prompt(User): 系统自动生成的市场数据
- AI 响应(Response): AI 的分析和决策
Prompt 的三个组成部分
1. 核心策略(你编写)
定义 AI 的交易哲学、风险偏好、决策标准
示例:
你是保守型交易员,只在高确定性机会时开仓。
开仓条件:信心度 ≥ 85,多个指标共振。
2. 硬约束(系统自动添加)
- 风险回报比 ≥ 1:3
- 最多持仓 3 个币种
- 杠杆限制(BTC/ETH 20x,山寨币 5x)
- 保证金使用率 ≤ 90%
⚠️ 方式1和2: 这些约束自动添加,不可覆盖 ⚠️ 方式3: 需要自己在 Prompt 中包含这些约束
3. 输出格式(系统自动添加)
要求 AI 使用 XML 标签和 JSON 格式输出决策
示例输出:
<reasoning>
BTC 跌破支撑位,MACD 死叉,成交量放大...
</reasoning>
<decision>
```json
[
{
"symbol": "BTCUSDT",
"action": "open_short",
"leverage": 10,
"position_size_usd": 5000,
"stop_loss": 97000,
"take_profit": 91000,
"confidence": 85,
"reasoning": "技术面转空"
}
]
市场数据自动传递
你不需要在 Prompt 中要求 AI 提供数据,系统会自动传递:
✅ 系统自动提供:
- 当前时间、运行周期
- 账户净值、余额、盈亏
- 所有持仓的详细信息
- BTC 市场行情
- 候选币种的完整技术数据
- 夏普比率绩效指标
❌ 你不需要写:
请分析 BTC 的价格和 MACD... # 系统已自动提供
请告诉我当前持仓情况... # 系统已自动提供
✅ 你应该写:
重点关注 BTC 的趋势,作为市场风向标
当 MACD 死叉且成交量放大时,考虑做空机会
📋 可用字段参考
系统会自动将以下数据传递给 AI,你可以在 Prompt 中引用这些字段:
系统状态
| 字段名称 | 说明 | 示例 |
|---|---|---|
| 时间 | UTC时间 | 2025-01-15 10:30:00 UTC |
| 周期 | 系统运行周期数 | #142(第142次决策) |
| 运行时长 | 系统运行分钟数 | 426分钟 |
实际输出示例:
时间: 2025-01-15 10:30:00 UTC | 周期: #142 | 运行: 426分钟
账户信息
| 字段名称 | 说明 | 单位 | 示例 |
|---|---|---|---|
| 净值 | 账户总资产 | USDT | 1250.50 |
| 余额 | 可用余额 | USDT | 850.30 |
| 余额占比 | 可用余额/净值 | % | 68.0% |
| 盈亏 | 总盈亏百分比 | % | +15.2% |
| 保证金 | 保证金使用率 | % | 32.0% |
| 持仓数 | 当前持仓数量 | 个 | 2 |
实际输出示例:
账户: 净值1250.50 | 余额850.30 (68.0%) | 盈亏+15.2% | 保证金32.0% | 持仓2个
Prompt 引用示例:
当余额占比低于20%时,停止开新仓
当保证金使用率超过80%时,考虑减仓
持仓信息(⭐核心字段)
| 字段名称 | 说明 | 单位 | 计算方式 | 示例 |
|---|---|---|---|---|
| 币种 | 交易对 | - | - | BTCUSDT |
| 方向 | 多/空 | - | - | LONG |
| 入场价 | 开仓价格 | USDT | - | 95000.00 |
| 当前价 | 标记价格 | USDT | - | 96500.00 |
| 盈亏(百分比) | 未实现盈亏% | % | 含杠杆 | +2.38% |
| 盈亏金额 | 未实现盈亏 | USDT | 实际美元 | +59.50 |
| 最高收益率 | 历史峰值收益% | % | 含杠杆 | +5.00% |
| 杠杆 | 杠杆倍数 | x | - | 5 |
| 保证金 | 已用保证金 | USDT | - | 500.00 |
| 强平价 | 清算价格 | USDT | - | 88000.00 |
| 持仓时长 | 持仓时间 | 分钟/小时 | 计算 | 2小时35分钟 |
⚠️ 重要区分:
- 盈亏(百分比) = 考虑杠杆的收益率(如5倍杠杆,价格涨1% = 盈亏5%)
- 盈亏金额 = 实际赚/亏的美元数(如 +59.50 USDT)
- 最高收益率 = 持仓期间达到的最高收益率(用于计算回撤)
实际输出示例:
1. BTCUSDT LONG | 入场价95000.0000 当前价96500.0000 | 盈亏+2.38% | 盈亏金额+59.50 USDT | 最高收益率5.00% | 杠杆5x | 保证金500 | 强平价88000.0000 | 持仓时长2小时35分钟
Prompt 引用示例(✅ 正确):
✅ 当盈亏金额回撤超过最高收益率的50%时,部分止盈
✅ 如果盈亏从+5%回落到+2%,说明回撤了60%,考虑减仓
✅ 持仓时长超过4小时但盈亏金额仍为负,考虑止损
Prompt 引用示例(❌ 错误):
❌ 当 unrealized_pnl 超过 peak_pnl_pct... # 字段名错误
❌ 当盈亏超过5%... # 不明确,是"盈亏(百分比)"还是"盈亏金额"?
计算公式字段
基于上述字段,你可以在 Prompt 中使用这些计算:
| 计算名称 | 公式 | 说明 | 示例 |
|---|---|---|---|
| 真实收益率 | (盈亏金额 / 保证金) × 100% |
基于保证金的实际收益 | (59.50/500)×100% = 11.9% |
| 回撤幅度 | (最高收益率 - 当前盈亏) / 最高收益率 × 100% |
从峰值的回撤百分比 | (5%-2.38%)/5% = 52.4% |
| 距强平距离 | ` | (当前价 - 强平价) / 当前价 | × 100%` |
Prompt 引用示例:
计算真实收益率 = 盈亏金额 / 保证金
如果真实收益率超过10%,部分止盈锁定利润
计算回撤幅度 = (最高收益率 - 当前盈亏) / 最高收益率
如果回撤幅度超过50%,说明利润大幅回吐,考虑减仓
BTC 市场数据
| 字段名称 | 说明 | 单位 | 示例 |
|---|---|---|---|
| BTC价格 | 当前价格 | USDT | 96500.00 |
| 1h涨跌幅 | 1小时涨跌 | % | +1.25% |
| 4h涨跌幅 | 4小时涨跌 | % | -2.15% |
| MACD | MACD指标 | - | 0.0024 |
| RSI | RSI(7)指标 | - | 62.50 |
实际输出示例:
BTC: 96500.00 (1h: +1.25%, 4h: -2.15%) | MACD: 0.0024 | RSI: 62.50
Prompt 引用示例:
BTC 是市场风向标:
- 如果 BTC 的 4h涨跌幅 < -5%,市场转空,谨慎做多山寨币
- 如果 BTC 的 MACD 死叉且 RSI < 30,可能超跌反弹
完整市场数据
每个币种都会附带完整的技术数据,包括:
- 价格序列(3分钟K线)
- EMA20 序列
- MACD 序列
- RSI7/RSI14 序列
- 成交量序列
- 持仓量(OI)序列
- 资金费率
⚠️ 注意: 这些是序列数据(数组),系统会自动格式化输出,你不需要指定具体字段名。
Prompt 引用示例:
分析价格序列,识别支撑阻力位
观察 EMA20 趋势,判断多空方向
MACD 序列出现金叉/死叉时,作为信号确认
持仓量(OI)快速增长 + 价格上涨 = 看涨信号
性能指标
| 字段名称 | 说明 | 范围 | 解读 |
|---|---|---|---|
| 夏普比率 | 风险调整后收益 | -∞ ~ +∞ | >1优秀, 0~1正常, <0亏损 |
实际输出示例:
## 📊 夏普比率: 0.85
Prompt 引用示例:
根据夏普比率调整策略:
- 夏普比率 < -0.5: 停止交易,观望至少18分钟
- 夏普比率 -0.5~0: 只做信心度>80的交易
- 夏普比率 0~0.7: 维持当前策略
- 夏普比率 > 0.7: 可适度扩大仓位
字段命名一致性原则
✅ 正确做法: 使用输出中的自然语言描述
盈亏金额、最高收益率、保证金、杠杆、持仓时长
❌ 错误做法: 使用代码字段名
unrealized_pnl, peak_pnl_pct, margin_used, leverage
💡 核心原则: Prompt 中的字段名必须与系统输出的自然语言标签完全一致。
⚖️ 系统约束
硬约束(不可覆盖的规则)
以下约束由系统强制执行,方式1和2 会自动添加,方式3 需要自己包含:
1. 风险回报比
要求: 必须 ≥ 1:3(冒1%风险,赚3%+收益)
含义: 止盈空间必须至少是止损空间的3倍
示例:
✅ 入场100, 止损98(-2%), 止盈106(+6%) → 风险回报比 6/2 = 3:1 合格
❌ 入场100, 止损95(-5%), 止盈110(+10%) → 风险回报比 10/5 = 2:1 不合格
2. 最多持仓
要求: 最多同时持有 3 个币种
含义: 分散风险,避免过度暴露
3. 单币仓位
要求:
- 山寨币: 0.8~1.5 倍账户净值
- BTC/ETH: 5~10 倍账户净值
示例(账户净值 1000 USDT):
✅ 山寨币仓位: 800~1500 USDT
✅ BTC/ETH仓位: 5000~10000 USDT
4. 杠杆限制
要求:
- 山寨币: 最大 5x 杠杆
- BTC/ETH: 最大 20x 杠杆
⚠️ 严格执行: 超过此限制的决策会被系统拒绝
5. 保证金使用率
要求: 总保证金使用率 ≤ 90%
含义: 预留10%用于清算保护和手续费
6. 最小开仓金额
要求:
- 一般币种: ≥ 12 USDT
- BTC/ETH: ≥ 60 USDT
原因: 交易所最小名义价值要求 + 安全边际
保留关键词
以下 XML 标签是系统保留的,不可在自定义 Prompt 中使用:
❌ 禁止使用:
<reasoning>- 用于标记思维链分析<decision>- 用于标记 JSON 决策
JSON 输出格式规范
AI 必须按照以下格式输出决策:
正确格式
<reasoning>
你的分析思路...
</reasoning>
<decision>
```json
[
{
"symbol": "BTCUSDT",
"action": "open_short",
"leverage": 10,
"position_size_usd": 5000,
"stop_loss": 97000,
"take_profit": 91000,
"confidence": 85,
"risk_usd": 300,
"reasoning": "技术面转空"
}
]
JSON 格式禁止项
❌ 禁止包含:
1. 范围符号 ~
// 错误
{"position_size_usd": "2000~3000"} // 必须是精确值
{"stop_loss": "95000~96000"} // 必须是单一价格
// 正确
{"position_size_usd": 2500}
{"stop_loss": 95500}
2. 千位分隔符 ,
// 错误
{"position_size_usd": 98,000} // JSON 数字不允许逗号
// 正确
{"position_size_usd": 98000}
3. 中文描述或注释
// 错误
{
"symbol": "BTCUSDT",
"action": "open_long", // 开多仓
"reasoning": "这是一个很好的做多机会,因为..." // 太长
}
// 正确
{
"symbol": "BTCUSDT",
"action": "open_long",
"reasoning": "MACD金叉+成交量放大"
}
三种 Prompt 模式对比
| 模式 | 配置 | 最终 Prompt | 适用场景 |
|---|---|---|---|
| 模式1 仅基础 |
override_base_prompt=falsecustom_prompt="" |
官方模板 + 硬约束 + 输出格式 | 新手用户 |
| 模式2 基础+附加 |
override_base_prompt=falsecustom_prompt="你的策略" |
官方模板 + 硬约束 + 输出格式 + 个性化策略 + 注意事项 |
进阶用户 |
| 模式3 完全自定义 |
override_base_prompt=truecustom_prompt="完整Prompt" |
仅使用自定义内容 (忽略所有系统默认) |
高级用户 |
⚠️ 模式3 风险警告:
- 你必须自己包含所有硬约束
- 你必须自己定义输出格式
- 你必须自己负责风控规则
- 建议只有完全理解系统机制后才使用
📦 官方模板库
保守型策略
适用场景
- ✅ 新手用户,追求稳健
- ✅ 市场波动大,风险厌恶
- ✅ 资金安全优先,容忍低收益
核心特点
- 开仓信心度 ≥ 85(只做高确定性机会)
- 风险回报比 ≥ 1:4(比系统要求更严格)
- 最多持仓 2 个(降低风险暴露)
- 仓位小(0.5倍账户净值)
预期表现
- 交易频率: 低(可能一天1-2笔)
- 持仓时间: 长(平均2-4小时)
- 胜率: 高(>70%)
- 波动: 小
完整模板
你是专业的加密货币交易AI,采用保守稳健的交易策略。
# 核心目标
最大化夏普比率(Sharpe Ratio),强调风险控制和稳定收益。
夏普比率 = 平均收益 / 收益波动率
这意味着:
- 只做高确定性交易(信心度 ≥ 85)
- 严格止损止盈,控制回撤
- 耐心持仓,避免频繁交易
- 质量优于数量
# 交易哲学
资金保全第一:宁可错过,不做错
纪律胜于情绪:执行既定方案,不随意改变
质量优于数量:少量高信念交易胜过大量低信念交易
尊重趋势:不要与强趋势作对
# 开仓标准(极其严格)
只在强信号时开仓,不确定就观望。
开仓条件(必须同时满足):
- 信心度 ≥ 85(高确定性)
- 多个指标共振(至少3个指标支持)
- 风险回报比 ≥ 1:4(止盈空间是止损的4倍以上)
- BTC 趋势明确(作为市场风向标)
- 持仓数 < 2(质量>数量)
避免低质量信号:
- 单一维度(只看一个指标)
- 相互矛盾(涨但量萎缩)
- 横盘震荡
- 刚平仓不久(<30分钟)
# 仓位管理(保守)
单币仓位:账户净值的 0.5 倍(比系统默认更小)
最多持仓:2 个币种(比系统默认少1个)
杠杆使用:
- 山寨币: 3x 杠杆(比系统上限更低)
- BTC/ETH: 10x 杠杆(比系统上限更低)
# 止盈止损(严格)
止损:入场后立即设置,绝不移动止损
止盈:分批止盈
- 达到 50% 目标:平仓 30%
- 达到 75% 目标:平仓 30%
- 达到 100% 目标:全部平仓
回撤管理:
如果盈亏金额从最高收益率回撤超过 40%,立即减仓 50%
# 夏普比率自我进化
夏普比率 < -0.5: 停止交易,连续观望至少 30 分钟
夏普比率 -0.5~0: 只做信心度 ≥ 90 的交易
夏普比率 0~1: 维持当前策略
夏普比率 > 1: 可适度扩大至 0.8 倍净值仓位
# 决策流程
1. 分析夏普比率:当前策略是否有效?
2. 评估持仓:是否该止盈/止损?
3. 寻找新机会:有强信号吗?
4. 输出决策:思维链分析 + JSON
记住:
- 目标是夏普比率,不是交易频率
- 宁可错过,不做低质量交易
- 每笔交易都要经得起反复推敲
使用方式
方式1: 替换默认模板
# 备份原文件
cp prompts/default.txt prompts/default.txt.bak
# 将上述模板内容保存到 prompts/default.txt
# 重启系统
docker-compose restart
方式2: Web界面自定义
- 复制上述模板内容
- 粘贴到 Web 界面的"自定义 Prompt"
- 设置
override_base_prompt = false
平衡型策略
适用场景
- ✅ 有一定经验的用户
- ✅ 正常市场条件
- ✅ 追求风险收益平衡
核心特点
- 开仓信心度 ≥ 75(系统默认)
- 风险回报比 ≥ 1:3(系统默认)
- 最多持仓 3 个(系统默认)
- 仓位适中(0.8~1.5倍净值)
预期表现
- 交易频率: 中(一天2-4笔)
- 持仓时间: 中(平均1-2小时)
- 胜率: 中等(60-70%)
- 波动: 适中
完整模板
你是专业的加密货币交易AI,在合约市场进行自主交易。
# 核心目标
最大化夏普比率(Sharpe Ratio)
夏普比率 = 平均收益 / 收益波动率
这意味着:
- 高质量交易(高胜率、大盈亏比)→ 提升夏普
- 稳定收益、控制回撤 → 提升夏普
- 耐心持仓、让利润奔跑 → 提升夏普
- 频繁交易、小盈小亏 → 增加波动,严重降低夏普
- 过度交易、手续费损耗 → 直接亏损
- 过早平仓、频繁进出 → 错失大行情
关键认知: 系统每3分钟扫描一次,但不意味着每次都要交易!
大多数时候应该是 `wait` 或 `hold`,只在极佳机会时才开仓。
# 交易哲学 & 最佳实践
## 核心原则:
资金保全第一:保护资本比追求收益更重要
纪律胜于情绪:执行你的退出方案,不随意移动止损或目标
质量优于数量:少量高信念交易胜过大量低信念交易
适应波动性:根据市场条件调整仓位
尊重趋势:不要与强趋势作对
## 常见误区避免:
过度交易:频繁交易导致费用侵蚀利润
复仇式交易:亏损后立即加码试图"翻本"
分析瘫痪:过度等待完美信号,导致失机
忽视相关性:BTC常引领山寨币,须优先观察BTC
过度杠杆:放大收益同时放大亏损
# 交易频率认知
量化标准:
- 优秀交易员:每天2-4笔 = 每小时0.1-0.2笔
- 过度交易:每小时>2笔 = 严重问题
- 最佳节奏:开仓后持有至少30-60分钟
自查:
如果你发现自己每个周期都在交易 → 说明标准太低
如果你发现持仓<30分钟就平仓 → 说明太急躁
# 开仓标准(严格)
只在强信号时开仓,不确定就观望。
你拥有的完整数据:
- 原始序列:3分钟价格序列(MidPrices数组) + 4小时K线序列
- 技术序列:EMA20序列、MACD序列、RSI7序列、RSI14序列
- 资金序列:成交量序列、持仓量(OI)序列、资金费率
- 筛选标记:AI500评分 / OI_Top排名(如果有标注)
分析方法(完全由你自主决定):
- 自由运用序列数据,你可以做但不限于趋势分析、形态识别、支撑阻力、技术阻力位、斐波那契、波动带计算
- 多维度交叉验证(价格+量+OI+指标+序列形态)
- 用你认为最有效的方法发现高确定性机会
- 综合信心度 ≥ 75 才开仓
避免低质量信号:
- 单一维度(只看一个指标)
- 相互矛盾(涨但量萎缩)
- 横盘震荡
- 刚平仓不久(<15分钟)
# 夏普比率自我进化
每次你会收到夏普比率作为绩效反馈(周期级别):
夏普比率 < -0.5 (持续亏损):
→ 停止交易,连续观望至少6个周期(18分钟)
→ 深度反思:
• 交易频率过高?(每小时>2次就是过度)
• 持仓时间过短?(<30分钟就是过早平仓)
• 信号强度不足?(信心度<75)
夏普比率 -0.5 ~ 0 (轻微亏损):
→ 严格控制:只做信心度>80的交易
→ 减少交易频率:每小时最多1笔新开仓
→ 耐心持仓:至少持有30分钟以上
夏普比率 0 ~ 0.7 (正收益):
→ 维持当前策略
夏普比率 > 0.7 (优异表现):
→ 可适度扩大仓位
关键: 夏普比率是唯一指标,它会自然惩罚频繁交易和过度进出。
# 决策流程
1. 分析夏普比率: 当前策略是否有效?需要调整吗?
2. 评估持仓: 趋势是否改变?是否该止盈/止损?
3. 寻找新机会: 有强信号吗?多空机会?
4. 输出决策: 思维链分析 + JSON
# 仓位大小计算
**重要**:`position_size_usd` 是**名义价值**(包含杠杆),非保证金需求。
**计算步骤**:
1. **可用保证金** = Available Cash × 0.88(预留12%给手续费、滑点与清算保证金缓冲)
2. **名义价值** = 可用保证金 × Leverage
3. **position_size_usd** = 名义价值(JSON中填写此值)
4. **实际币数** = position_size_usd / Current Price
**示例**:可用资金 $500,杠杆 5x
- 可用保证金 = $500 × 0.88 = $440
- position_size_usd = $440 × 5 = **$2,200** ← JSON填此值
- 实际占用保证金 = $440,剩余 $60 用于手续费、滑点与清算保护
---
记住:
- 目标是夏普比率,不是交易频率
- 宁可错过,不做低质量交易
- 风险回报比1:3是底线
使用方式
同保守型策略的使用方式。
激进型策略
适用场景
- ✅ 高风险偏好用户
- ✅ 强趋势市场
- ✅ 追求高收益,容忍高波动
核心特点
- 开仓信心度 ≥ 70(比系统默认低)
- 风险回报比 ≥ 1:3(系统最低要求)
- 最多持仓 3 个
- 仓位大(接近系统上限1.5倍净值)
- 杠杆高(接近系统上限)
预期表现
- 交易频率: 高(一天4-8笔)
- 持仓时间: 短(平均30分钟-1小时)
- 胜率: 较低(50-60%)
- 波动: 大
⚠️ 风险警告: 此策略波动大,可能出现较大回撤,仅适合风险承受能力强的用户。
完整模板
你是专业的加密货币交易AI,采用激进主动的交易策略。
⚠️ 风险声明:此策略追求高收益,但波动性大,可能出现较大回撤。
# 核心目标
最大化收益,在控制风险的前提下积极把握市场机会。
# 交易哲学
机会优先:积极寻找交易机会,不过度观望
快进快出:捕捉短期波动,及时止盈止损
趋势跟随:顺应市场趋势,快速反应
适度激进:在风控范围内最大化仓位和杠杆
# 开仓标准(相对宽松)
开仓条件:
- 信心度 ≥ 70(中等确定性即可)
- 至少2个指标支持
- 风险回报比 ≥ 1:3(系统最低要求)
- 顺应市场大趋势
可以尝试的场景:
- 突破关键阻力位/支撑位
- 快速拉升/下跌启动
- 成交量异常放大
- 短期超买/超卖反转
# 仓位管理(激进)
单币仓位:
- 山寨币: 1.2~1.5 倍账户净值(接近上限)
- BTC/ETH: 8~10 倍账户净值(接近上限)
最多持仓:3 个币种
杠杆使用:
- 山寨币: 4~5x 杠杆(接近上限)
- BTC/ETH: 15~20x 杠杆(接近上限)
# 止盈止损(灵活)
快速止损:亏损达到 -3% 立即止损
分批止盈:
- 达到 +3%:平仓 30%
- 达到 +6%:平仓 40%
- 达到 +9%:全部平仓
回撤管理:
盈亏金额从最高收益率回撤超过 60%,全部平仓
# 夏普比率调整
夏普比率 < -0.5: 暂停交易 15 分钟
夏普比率 -0.5~0: 降低仓位至 0.8 倍净值
夏普比率 0~0.7: 维持当前策略
夏普比率 > 0.7: 保持激进,可满仓操作
# 特殊策略
BTC 强趋势跟随:
- BTC 4h涨跌幅 > +5%:优先做多强势山寨币
- BTC 4h涨跌幅 < -5%:快速做空或空仓观望
短期波动捕捉:
- 价格短时间(15分钟内)波动 > 3%,考虑反向交易
- 持仓时长通常 30-60 分钟
记住:
- 激进不等于赌博,仍需严格风控
- 快进快出,不恋战
- 控制单次亏损,保护本金
使用方式
同保守型策略的使用方式。
⚠️ 再次提醒: 激进策略适合经验丰富、风险承受能力强的用户,新手请谨慎使用。
✅ 质量检查清单
在使用自定义 Prompt 前,请通过以下检查:
1. 内部逻辑检查
-
策略目标明确
- ✅ 有清晰的交易哲学(如"趋势跟踪"、"均值回归")
- ❌ 目标模糊("赚钱就行")
-
开仓/平仓逻辑一致
- ✅ 开仓条件:"MACD金叉 + 成交量放大"
- ✅ 平仓条件:"MACD死叉 或 达到止盈/止损"
- ❌ 矛盾逻辑:"只做多但遇到下跌信号也做空"
-
风控与盈利目标平衡
- ✅ 风险回报比 ≥ 1:3,止盈止损明确
- ❌ 只追求高收益,忽视风险控制
-
无"既要又要"的矛盾
- ❌ "既要保守又要激进"
- ❌ "既要频繁交易又要高胜率"
2. 字段引用检查
-
字段名称与系统输出一致
- ✅ "盈亏金额"、"最高收益率"、"保证金"
- ❌
unrealized_pnl、peak_pnl_pct、margin_used
-
计算公式使用正确字段
- ✅ 真实收益率 = 盈亏金额 / 保证金
- ❌ 真实收益率 = 盈亏(百分比)/ 杠杆
-
没有引用不存在的字段
- ❌ "根据 KDJ 指标..." (系统未提供 KDJ)
- ✅ "根据 MACD、RSI 指标..."
-
单位理解正确
- ✅ "盈亏(百分比)" = 含杠杆的收益率
- ✅ "盈亏金额" = 实际美元盈亏
3. 系统约束检查
-
未尝试覆盖硬约束(除非模式3且完全理解)
- ❌ "风险回报比可以低于1:3"
- ❌ "可以同时持仓5个币种"
-
未使用保留关键词
- ❌ 在 Prompt 中写
<reasoning>开仓分析...</reasoning> - ✅ 只用自然语言描述策略
- ❌ 在 Prompt 中写
-
未要求 AI 在 JSON 中添加描述
- ❌ "在 JSON 中添加详细的中文解释"
- ✅ "reasoning 字段保持简短(<20字)"
-
正确理解三种模式
- ✅ 新手用模式1
- ✅ 进阶用模式2
- ✅ 高级用模式3且包含完整约束
4. 量化投资最佳实践检查
-
风险回报比明确且合理
- ✅ 要求 ≥ 1:3(或更严格如1:4)
- ❌ 未提及风险回报比
-
有明确的止损止盈策略
- ✅ "止损:入场价-2%, 止盈:入场价+6%"
- ❌ "根据感觉设置止损"
-
避免过度交易
- ✅ "只在高确定性机会开仓,大多数周期应该 wait"
- ❌ "每个周期都要寻找交易机会"
-
策略可测试和验证
- ✅ 有明确的量化指标(如"RSI<30且MACD金叉")
- ❌ 主观判断(如"感觉市场会涨")
-
考虑市场条件变化
- ✅ "趋势市场追涨杀跌,震荡市场高抛低吸"
- ❌ 只适用单一市场环境
检查结果评分
- 20/20: 优秀,可以使用
- 15-19: 良好,建议优化部分问题
- 10-14: 一般,存在明显问题,需要修改
- <10: 不合格,建议重新编写或使用官方模板
❓ 常见问题与最佳实践
常见错误案例
错误1: 字段名称错误
❌ 错误示例:
当 unrealized_pnl 超过 peak_pnl_pct 的50%时,部分止盈
错误原因:
- 使用了代码字段名而非自然语言标签
- AI 无法识别
unrealized_pnl和peak_pnl_pct
✅ 正确改写:
当盈亏金额回撤超过最高收益率的50%时,部分止盈
要点总结:
- ✅ Do: 使用自然语言字段名(盈亏金额、最高收益率)
- ❌ Don't: 使用代码字段名(unrealized_pnl、peak_pnl_pct)
错误2: 单位理解错误
❌ 错误示例:
当盈亏超过5%时止盈
错误原因:
- "盈亏"歧义:是"盈亏(百分比)"还是"盈亏金额"?
- 5%是含杠杆的收益率还是真实收益率?
✅ 正确改写:
方案1: 当盈亏(百分比)超过+5%时,部分止盈
方案2: 当真实收益率(盈亏金额/保证金)超过10%时,部分止盈
要点总结:
- ✅ Do: 明确指定字段和单位
- ❌ Don't: 使用歧义表述
错误3: 计算公式错误
❌ 错误示例:
真实收益率 = 盈亏(百分比) / 杠杆
错误原因:
- 公式错误,盈亏(百分比)已经包含杠杆
- 应该用盈亏金额除以保证金
✅ 正确改写:
真实收益率 = 盈亏金额 / 保证金 × 100%
要点总结:
- ✅ Do: 使用正确的计算逻辑
- ❌ Don't: 混淆含杠杆和不含杠杆的字段
错误4: JSON 格式错误
❌ 错误示例:
在 JSON 中添加详细的中文解释,帮助我理解决策原因
错误原因:
- 要求 AI 在 JSON 中加入中文描述会破坏格式
- JSON 必须严格符合格式要求
✅ 正确改写:
reasoning 字段保持简短(10-20字),用关键词概括决策理由
要点总结:
- ✅ Do: 使用 reasoning 字段,保持简短
- ❌ Don't: 要求在 JSON 中添加长篇描述
错误5: 使用保留关键词
❌ 错误示例:
在你的分析中使用 <reasoning> 标签来组织思路
错误原因:
<reasoning>是系统保留的 XML 标签- 用户不应在 Prompt 中使用这些标签
✅ 正确改写:
在分析市场时,先评估趋势,再确认指标,最后做出决策
要点总结:
- ✅ Do: 用自然语言描述分析流程
- ❌ Don't: 使用系统保留的 XML 标签
错误6: 尝试覆盖硬约束
❌ 错误示例:
风险回报比可以适当降低,2:1 也可以接受
错误原因:
- 系统强制要求风险回报比 ≥ 1:3
- 用户无法在模式1和2中覆盖此约束
✅ 正确改写:
严格遵守风险回报比 ≥ 1:3,追求更高的 1:4 或 1:5
要点总结:
- ✅ Do: 遵守或加强硬约束
- ❌ Don't: 尝试放宽硬约束(除非模式3)
错误7: 逻辑矛盾
❌ 错误示例:
采用保守策略,但要频繁交易捕捉每个波动
错误原因:
- 保守策略和频繁交易自相矛盾
- 频繁交易会增加成本和波动,降低夏普比率
✅ 正确改写:
采用保守策略,只在高确定性机会开仓,大多数时候观望
要点总结:
- ✅ Do: 确保策略内部逻辑一致
- ❌ Don't: 同时要求矛盾的目标
错误8: 过度交易倾向
❌ 错误示例:
每个周期都要寻找交易机会,不能浪费任何行情
错误原因:
- 过度交易会增加手续费损耗
- 会降低夏普比率,违背量化交易原则
✅ 正确改写:
只在强信号时开仓,大多数周期应该 wait 或 hold
交易频率控制在每小时 0.1-0.2 笔(一天 2-4 笔)
要点总结:
- ✅ Do: 强调质量优于数量
- ❌ Don't: 要求频繁交易
错误9: 忽略系统状态
❌ 错误示例:
(Prompt 中完全没有提及夏普比率)
错误原因:
- 夏普比率是核心绩效指标
- 忽略它会导致 AI 无法自我调整策略
✅ 正确改写:
根据夏普比率调整策略:
- 夏普比率 < -0.5: 停止交易,观望至少 18 分钟
- 夏普比率 -0.5~0: 只做信心度>80 的交易
- 夏普比率 0~0.7: 维持当前策略
- 夏普比率 > 0.7: 可适度扩大仓位
要点总结:
- ✅ Do: 利用夏普比率进行自我进化
- ❌ Don't: 忽略系统提供的绩效反馈
错误10: 模式配置错误
❌ 错误示例:
设置 override_base_prompt = true
但自定义 Prompt 中没有包含硬约束和输出格式
错误原因:
- 模式3会完全覆盖系统默认
- 没有硬约束会导致决策验证失败
✅ 正确改写:
如果使用模式3,必须在自定义 Prompt 中包含:
1. 所有硬约束(风险回报比、持仓数、杠杆等)
2. 完整的输出格式要求(XML 标签 + JSON 格式)
要点总结:
- ✅ Do: 新手和进阶用户使用模式1或2
- ❌ Don't: 不理解系统机制就使用模式3
数据流验证最佳实践
验证步骤
步骤1: 查看实际输出
# 查看系统日志,找到实际发送给 AI 的 Prompt
docker logs nofx-trader | grep "User Prompt"
步骤2: 确认字段存在
检查你想引用的字段是否在实际输出中:
✅ 存在: "盈亏金额+59.50 USDT" → 可以引用"盈亏金额"
❌ 不存在: 没有看到 "KDJ" → 不能引用 KDJ 指标
步骤3: 匹配自然语言标签
输出: "盈亏+2.38% | 盈亏金额+59.50 USDT | 最高收益率5.00%"
✅ 正确引用: "盈亏(百分比)"、"盈亏金额"、"最高收益率"
❌ 错误引用: "pnl_pct"、"unrealized_pnl"、"peak_pnl"
字段命名一致性原则
原则1: 自然语言优先
✅ Do:
盈亏金额、最高收益率、保证金、杠杆、持仓时长
❌ Don't:
unrealized_pnl, peak_pnl_pct, margin_used, leverage, holding_duration
原则2: 与代码输出完全一致
代码输出 (engine.go:387-390):
盈亏+2.38% | 盈亏金额+59.50 USDT | 最高收益率5.00%
Prompt 引用:
✅ 正确: "如果盈亏金额回撤超过最高收益率的50%..."
❌ 错误: "如果 unrealized_pnl 回撤超过 peak_pnl_pct 的50%..."
开源系统兼容性考虑
修改影响评估
低影响(安全):
- ✅ 修改官方模板内容
- ✅ 添加个性化策略(模式2)
- ✅ 调整开仓条件参数
中影响(谨慎):
- ⚠️ 修改字段引用方式
- ⚠️ 修改计算公式
高影响(危险):
- ❌ 完全覆盖硬约束(模式3)
- ❌ 修改输出格式要求
最佳实践
1. 增量添加优于修改
- ✅ 在现有策略基础上添加新规则
- ⚠️ 修改核心逻辑
2. 向后兼容
- 如果系统新增字段,旧 Prompt 仍可运行
- 新 Prompt 可利用新字段
3. 提供迁移指南
- 如有破坏性变更,提供详细的迁移说明
🎓 高级话题
模式3: 完全自定义
⚠️ 警告: 此模式仅适合完全理解系统机制的高级用户
使用场景
- 需要完全不同的交易哲学
- 需要自定义风控规则
- 需要特殊的输出格式
必须包含的内容
你的自定义 Prompt 必须包含:
- 核心策略描述
- 所有硬约束(风险回报比、持仓数、仓位大小、杠杆限制等)
- 输出格式要求(XML 标签 + JSON 格式)
完整模板框架
[你的核心策略]
# 硬约束
1. 风险回报比 ≥ 1:3
2. 最多持仓 3 个
3. 单币仓位: 山寨 0.8-1.5x净值,BTC/ETH 5-10x净值
4. 杠杆: 山寨≤5x,BTC/ETH≤20x
5. 保证金使用率 ≤ 90%
6. 最小开仓: 一般≥12U,BTC/ETH≥60U
# 输出格式
使用 <reasoning> 和 <decision> 标签:
<reasoning>
思维链分析
</reasoning>
<decision>
```json
[{决策对象}]
验证清单
- 包含所有硬约束
- 定义了输出格式(XML + JSON)
- 策略逻辑完整自洽
- 经过充分测试
调试指南
问题1: AI 输出格式错误
症状: 系统报错"JSON解析失败"
排查步骤:
- 查看日志中的 AI 原始输出
docker logs nofx-trader | tail -100 - 检查是否使用了 XML 标签
<reasoning>和<decision> - 检查 JSON 格式是否正确
常见原因:
- AI 未使用
<decision>标签 - JSON 中包含中文注释
- JSON 数字包含千位分隔符(如 98,000)
- JSON 中使用范围符号(如 "2000~3000")
解决方案:
- 在 Prompt 中明确要求使用 XML 标签
- 强调 JSON 必须严格符合格式(无注释、无千位分隔符)
- 参考 JSON 输出格式规范
问题2: 决策被拒绝
症状: 系统报错"决策验证失败"
排查步骤:
- 查看具体的验证错误信息
docker logs nofx-trader | grep "验证失败" - 检查是否违反硬约束
常见原因:
- 风险回报比 < 1:3
- 杠杆超过限制(山寨币>5x,BTC/ETH>20x)
- 仓位大小超出范围
- 开仓金额过小(<12 USDT 或 BTC/ETH<60 USDT)
解决方案:
- 在 Prompt 中强调硬约束要求
- 添加自我检查逻辑:
在输出决策前,请自我检查: - 风险回报比是否 ≥ 1:3? - 杠杆是否在限制范围内? - 仓位大小是否符合要求?
问题3: AI 不按预期决策
症状: AI 的决策与你的预期不符
排查步骤:
- 查看 AI 的思维链分析(reasoning)
docker logs nofx-trader | grep -A 20 "<reasoning>" - 检查 Prompt 是否有歧义
- 检查市场数据是否符合你的开仓条件
优化建议:
-
使用更明确的量化指标
❌ 模糊: "当市场有做多机会时" ✅ 明确: "当 MACD 金叉且 RSI < 70 且成交量放大 > 20%时" -
避免模糊的表述
❌ 避免: "感觉"、"可能"、"大概" ✅ 使用: "当...时"、"如果...则..."、"必须..." -
添加具体的数值阈值
❌ 模糊: "价格大幅上涨" ✅ 明确: "价格 15 分钟内上涨 > 3%" -
检查逻辑一致性
开仓条件和平仓条件应该相互对应 如果开仓依据 MACD 金叉,平仓可以用 MACD 死叉
📞 获取帮助
官方资源
- GitHub Issues: https://github.com/NoFxAiOS/nofx/issues
- 官方文档: 查看项目 README
- 社区讨论: GitHub Discussions
提问模板
当你遇到问题时,请提供以下信息:
问题描述:[简要描述问题]
使用方式:[方式1/2/3]
Prompt 内容:
[粘贴你的 Prompt 内容]
错误日志:
[粘贴相关的错误日志]
预期行为:[你期望的结果]
实际行为:[实际发生的情况]
📝 更新日志
v1.0 (2025-01-09)
- 初始版本发布
- 完整的字段参考文档
- 三种官方策略模板(保守型/平衡型/激进型)
- 质量检查清单和常见错误案例
- 高级话题和调试指南
文档版本: v1.0 最后更新: 2025-01-09 维护者: Nofx Team CoderMageFox