# 📖 NoFx Prompt 编写指南 **版本**: v1.0 **更新日期**: 2025-01-09 **适用系统版本**: NoFx v0.x+ --- ## 📚 目录 - [🚀 快速开始](#-快速开始5分钟) - [💡 核心概念](#-核心概念) - [📋 可用字段参考](#-可用字段参考) - [⚖️ 系统约束](#️-系统约束) - [📦 官方模板库](#-官方模板库) - [✅ 质量检查清单](#-质量检查清单) - [❓ 常见问题与最佳实践](#-常见问题与最佳实践) - [🎓 高级话题](#-高级话题) --- ## 🎯 推荐学习路径 **新手用户**: 快速开始 → 官方模板 → 质量检查 **进阶用户**: 核心概念 → 字段参考 → 系统约束 → 常见错误 **高级用户**: 高级话题 → 模式3 → 调试指南 --- ## 🚀 快速开始(5分钟) ### 什么是 Prompt? Prompt 是你给 AI 交易员的"工作指令",决定了 AI 如何分析市场和做出交易决策。 ### 三种使用方式 #### 方式1:使用官方模板(推荐新手) **步骤**: 1. 选择一个官方模板([保守型](#保守型策略) / [平衡型](#平衡型策略) / [激进型](#激进型策略)) 2. 复制内容到 `prompts/default.txt` 3. 重启系统,开始交易 **适合**: 新手用户,想快速开始 **耗时**: 2分钟 #### 方式2:在官方模板基础上添加个性化策略(推荐) **步骤**: 1. 保持 `prompts/default.txt` 不变 2. 在 Web 界面的"自定义 Prompt"中添加你的策略 3. **关闭** "覆盖默认提示词" 开关(`override_base_prompt = false`) **效果说明**: ``` 最终提示词 = 官方基础策略(风控+格式) + 你的自定义策略 ↑ ↑ 系统保证安全 你的交易想法 ``` **适合**: 进阶用户,想保留风控但加入自己的想法 **耗时**: 10-30分钟 #### 方式3:完全自定义(高级) **步骤**: 1. 编写完整的 Prompt(包含所有风控规则) 2. **开启** "覆盖默认提示词" 开关(`override_base_prompt = true`) 3. ⚠️ 需要自行负责所有风控和输出格式 **效果说明**: ``` 最终提示词 = 你的自定义策略(完全替换) ↑ 你需要自己保证安全和格式正确 ``` **重要警告**: - ❌ 开启后,系统不会自动添加风控规则 - ❌ 输出格式错误会导致交易失败 - ⚠️ 仅适合完全理解系统机制的高级用户 **适合**: 高级用户,完全理解系统机制 **耗时**: 1-2小时 ### 立即开始 👉 **新手推荐**: 跳转到 [官方模板库](#-官方模板库),选择一个模板开始 👉 **进阶优化**: 继续阅读 [可用字段参考](#-可用字段参考) 👉 **高级定制**: 阅读 [完全自定义指南](#模式3-完全自定义) --- ## 💡 核心概念 ### Prompt 的工作原理 NoFx 每3分钟会构建一个包含市场数据的消息发送给 AI: ```mermaid graph LR A[你的 Prompt
策略指令] --> B[AI模型] C[市场数据
自动生成] --> B B --> D[思维链分析] B --> E[交易决策JSON] ``` **工作流程**: 1. **系统 Prompt(System)**: 你编写的策略指令 2. **用户 Prompt(User)**: 系统自动生成的市场数据 3. **AI 响应(Response)**: AI 的分析和决策 ### Prompt 的三个组成部分 #### 1. 核心策略(你编写) 定义 AI 的交易哲学、风险偏好、决策标准 **示例**: ``` 你是保守型交易员,只在高确定性机会时开仓。 开仓条件:信心度 ≥ 85,多个指标共振。 ``` #### 2. 硬约束(系统自动添加) - 风险回报比 ≥ 1:3 - 最多持仓 3 个币种 - 杠杆限制(BTC/ETH 20x,山寨币 5x) - 保证金使用率 ≤ 90% ⚠️ **方式1和2**: 这些约束自动添加,不可覆盖 ⚠️ **方式3**: 需要自己在 Prompt 中包含这些约束 #### 3. 输出格式(系统自动添加) 要求 AI 使用 XML 标签和 JSON 格式输出决策 **示例输出**: ```xml BTC 跌破支撑位,MACD 死叉,成交量放大... ```json [ { "symbol": "BTCUSDT", "action": "open_short", "leverage": 10, "position_size_usd": 5000, "stop_loss": 97000, "take_profit": 91000, "confidence": 85 } ] ``` ``` ### 市场数据自动传递 你**不需要**在 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%` | 距离清算的安全边际 | |(96500-88000)/96500| = 8.8% | **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 中使用: ❌ **禁止使用**: - `` - 用于标记思维链分析 - `` - 用于标记 JSON 决策 --- ### JSON 输出格式规范 AI 必须按照以下格式输出决策: #### 正确格式 ```xml 你的分析思路... ```json [ { "symbol": "BTCUSDT", "action": "open_short", "leverage": 10, "position_size_usd": 5000, "stop_loss": 97000, "take_profit": 91000, "confidence": 85, "risk_usd": 300 } ] ``` ``` #### JSON 格式禁止项 ❌ **禁止包含**: **1. 范围符号 `~`** ```json // 错误 {"position_size_usd": "2000~3000"} // 必须是精确值 {"stop_loss": "95000~96000"} // 必须是单一价格 // 正确 {"position_size_usd": 2500} {"stop_loss": 95500} ``` **2. 千位分隔符 `,`** ```json // 错误 {"position_size_usd": 98,000} // JSON 数字不允许逗号 // 正确 {"position_size_usd": 98000} ``` **3. 中文描述或注释** ```json // 错误 { "symbol": "BTCUSDT", "action": "open_long", // 开多仓 "confidence": 80 // 只需要必要字段 } // 正确 { "symbol": "BTCUSDT", "action": "open_long", "confidence": 85 } ``` --- ### 三种 Prompt 模式对比 | 模式 | 配置 | 最终 Prompt | 适用场景 | |------|------|------------|----------| | **模式1
仅基础** | `override_base_prompt=false`
`custom_prompt=""` | 官方模板 + 硬约束 + 输出格式 | 新手用户 | | **模式2
基础+附加** | `override_base_prompt=false`
`custom_prompt="你的策略"` | 官方模板 + 硬约束 + 输出格式
+ 个性化策略 + 注意事项 | 进阶用户 | | **模式3
完全自定义** | `override_base_prompt=true`
`custom_prompt="完整Prompt"` | 仅使用自定义内容
(忽略所有系统默认) | 高级用户 | ⚠️ **模式3 风险警告**: - 你必须自己包含所有硬约束 - 你必须自己定义输出格式 - 你必须自己负责风控规则 - 建议只有完全理解系统机制后才使用 --- ## 📦 官方模板库 ### 保守型策略 #### 适用场景 - ✅ 新手用户,追求稳健 - ✅ 市场波动大,风险厌恶 - ✅ 资金安全优先,容忍低收益 #### 核心特点 - 开仓信心度 ≥ 85(只做高确定性机会) - 风险回报比 ≥ 1:4(比系统要求更严格) - 最多持仓 2 个(降低风险暴露) - 仓位小(0.5倍账户净值) #### 预期表现 - 交易频率: 低(可能一天1-2笔) - 持仓时间: 长(平均2-4小时) - 胜率: 高(>70%) - 波动: 小 #### 完整模板 ```plaintext 你是专业的加密货币交易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: 替换默认模板** ```bash # 备份原文件 cp prompts/default.txt prompts/default.txt.bak # 将上述模板内容保存到 prompts/default.txt # 重启系统 docker-compose restart ``` **方式2: Web界面自定义** 1. 复制上述模板内容 2. 粘贴到 Web 界面的"自定义 Prompt" 3. 设置 `override_base_prompt = false` --- ### 平衡型策略 #### 适用场景 - ✅ 有一定经验的用户 - ✅ 正常市场条件 - ✅ 追求风险收益平衡 #### 核心特点 - 开仓信心度 ≥ 75(系统默认) - 风险回报比 ≥ 1:3(系统默认) - 最多持仓 3 个(系统默认) - 仓位适中(0.8~1.5倍净值) #### 预期表现 - 交易频率: 中(一天2-4笔) - 持仓时间: 中(平均1-2小时) - 胜率: 中等(60-70%) - 波动: 适中 #### 完整模板 ```plaintext 你是专业的加密货币交易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%) - 波动: 大 ⚠️ **风险警告**: 此策略波动大,可能出现较大回撤,仅适合风险承受能力强的用户。 #### 完整模板 ```plaintext 你是专业的加密货币交易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 中写 `开仓分析...` - ✅ 只用自然语言描述策略 - [ ] **未要求 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: 使用保留关键词 **❌ 错误示例**: ``` 在你的分析中使用 标签来组织思路 ``` **错误原因**: - `` 是系统保留的 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: 查看实际输出** ```bash # 查看系统日志,找到实际发送给 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 必须包含: 1. **核心策略描述** 2. **所有硬约束**(风险回报比、持仓数、仓位大小、杠杆限制等) 3. **输出格式要求**(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 # 输出格式 使用 标签: 思维链分析 ```json [{决策对象}] ``` ``` #### 验证清单 - [ ] 包含所有硬约束 - [ ] 定义了输出格式(XML + JSON) - [ ] 策略逻辑完整自洽 - [ ] 经过充分测试 --- ### 调试指南 #### 问题1: AI 输出格式错误 **症状**: 系统报错"JSON解析失败" **排查步骤**: 1. 查看日志中的 AI 原始输出 ```bash docker logs nofx-trader | tail -100 ``` 2. 检查是否使用了 XML 标签 `` 和 `` 3. 检查 JSON 格式是否正确 **常见原因**: - AI 未使用 `` 标签 - JSON 中包含中文注释 - JSON 数字包含千位分隔符(如 98,000) - JSON 中使用范围符号(如 "2000~3000") **解决方案**: - 在 Prompt 中明确要求使用 XML 标签 - 强调 JSON 必须严格符合格式(无注释、无千位分隔符) - 参考 [JSON 输出格式规范](#json-输出格式规范) --- #### 问题2: 决策被拒绝 **症状**: 系统报错"决策验证失败" **排查步骤**: 1. 查看具体的验证错误信息 ```bash docker logs nofx-trader | grep "验证失败" ``` 2. 检查是否违反硬约束 **常见原因**: - 风险回报比 < 1:3 - 杠杆超过限制(山寨币>5x,BTC/ETH>20x) - 仓位大小超出范围 - 开仓金额过小(<12 USDT 或 BTC/ETH<60 USDT) **解决方案**: - 在 Prompt 中强调硬约束要求 - 添加自我检查逻辑: ``` 在输出决策前,请自我检查: - 风险回报比是否 ≥ 1:3? - 杠杆是否在限制范围内? - 仓位大小是否符合要求? ``` --- #### 问题3: AI 不按预期决策 **症状**: AI 的决策与你的预期不符 **排查步骤**: 1. 查看 AI 的思维链分析(reasoning) ```bash docker logs nofx-trader | grep -A 20 "" ``` 2. 检查 Prompt 是否有歧义 3. 检查市场数据是否符合你的开仓条件 **优化建议**: - **使用更明确的量化指标** ``` ❌ 模糊: "当市场有做多机会时" ✅ 明确: "当 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