update
This commit is contained in:
parent
5210b4185b
commit
ce035fdcbb
@ -31,7 +31,12 @@ class Settings(BaseSettings):
|
|||||||
# Monitoring
|
# Monitoring
|
||||||
LOG_LEVEL: str = "INFO"
|
LOG_LEVEL: str = "INFO"
|
||||||
|
|
||||||
# Profit filter
|
# Profit filter - 不同周期的最低盈利要求
|
||||||
|
MIN_PROFIT_PCT_SHORT: float = 1.0 # 短周期 (5m/15m/1h) 最低 1%
|
||||||
|
MIN_PROFIT_PCT_MEDIUM: float = 2.0 # 中周期 (4h/1d) 最低 2%
|
||||||
|
MIN_PROFIT_PCT_LONG: float = 5.0 # 长周期 (1d/1w) 最低 5%
|
||||||
|
|
||||||
|
# 向后兼容
|
||||||
MIN_PROFIT_PCT: float = 1.0
|
MIN_PROFIT_PCT: float = 1.0
|
||||||
PREFER_INTRADAY: bool = True
|
PREFER_INTRADAY: bool = True
|
||||||
|
|
||||||
|
|||||||
@ -228,7 +228,7 @@ ${current_price:,.2f}
|
|||||||
|
|
||||||
**重要原则**:
|
**重要原则**:
|
||||||
1. **优先日内短线** - 重点关注 short_term_5m_15m_1h 的日内交易机会
|
1. **优先日内短线** - 重点关注 short_term_5m_15m_1h 的日内交易机会
|
||||||
2. **盈利空间≥1%** - 只有预期盈利 ≥1% 时才给出操作建议,否则 exists=false
|
2. **不同周期盈利要求不同** - 短期≥1%,中期≥2%,长期≥5%,不满足则 exists=false
|
||||||
3. **自行识别支撑压力位** - 从K线数据中找出重要的高低点作为支撑压力位
|
3. **自行识别支撑压力位** - 从K线数据中找出重要的高低点作为支撑压力位
|
||||||
4. **响应必须是有效的JSON格式** - 不要包含注释
|
4. **响应必须是有效的JSON格式** - 不要包含注释
|
||||||
|
|
||||||
@ -316,13 +316,16 @@ ${current_price:,.2f}
|
|||||||
- 历史重要价格区间
|
- 历史重要价格区间
|
||||||
- 大周期趋势线
|
- 大周期趋势线
|
||||||
|
|
||||||
## 止盈止损设置
|
## 止盈止损设置(不同周期要求不同)
|
||||||
|
|
||||||
- 短期: 止损 0.3%-0.5%, 止盈 ≥1%
|
- 短期 (5m/15m/1h): 止损 0.3%-0.5%, 止盈 ≥1%
|
||||||
- 中期: 止损 1%-2%, 止盈 ≥2%
|
- 中期 (4h/1d): 止损 1%-2%, 止盈 ≥2%
|
||||||
- 长期: 止损 2%-4%, 止盈 ≥4%
|
- 长期 (1d/1w): 止损 2%-4%, 止盈 ≥5%
|
||||||
|
|
||||||
只有当 (take_profit - entry) / entry ≥ 1% 时才给出具体建议!
|
重要:各周期的盈利空间必须满足最低要求才给出建议:
|
||||||
|
- 短期机会: (take_profit - entry) / entry ≥ 1%
|
||||||
|
- 中期机会: (take_profit - entry) / entry ≥ 2%
|
||||||
|
- 长期机会: (take_profit - entry) / entry ≥ 5%
|
||||||
"""
|
"""
|
||||||
|
|
||||||
return prompt
|
return prompt
|
||||||
@ -444,41 +447,43 @@ ${current_price:,.2f}
|
|||||||
medium_term = swing
|
medium_term = swing
|
||||||
long_term = {}
|
long_term = {}
|
||||||
|
|
||||||
# Apply minimum profit filter to all opportunities
|
# Apply minimum profit filter to all opportunities - 不同周期不同要求
|
||||||
MIN_PROFIT_PCT = settings.MIN_PROFIT_PCT
|
MIN_PROFIT_SHORT = settings.MIN_PROFIT_PCT_SHORT # 短周期 1%
|
||||||
|
MIN_PROFIT_MEDIUM = settings.MIN_PROFIT_PCT_MEDIUM # 中周期 2%
|
||||||
|
MIN_PROFIT_LONG = settings.MIN_PROFIT_PCT_LONG # 长周期 5%
|
||||||
|
|
||||||
# Filter short_term
|
# Filter short_term (最低 1%)
|
||||||
short_term_valid = meets_profit_threshold(short_term, MIN_PROFIT_PCT)
|
short_term_valid = meets_profit_threshold(short_term, MIN_PROFIT_SHORT)
|
||||||
if short_term.get('exists') and not short_term_valid:
|
if short_term.get('exists') and not short_term_valid:
|
||||||
profit_pct = calc_profit_pct(
|
profit_pct = calc_profit_pct(
|
||||||
safe_float(short_term.get('entry_price'), 0),
|
safe_float(short_term.get('entry_price'), 0),
|
||||||
safe_float(short_term.get('take_profit'), 0),
|
safe_float(short_term.get('take_profit'), 0),
|
||||||
short_term.get('direction')
|
short_term.get('direction')
|
||||||
)
|
)
|
||||||
logger.info(f"短期机会被过滤: 盈利空间 {profit_pct:.2f}% < {MIN_PROFIT_PCT}%")
|
logger.info(f"短期机会被过滤: 盈利空间 {profit_pct:.2f}% < {MIN_PROFIT_SHORT}%")
|
||||||
short_term = {'exists': False, 'reasoning': f'盈利空间不足1% (仅{profit_pct:.2f}%),建议观望'}
|
short_term = {'exists': False, 'reasoning': f'盈利空间不足{MIN_PROFIT_SHORT}% (仅{profit_pct:.2f}%),建议观望'}
|
||||||
|
|
||||||
# Filter medium_term
|
# Filter medium_term (最低 2%)
|
||||||
medium_term_valid = meets_profit_threshold(medium_term, MIN_PROFIT_PCT)
|
medium_term_valid = meets_profit_threshold(medium_term, MIN_PROFIT_MEDIUM)
|
||||||
if medium_term.get('exists') and not medium_term_valid:
|
if medium_term.get('exists') and not medium_term_valid:
|
||||||
profit_pct = calc_profit_pct(
|
profit_pct = calc_profit_pct(
|
||||||
safe_float(medium_term.get('entry_price'), 0),
|
safe_float(medium_term.get('entry_price'), 0),
|
||||||
safe_float(medium_term.get('take_profit'), 0),
|
safe_float(medium_term.get('take_profit'), 0),
|
||||||
medium_term.get('direction')
|
medium_term.get('direction')
|
||||||
)
|
)
|
||||||
logger.info(f"中期机会被过滤: 盈利空间 {profit_pct:.2f}% < {MIN_PROFIT_PCT}%")
|
logger.info(f"中期机会被过滤: 盈利空间 {profit_pct:.2f}% < {MIN_PROFIT_MEDIUM}%")
|
||||||
medium_term = {'exists': False, 'reasoning': f'盈利空间不足1% (仅{profit_pct:.2f}%),建议观望'}
|
medium_term = {'exists': False, 'reasoning': f'盈利空间不足{MIN_PROFIT_MEDIUM}% (仅{profit_pct:.2f}%),建议观望'}
|
||||||
|
|
||||||
# Filter long_term
|
# Filter long_term (最低 5%)
|
||||||
long_term_valid = meets_profit_threshold(long_term, MIN_PROFIT_PCT)
|
long_term_valid = meets_profit_threshold(long_term, MIN_PROFIT_LONG)
|
||||||
if long_term.get('exists') and not long_term_valid:
|
if long_term.get('exists') and not long_term_valid:
|
||||||
profit_pct = calc_profit_pct(
|
profit_pct = calc_profit_pct(
|
||||||
safe_float(long_term.get('entry_price'), 0),
|
safe_float(long_term.get('entry_price'), 0),
|
||||||
safe_float(long_term.get('take_profit'), 0),
|
safe_float(long_term.get('take_profit'), 0),
|
||||||
long_term.get('direction')
|
long_term.get('direction')
|
||||||
)
|
)
|
||||||
logger.info(f"长期机会被过滤: 盈利空间 {profit_pct:.2f}% < {MIN_PROFIT_PCT}%")
|
logger.info(f"长期机会被过滤: 盈利空间 {profit_pct:.2f}% < {MIN_PROFIT_LONG}%")
|
||||||
long_term = {'exists': False, 'reasoning': f'盈利空间不足1% (仅{profit_pct:.2f}%),建议观望'}
|
long_term = {'exists': False, 'reasoning': f'盈利空间不足{MIN_PROFIT_LONG}% (仅{profit_pct:.2f}%),建议观望'}
|
||||||
|
|
||||||
# Determine primary levels (priority: short > medium > long) - 优先日内短线
|
# Determine primary levels (priority: short > medium > long) - 优先日内短线
|
||||||
entry = market_context.get('current_price', 0)
|
entry = market_context.get('current_price', 0)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user