This commit is contained in:
aaron 2026-02-28 18:44:53 +08:00
parent 93d158addf
commit dd104a9c90
2 changed files with 81 additions and 16 deletions

View File

@ -483,6 +483,27 @@ class CryptoAgent:
# 获取上一轮的信号(用于上下文) # 获取上一轮的信号(用于上下文)
previous_signal = self.last_signals.get(symbol) previous_signal = self.last_signals.get(symbol)
# 显示上一轮信号(如果有)
if previous_signal:
prev_time = previous_signal.get('timestamp', 'Unknown')
prev_trend = previous_signal.get('trend', 'Unknown')
prev_signals = previous_signal.get('signals', [])
logger.info(f"📋 上一轮分析时间: {prev_time}")
logger.info(f"📋 上一轮趋势: {prev_trend}")
if prev_signals:
for sig in prev_signals:
action = sig.get('action', 'N/A')
confidence = sig.get('confidence', 0)
timeframe = sig.get('timeframe', 'unknown')
type_map = {'short_term': '短线', 'medium_term': '中线', 'long_term': '长线'}
type_text = type_map.get(timeframe, timeframe)
logger.info(f"📋 上一轮信号: {type_text} | {action} | {confidence}%")
else:
logger.info(f"📋 上一轮信号: 无交易信号(观望)")
else:
logger.info(f"📋 上一轮信号: 无历史记录(首次分析)")
market_signal = await self.market_analyzer.analyze( market_signal = await self.market_analyzer.analyze(
symbol, data, symbol, data,
symbols=self.symbols, symbols=self.symbols,

View File

@ -35,6 +35,11 @@ class MarketSignalAnalyzer:
2. **顺势交易为主** - 上涨趋势只做多或观望下跌趋势只做空或观望 2. **顺势交易为主** - 上涨趋势只做多或观望下跌趋势只做空或观望
3. **逆势交易极其谨慎** - 必须有多重反转信号才能考虑逆势 3. **逆势交易极其谨慎** - 必须有多重反转信号才能考虑逆势
4. **单边行情不逆势** - 强趋势中连续3根以上同向K线严禁逆势开仓 4. **单边行情不逆势** - 强趋势中连续3根以上同向K线严禁逆势开仓
5. **严禁重复信号** - 如果上一轮已经给出了相同方向的交易信号绝对不要重复输出只有在以下情况才能给出新信号
- 趋势发生了**明确的反转**从多头转为空头或反之
- 上一轮是观望现在出现了**新的明确交易机会**
- 上一轮信号已失效价格已触及止损或止盈
- 如果只是趋势延续价格在合理波动范围内**不要重复给出相同方向的信号**
### 交易目标 ### 交易目标
- **稳健为主**宁可错过不做错 - **稳健为主**宁可错过不做错
@ -266,17 +271,39 @@ class MarketSignalAnalyzer:
6. 90+强信号但也要控制风险 6. 90+强信号但也要控制风险
7. 不要输出 action "wait" 的信号如果没有交易机会就不输出 7. 不要输出 action "wait" 的信号如果没有交易机会就不输出
## 历史信号参考 ## 历史信号参考(非常重要!)
**如果提供了上一轮的分析信号请参考它来调整你的判断** **如果提供了上一轮的分析信号必须仔细参考它**
1. **避免重复信号**如果上一轮已经给出了买入/卖出信号不要在没有明显变化的情况下重复给出相同方向的信号 ### 🚫 严禁重复信号
2. **信号调整建议** **如果上一轮已经给出了买入/卖出信号不要在没有明显变化的情况下重复给出相同方向的信号**
- 上一轮买入 当前看涨 可以考虑"继续持有""加仓"如果有新进展
- 上一轮买入 当前转跌 应该建议"减仓""止损" 以下情况**不要**输出新的交易信号
- 上一轮观望 当前出现机会 可以给出新的交易信号 - 上一轮做空现在仍然是空头排列价格继续下跌 **不要重复做空信号**
- 上一轮做空 当前转涨 应该建议"平仓""反转" - 上一轮买入现在仍然是多头排列价格继续上涨 **不要重复买入信号**
3. **趋势延续性**如果上一轮判断的趋势方向仍然有效不要轻易改变方向判断除非有明确的反转信号 - 仅仅因为趋势延续就重复信号 **绝对禁止**
4. **时间间隔考虑**如果距离上一轮分析只有很短时间5-15分钟避免频繁改变信号方向
### ✅ 允许输出新信号的情况
只有在以下情况之一时才输出新的交易信号
1. **趋势反转**上一轮判断的趋势发生了明确反转
- 例如上一轮看多MA多头排列现在转为空头排列
2. **从观望到机会**上一轮是观望无信号现在出现了明确的交易机会
3. **上一轮信号已失效**
- 价格已触及上一轮的止损或止盈价位
- 距离上一轮信号已过去较长时间>2小时
4. **新的关键点位**价格触及了重要的支撑/阻力位且有明显反转信号
### 📋 信号调整建议
当需要调整时请在 reasoning 中说明
- 上一轮买入 当前转跌 reasoning 中说明"趋势转弱,建议减仓或止损"
- 上一轮做空 当前转涨 reasoning 中说明"趋势反转,建议平仓"
- 上一轮观望 当前出现机会 说明新机会是什么
### ⏰ 时间间隔考虑
- 5分钟级别如果上一轮是15分钟内除非有重大变化否则不重复信号
- 短线信号同一方向信号间隔至少1小时
- 波段信号同一方向信号间隔至少4小时
**记住宁可错过不要噪音重复信号只会导致过度交易**
记住你只负责分析市场输出客观的交易信号不需要考虑仓位管理和风险控制 记住你只负责分析市场输出客观的交易信号不需要考虑仓位管理和风险控制
""" """
@ -452,7 +479,9 @@ class MarketSignalAnalyzer:
prev_trend = previous_signal.get('trend', 'Unknown') prev_trend = previous_signal.get('trend', 'Unknown')
prev_signals = previous_signal.get('signals', []) prev_signals = previous_signal.get('signals', [])
prompt_parts.append("\n## 上一轮分析信号") prompt_parts.append("\n" + "="*60)
prompt_parts.append("## 上一轮分析信号(必须参考!)")
prompt_parts.append("="*60)
prompt_parts.append(f"分析时间: {prev_time}") prompt_parts.append(f"分析时间: {prev_time}")
prompt_parts.append(f"趋势判断: {prev_trend}") prompt_parts.append(f"趋势判断: {prev_trend}")
@ -477,14 +506,29 @@ class MarketSignalAnalyzer:
f" 止盈: ${tp}\n" f" 止盈: ${tp}\n"
f" 理由: {reasoning}" f" 理由: {reasoning}"
) )
# 重点警告
prompt_parts.append("\n" + "!"*60)
prompt_parts.append("🚨 严禁重复信号!")
prompt_parts.append("!"*60)
prompt_parts.append("如果上一轮已经给出了相同方向的信号(做空/做多),")
prompt_parts.append("且趋势没有发生明确反转,")
prompt_parts.append("绝对不要重复给出相同方向的信号!")
prompt_parts.append("")
prompt_parts.append("只有在以下情况才输出新信号:")
prompt_parts.append(" ✓ 趋势发生了明确的反转")
prompt_parts.append(" ✓ 上一轮是观望,现在出现了新的明确机会")
prompt_parts.append(" ✓ 价格已触及上一轮的止损/止盈价位")
prompt_parts.append("")
prompt_parts.append("以下情况不要输出信号:")
prompt_parts.append(" ✗ 趋势延续,只是价格继续向同一方向移动")
prompt_parts.append(" ✗ 仅仅因为均线排列仍然有效")
prompt_parts.append(" ✗ 没有明显的市场变化")
else: else:
prompt_parts.append("\n上一轮没有给出交易信号(市场观望建议)") prompt_parts.append("\n上一轮没有给出交易信号(市场观望建议)")
prompt_parts.append("\n你可以基于当前市场情况给出新的信号。")
prompt_parts.append("\n**重要**: 请参考上一轮的信号判断:") prompt_parts.append("\n" + "="*60)
prompt_parts.append("- 如果上一轮给出了买入信号,现在是否需要加仓、减仓、还是继续持有?")
prompt_parts.append("- 如果上一轮给出了做空信号,现在是否需要平仓、减仓、还是继续持有?")
prompt_parts.append("- 如果上一轮是观望,现在市场是否出现了新的机会?")
prompt_parts.append("- 避免在没有明显变化的情况下重复给出相同的信号")
prompt_parts.append("\n请根据以上数据,给出你的市场判断和交易信号。") prompt_parts.append("\n请根据以上数据,给出你的市场判断和交易信号。")