mirror of
https://github.com/NoFxAiOS/nofx.git
synced 2026-07-03 11:00:58 +08:00
feat: 添加自适应双策略系统(震荡 + 趋势)
根据 ADAPTIVE_STRATEGY_DESIGN.md 方案 A(简单版)实现:
新增功能:
1. 市场状态判断(3个指标交叉验证):
- 多时间框架一致性(15m/1h/4h MACD 方向)
- 价格波动率(最近 10 根 K线波动幅度)
- 买卖压力极端值(BuySellRatio 连续性)
2. 双策略系统:
- 策略 A(震荡交易):止盈 1-2%,止损 0.8-1%,盈亏比 1:1.5-1:2
- 策略 B(趋势跟随):止盈 5-10%,止损 1.5-2%,盈亏比 1:3-1:5
3. 策略选择指导:AI 必须在思维链中明确说明市场状态判断和策略选择
改进效果:
- 让 AI 根据市场状态动态调整止盈止损
- 震荡市场快进快出,趋势市场让利润奔跑
- 预期提升胜率和盈亏比,降低最大回撤
实施方式:纯提示词改进(无代码变更),耗时 30 分钟
🤖 Generated with Claude Code
This commit is contained in:
@@ -268,67 +268,119 @@ func buildSystemPrompt(accountEquity float64, btcEthLeverage, altcoinLeverage in
|
||||
accountEquity*0.8, accountEquity*1.5, altcoinLeverage, accountEquity*5, accountEquity*10, btcEthLeverage))
|
||||
sb.WriteString("4. 保证金: 总使用率 ≤ 90%\n\n")
|
||||
|
||||
// === 震荡交易策略 ===
|
||||
sb.WriteString("# 📦 震荡交易策略(核心)\n\n")
|
||||
sb.WriteString("**策略定位**: 专门做 BTC 震荡行情,快进快出,高胜率低盈亏比\n\n")
|
||||
sb.WriteString("**震荡区间识别**:\n")
|
||||
// 市场状态判断与策略选择
|
||||
sb.WriteString("# 市场状态判断(优先)\n\n")
|
||||
sb.WriteString("在制定交易决策前,必须先判断当前市场状态:\n\n")
|
||||
sb.WriteString("判断方法(多个指标交叉验证):\n\n")
|
||||
sb.WriteString("1. 多时间框架一致性:\n")
|
||||
sb.WriteString("- 检查 15m/1h/4h MACD 方向一致度\n")
|
||||
sb.WriteString("- 3个时间框架方向一致 → 强趋势市场\n")
|
||||
sb.WriteString("- 2个时间框架方向一致 → 弱趋势市场\n")
|
||||
sb.WriteString("- 方向矛盾(15m上涨但1h下跌) → 震荡市场\n\n")
|
||||
sb.WriteString("2. 价格波动率:\n")
|
||||
sb.WriteString("- 最近 10 根 K线(高-低)/收盘价 > 3% → 趋势市场(大波动)\n")
|
||||
sb.WriteString("- 最近 10 根 K线(高-低)/收盘价 < 1.5% → 震荡市场(小波动)\n\n")
|
||||
sb.WriteString("3. 买卖压力极端值:\n")
|
||||
sb.WriteString("- BuySellRatio > 0.75 连续 3 根以上 → 强趋势(多)\n")
|
||||
sb.WriteString("- BuySellRatio < 0.25 连续 3 根以上 → 强趋势(空)\n")
|
||||
sb.WriteString("- BuySellRatio 在 0.4-0.6 波动 → 震荡\n\n")
|
||||
sb.WriteString("判断结论: 综合以上 3 个指标,判定当前市场状态为"趋势市场"或"震荡市场"\n\n")
|
||||
|
||||
// 双策略系统
|
||||
sb.WriteString("# 双策略系统(根据市场状态选择)\n\n")
|
||||
sb.WriteString("## 策略 A: 震荡交易(震荡市场时使用)\n\n")
|
||||
sb.WriteString("策略定位: 专门做 BTC 震荡行情,快进快出,高胜率低盈亏比\n\n")
|
||||
sb.WriteString("震荡区间识别:\n")
|
||||
sb.WriteString("- 价格在15分钟/1小时 EMA20上下波动(±2-4%)\n")
|
||||
sb.WriteString("- MACD 在零轴附近(-200到+200之间)\n")
|
||||
sb.WriteString("- 多个时间框架方向不一致(如15m上涨但1h下跌)\n")
|
||||
sb.WriteString("- RSI 在30-70区间反复震荡\n\n")
|
||||
sb.WriteString("**交易逻辑**:\n")
|
||||
sb.WriteString("- **区间下沿**(RSI<35 或接近支撑) → 做多\n")
|
||||
sb.WriteString("- **区间上沿**(RSI>65 或接近压力) → 做空\n")
|
||||
sb.WriteString("- **趋势行情**(多时间框架共振,放量突破) → 立即止损\n\n")
|
||||
sb.WriteString("交易逻辑:\n")
|
||||
sb.WriteString("- 区间下沿(RSI<35 或接近支撑) → 做多\n")
|
||||
sb.WriteString("- 区间上沿(RSI>65 或接近压力) → 做空\n")
|
||||
sb.WriteString("- 趋势行情(多时间框架共振,放量突破) → 立即止损\n\n")
|
||||
sb.WriteString("止盈止损设置(震荡策略):\n")
|
||||
sb.WriteString("- 止盈:1-2%(快速获利)\n")
|
||||
sb.WriteString("- 止损:0.8-1%(紧密止损)\n")
|
||||
sb.WriteString("- 盈亏比:1:1.5 - 1:2\n\n")
|
||||
sb.WriteString("退出信号:\n")
|
||||
sb.WriteString("- 多时间框架开始共振 → 市场转为趋势,立即止损\n\n")
|
||||
|
||||
// 策略 B: 趋势跟随
|
||||
sb.WriteString("## 策略 B: 趋势跟随(趋势市场时使用)\n\n")
|
||||
sb.WriteString("策略定位: 捕捉趋势行情,让利润奔跑,中等胜率高盈亏比\n\n")
|
||||
sb.WriteString("趋势确认条件:\n")
|
||||
sb.WriteString("- 多时间框架共振(15m/1h/4h MACD 方向一致)\n")
|
||||
sb.WriteString("- 连续 2-3 根 K线放量(成交量 > 平均 1.5 倍)\n")
|
||||
sb.WriteString("- 买卖压力极端(BuySellRatio >0.7 或 <0.3)\n")
|
||||
sb.WriteString("- 价格突破关键位(EMA20)并回踩确认\n\n")
|
||||
sb.WriteString("交易逻辑:\n")
|
||||
sb.WriteString("- 突破后回踩入场(避免追高)\n")
|
||||
sb.WriteString("- 顺势交易(多头趋势做多,空头趋势做空)\n")
|
||||
sb.WriteString("- 持仓时间更长(至少 1-2 小时)\n\n")
|
||||
sb.WriteString("止盈止损设置(趋势策略):\n")
|
||||
sb.WriteString("- 止盈:5-10%(让利润奔跑)\n")
|
||||
sb.WriteString("- 止损:1.5-2%(给足震荡空间)\n")
|
||||
sb.WriteString("- 盈亏比:1:3 - 1:5\n\n")
|
||||
sb.WriteString("退出信号:\n")
|
||||
sb.WriteString("- 多时间框架方向开始矛盾 → 趋势减弱,获利离场\n")
|
||||
sb.WriteString("- 成交量萎缩 + MACD 背离 → 趋势可能反转\n\n")
|
||||
|
||||
// 策略选择指导
|
||||
sb.WriteString("## 策略选择指导\n\n")
|
||||
sb.WriteString("必须在思维链中明确说明:\n")
|
||||
sb.WriteString("1. 市场状态判断: "当前市场状态:震荡/趋势(理由:...)"\n")
|
||||
sb.WriteString("2. 策略选择: "选择策略 A/B(理由:...)"\n")
|
||||
sb.WriteString("3. 止盈止损: "震荡策略:止盈 1.2%, 止损 0.8%" 或 "趋势策略:止盈 5%, 止损 1.5%"\n\n")
|
||||
|
||||
// === 交易频率认知 ===
|
||||
sb.WriteString("# ⏱️ 交易频率认知\n\n")
|
||||
sb.WriteString("**量化标准**:\n")
|
||||
sb.WriteString("量化标准:\n")
|
||||
sb.WriteString("- 优秀交易员:每天2-4笔 = 每小时0.1-0.2笔\n")
|
||||
sb.WriteString("- 过度交易:每小时>2笔 = 严重问题\n")
|
||||
sb.WriteString("- 最佳节奏:开仓后持有至少30-60分钟\n\n")
|
||||
sb.WriteString("**自查**:\n")
|
||||
sb.WriteString("自查:\n")
|
||||
sb.WriteString("如果你发现自己每个周期都在交易 → 说明标准太低\n")
|
||||
sb.WriteString("如果你发现持仓<30分钟就平仓 → 说明太急躁\n\n")
|
||||
|
||||
// === 开仓信号强度 ===
|
||||
sb.WriteString("# 🎯 开仓标准(严格)\n\n")
|
||||
sb.WriteString("只在**强信号**时开仓,不确定就观望。\n\n")
|
||||
sb.WriteString("**你拥有的完整数据(专为震荡交易优化)**:\n\n")
|
||||
sb.WriteString("**📊 四个时间框架序列**(每个包含最近10个数据点):\n")
|
||||
sb.WriteString("1. **3分钟序列**:实时价格 + 放量分析(当前价格 = 最后一根K线的收盘价)\n")
|
||||
sb.WriteString("只在强信号时开仓,不确定就观望。\n\n")
|
||||
sb.WriteString("你拥有的完整数据(专为震荡交易优化):\n\n")
|
||||
sb.WriteString("📊 四个时间框架序列(每个包含最近10个数据点):\n")
|
||||
sb.WriteString("1. 3分钟序列:实时价格 + 放量分析(当前价格 = 最后一根K线的收盘价)\n")
|
||||
sb.WriteString(" - Mid prices, EMA20, MACD, RSI7, RSI14\n")
|
||||
sb.WriteString(" - **Volumes**: 成交量序列(用于检测放量)\n")
|
||||
sb.WriteString(" - **BuySellRatios**: 买卖压力比(>0.6多方强,<0.4空方强)\n")
|
||||
sb.WriteString("2. **15分钟序列**:短期震荡区间识别(覆盖最近2.5小时)\n")
|
||||
sb.WriteString(" - Volumes: 成交量序列(用于检测放量)\n")
|
||||
sb.WriteString(" - BuySellRatios: 买卖压力比(>0.6多方强,<0.4空方强)\n")
|
||||
sb.WriteString("2. 15分钟序列:短期震荡区间识别(覆盖最近2.5小时)\n")
|
||||
sb.WriteString(" - Mid prices, EMA20, MACD, RSI7, RSI14\n")
|
||||
sb.WriteString("3. **1小时序列**:中期支撑压力确认(覆盖最近10小时)\n")
|
||||
sb.WriteString("3. 1小时序列:中期支撑压力确认(覆盖最近10小时)\n")
|
||||
sb.WriteString(" - Mid prices, EMA20, MACD, RSI7, RSI14\n")
|
||||
sb.WriteString("4. **4小时序列**:大趋势预警(覆盖最近40小时)\n")
|
||||
sb.WriteString("4. 4小时序列:大趋势预警(覆盖最近40小时)\n")
|
||||
sb.WriteString(" - EMA20 vs EMA50, ATR, Volume, MACD, RSI14\n\n")
|
||||
sb.WriteString("**💰 资金数据**:\n")
|
||||
sb.WriteString("💰 资金数据:\n")
|
||||
sb.WriteString("- 持仓量(OI)变化、资金费率、成交量对比\n\n")
|
||||
sb.WriteString("**🎯 震荡交易分析方法**:\n\n")
|
||||
sb.WriteString("**1. 震荡区间识别**:\n")
|
||||
sb.WriteString("🎯 震荡交易分析方法:\n\n")
|
||||
sb.WriteString("1. 震荡区间识别:\n")
|
||||
sb.WriteString("- 价格在15m/1h EMA20 上下±2-4%波动\n")
|
||||
sb.WriteString("- RSI 在30-70区间反复,未出现持续超买/超卖\n")
|
||||
sb.WriteString("- MACD 在零轴附近震荡,未出现明确金叉/死叉\n")
|
||||
sb.WriteString("- 1h和4h时间框架方向不一致(矛盾 = 震荡)\n\n")
|
||||
sb.WriteString("**2. 买卖压力分析**(3分钟放量检测):\n")
|
||||
sb.WriteString("- **连续放量** = 最近2-3根3分钟K线成交量 > 平均成交量1.5倍\n")
|
||||
sb.WriteString("- **买方力量**:BuySellRatio > 0.6(主动买入占比 > 60%)\n")
|
||||
sb.WriteString("- **卖方力量**:BuySellRatio < 0.4(主动卖出占比 > 60%)\n")
|
||||
sb.WriteString("- **放量+买压** → 可能向上突破,做多或止损空单\n")
|
||||
sb.WriteString("- **放量+卖压** → 可能向下突破,做空或止损多单\n\n")
|
||||
sb.WriteString("**3. 入场信号**(高胜率位置):\n")
|
||||
sb.WriteString("- **区间下沿做多**:RSI < 35 + 买卖压力比 > 0.5 + 价格接近15m EMA20下方\n")
|
||||
sb.WriteString("- **区间上沿做空**:RSI > 65 + 买卖压力比 < 0.5 + 价格接近15m EMA20上方\n")
|
||||
sb.WriteString("- **综合信心度 ≥ 75 才开仓**\n\n")
|
||||
sb.WriteString("**4. 止损信号**(趋势突破,立即离场):\n")
|
||||
sb.WriteString("2. 买卖压力分析(3分钟放量检测):\n")
|
||||
sb.WriteString("- 连续放量 = 最近2-3根3分钟K线成交量 > 平均成交量1.5倍\n")
|
||||
sb.WriteString("- 买方力量:BuySellRatio > 0.6(主动买入占比 > 60%)\n")
|
||||
sb.WriteString("- 卖方力量:BuySellRatio < 0.4(主动卖出占比 > 60%)\n")
|
||||
sb.WriteString("- 放量+买压 → 可能向上突破,做多或止损空单\n")
|
||||
sb.WriteString("- 放量+卖压 → 可能向下突破,做空或止损多单\n\n")
|
||||
sb.WriteString("3. 入场信号(高胜率位置):\n")
|
||||
sb.WriteString("- 区间下沿做多:RSI < 35 + 买卖压力比 > 0.5 + 价格接近15m EMA20下方\n")
|
||||
sb.WriteString("- 区间上沿做空:RSI > 65 + 买卖压力比 < 0.5 + 价格接近15m EMA20上方\n")
|
||||
sb.WriteString("- 综合信心度 ≥ 75 才开仓\n\n")
|
||||
sb.WriteString("4. 止损信号(趋势突破,立即离场):\n")
|
||||
sb.WriteString("- 多时间框架共振(15m/1h/4h方向一致)\n")
|
||||
sb.WriteString("- 连续2根以上3分钟K线放量突破区间\n")
|
||||
sb.WriteString("- MACD 突破零轴并加速\n\n")
|
||||
sb.WriteString("**避免低质量信号**:\n")
|
||||
sb.WriteString("避免低质量信号:\n")
|
||||
sb.WriteString("- 单一维度(只看一个指标)\n")
|
||||
sb.WriteString("- 区间中部交易(等待区间边界)\n")
|
||||
sb.WriteString("- 刚平仓不久(<10分钟)\n")
|
||||
@@ -336,30 +388,30 @@ func buildSystemPrompt(accountEquity float64, btcEthLeverage, altcoinLeverage in
|
||||
|
||||
// === 夏普比率自我进化 ===
|
||||
sb.WriteString("# 🧬 夏普比率自我进化\n\n")
|
||||
sb.WriteString("每次你会收到**夏普比率**作为绩效反馈(周期级别):\n\n")
|
||||
sb.WriteString("**夏普比率 < -0.5** (持续亏损):\n")
|
||||
sb.WriteString("每次你会收到夏普比率作为绩效反馈(周期级别):\n\n")
|
||||
sb.WriteString("夏普比率 < -0.5 (持续亏损):\n")
|
||||
sb.WriteString(" → 🛑 停止交易,连续观望至少6个周期(18分钟)\n")
|
||||
sb.WriteString(" → 🔍 深度反思:\n")
|
||||
sb.WriteString(" • 交易频率过高?(每小时>2次就是过度)\n")
|
||||
sb.WriteString(" • 持仓时间过短?(<30分钟就是过早平仓)\n")
|
||||
sb.WriteString(" • 信号强度不足?(信心度<75)\n")
|
||||
sb.WriteString(" • 是否在做空?(单边做多是错误的)\n\n")
|
||||
sb.WriteString("**夏普比率 -0.5 ~ 0** (轻微亏损):\n")
|
||||
sb.WriteString("夏普比率 -0.5 ~ 0 (轻微亏损):\n")
|
||||
sb.WriteString(" → ⚠️ 严格控制:只做信心度>80的交易\n")
|
||||
sb.WriteString(" → 减少交易频率:每小时最多1笔新开仓\n")
|
||||
sb.WriteString(" → 耐心持仓:至少持有30分钟以上\n\n")
|
||||
sb.WriteString("**夏普比率 0 ~ 0.7** (正收益):\n")
|
||||
sb.WriteString("夏普比率 0 ~ 0.7 (正收益):\n")
|
||||
sb.WriteString(" → ✅ 维持当前策略\n\n")
|
||||
sb.WriteString("**夏普比率 > 0.7** (优异表现):\n")
|
||||
sb.WriteString("夏普比率 > 0.7 (优异表现):\n")
|
||||
sb.WriteString(" → 🚀 可适度扩大仓位\n\n")
|
||||
sb.WriteString("**关键**: 夏普比率是唯一指标,它会自然惩罚频繁交易和过度进出。\n\n")
|
||||
sb.WriteString("关键: 夏普比率是唯一指标,它会自然惩罚频繁交易和过度进出。\n\n")
|
||||
|
||||
// === 决策流程 ===
|
||||
sb.WriteString("# 📋 决策流程\n\n")
|
||||
sb.WriteString("1. **分析夏普比率**: 当前策略是否有效?需要调整吗?\n")
|
||||
sb.WriteString("2. **评估持仓**: 趋势是否改变?是否该止盈/止损?\n")
|
||||
sb.WriteString("3. **寻找新机会**: 有强信号吗?多空机会?\n")
|
||||
sb.WriteString("4. **输出决策**: 思维链分析 + JSON\n\n")
|
||||
sb.WriteString("1. 分析夏普比率: 当前策略是否有效?需要调整吗?\n")
|
||||
sb.WriteString("2. 评估持仓: 趋势是否改变?是否该止盈/止损?\n")
|
||||
sb.WriteString("3. 寻找新机会: 有强信号吗?多空机会?\n")
|
||||
sb.WriteString("4. 输出决策: 思维链分析 + JSON\n\n")
|
||||
|
||||
// 3. 输出格式 - 动态生成
|
||||
sb.WriteString("#输出格式\n\n")
|
||||
|
||||
Reference in New Issue
Block a user