diff --git a/decision/engine.go b/decision/engine.go index 8f3190f4..db002371 100644 --- a/decision/engine.go +++ b/decision/engine.go @@ -299,10 +299,26 @@ func buildSystemPrompt(accountEquity float64, btcEthLeverage, altcoinLeverage in 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\n") + sb.WriteString("核心原则:技术位 > 固定百分比(避免价格到技术位就回撤)\n\n") + sb.WriteString("1. 入场前分析技术位:\n") + sb.WriteString("- 做多:检查上方最近压力位(15m/1h EMA20、最近10根K线高点、整数关口)\n") + sb.WriteString("- 做空:检查下方最近支撑位(15m/1h EMA20、最近10根K线低点、整数关口)\n\n") + sb.WriteString("2. 止盈设置逻辑:\n") + sb.WriteString("- 如果技术位距离 < 2% → 止盈设在技术位前 0.1%(例:压力 101,200,止盈 101,100)\n") + sb.WriteString("- 如果技术位距离 > 2% → 使用固定 2% 止盈\n") + sb.WriteString("- 理由:价格很可能在技术位遇阻,提前止盈避免回撤\n\n") + sb.WriteString("3. 止损设置:\n") + sb.WriteString("- 固定 0.8-1%(紧密止损)\n\n") + sb.WriteString("4. 追踪止损(持仓中动态调整):\n") + sb.WriteString("- 浮盈达到 0.8% → 止损移到成本价(保证不亏)\n") + sb.WriteString("- 浮盈达到 1.2% → 止损移到 +0.5%(锁定一半利润)\n") + sb.WriteString("- 价格距离技术位 < 0.3% → 立即主动平仓(避免回撤)\n\n") + sb.WriteString("5. 示例(做多):\n") + sb.WriteString("- 入场:100,000,15m EMA20: 101,200(+1.2%)\n") + sb.WriteString("- 决策:止盈 101,100(技术位前 0.1%),而非 102,000\n") + sb.WriteString("- 持仓:价格到 101,000(+1.0%)→ 止损移到 100,000\n") + sb.WriteString("- 持仓:价格到 101,100(距离 EMA20 仅 0.1%)→ 立即平仓\n\n") sb.WriteString("退出信号:\n") sb.WriteString("- 多时间框架开始共振 → 市场转为趋势,立即止损\n\n") @@ -318,10 +334,27 @@ func buildSystemPrompt(accountEquity float64, btcEthLeverage, altcoinLeverage in 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\n") + sb.WriteString("核心原则:技术位 > 固定百分比,但给予更大空间\n\n") + sb.WriteString("1. 入场前分析技术位:\n") + sb.WriteString("- 做多:检查上方关键压力位(1h/4h EMA20、前高、整数关口)\n") + sb.WriteString("- 做空:检查下方关键支撑位(1h/4h EMA20、前低、整数关口)\n\n") + sb.WriteString("2. 止盈设置逻辑:\n") + sb.WriteString("- 如果技术位距离 < 5% → 止盈设在技术位前 0.2%\n") + sb.WriteString("- 如果技术位在 5-10% → 分两批止盈(第一批技术位,第二批 10%)\n") + sb.WriteString("- 如果技术位距离 > 10% → 使用追踪止损,让利润奔跑\n\n") + sb.WriteString("3. 止损设置:\n") + sb.WriteString("- 固定 1.5-2%(给足震荡空间)\n\n") + sb.WriteString("4. 追踪止损(持仓中动态调整):\n") + sb.WriteString("- 浮盈达到 2% → 止损移到成本价(保证不亏)\n") + sb.WriteString("- 浮盈达到 3% → 止损移到 +1%(锁定部分利润)\n") + sb.WriteString("- 浮盈达到 5% → 止损移到 +2.5%(让利润奔跑,但保护已有收益)\n") + sb.WriteString("- 价格距离技术位 < 0.5% → 考虑主动平仓或分批平仓\n\n") + sb.WriteString("5. 示例(做多):\n") + sb.WriteString("- 入场:100,000,4h EMA20: 104,500(+4.5%)\n") + sb.WriteString("- 决策:第一目标 104,300(技术位前),第二目标 110,000(+10%)\n") + sb.WriteString("- 持仓:价格到 102,000(+2%)→ 止损移到 100,000\n") + sb.WriteString("- 持仓:价格到 104,300(接近技术位)→ 主动平仓或分批平仓 50%\n\n") sb.WriteString("退出信号:\n") sb.WriteString("- 多时间框架方向开始矛盾 → 趋势减弱,获利离场\n") sb.WriteString("- 成交量萎缩 + MACD 背离 → 趋势可能反转\n\n") @@ -331,7 +364,13 @@ func buildSystemPrompt(accountEquity float64, btcEthLeverage, altcoinLeverage in 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("3. 技术位分析: "上方压力位:101,200(15m EMA20),下方支撑位:99,500(最近低点)"\n") + sb.WriteString("4. 止盈止损: "止盈 101,100(技术位前 0.1%),止损 99,200(-0.8%)"\n") + sb.WriteString("5. 追踪止损计划: "浮盈 0.8% 时移动止损到成本价"\n\n") + sb.WriteString("重要提醒:\n") + sb.WriteString("- 价格很可能在技术位(EMA20、前高前低、整数关口)遇阻或反弹\n") + sb.WriteString("- 宁可少赚 0.5%,也不要从 +1.5% 回撤到止损\n") + sb.WriteString("- 持仓中主动调整止损,锁定利润\n\n") // === 交易频率认知 === sb.WriteString("# ⏱️ 交易频率认知\n\n")