This commit is contained in:
薇薇安 2026-03-20 09:55:53 +08:00
parent a38f7cf09d
commit c6103522be
3 changed files with 68 additions and 0 deletions

View File

@ -742,6 +742,43 @@ async def get_global_configs(
"category": "strategy",
"description": "滞涨触发后对剩余仓位抬升止损时,至少要锁住的利润百分比(与“最高浮盈的一半”取较大者)。",
},
# ===== 回撤/区间入场(近 N 根 K 线前低前高,避免买在区间顶部)=====
"ENTRY_PULLBACK_FILTER_ENABLED": {
"value": False,
"type": "boolean",
"category": "strategy",
"description": "是否启用回撤区间入场过滤:多单不贴在近 N 根 K 线区间上沿、空单不贴下沿,减少「追高/追空后一回撤就扫损」。与 USE_TREND_ENTRY_FILTER相对信号价互补。",
},
"ENTRY_PULLBACK_INTERVAL": {
"value": "",
"type": "string",
"category": "strategy",
"description": "回撤过滤使用的 K 线周期。留空则使用 ENTRY_INTERVAL通常 1h可填 15m、4h 等。",
},
"ENTRY_PULLBACK_LOOKBACK_BARS": {
"value": 24,
"type": "number",
"category": "strategy",
"description": "统计区间高低点所用的 K 线根数(需 ≥ MIN_BARS",
},
"ENTRY_PULLBACK_MIN_BARS": {
"value": 5,
"type": "number",
"category": "strategy",
"description": "至少多少根有效 K 线才应用回撤过滤;不足则跳过本过滤。",
},
"ENTRY_PULLBACK_MAX_LONG_IN_RANGE": {
"value": 0.62,
"type": "number",
"category": "strategy",
"description": "做多:现价在区间 [低,高] 的相对位置 pos∈[0,1]pos 超过此值则不开仓(默认约拒绝最上 38% 区域)。越小越严。",
},
"ENTRY_PULLBACK_MIN_SHORT_IN_RANGE": {
"value": 0.38,
"type": "number",
"category": "strategy",
"description": "做空:相对位置 pos 低于此值则不开仓(默认约拒绝最下 38% 区域)。越大越严。",
},
}
for k, meta in ADDITIONAL_STRATEGY_DEFAULTS.items():
if k not in result:

View File

@ -66,6 +66,19 @@ DEFAULTS_TO_SYNC = [
"description": "4H 趋势上涨时禁止开空。默认 true避免逆势做空导致止损。"},
{"config_key": "AUTO_MARKET_SCHEME_ENABLED", "config_value": "false", "config_type": "boolean", "category": "strategy",
"description": "开启后crontab 定时运行 scripts/update_market_scheme.py --apply 时自动更新 MARKET_SCHEME根据 BTC 行情识别牛/熊/正常)。"},
# 回撤区间入场2026-03
{"config_key": "ENTRY_PULLBACK_FILTER_ENABLED", "config_value": "false", "config_type": "boolean", "category": "strategy",
"description": "是否启用回撤区间入场过滤近N根K线前低前高避免买在区间顶部"},
{"config_key": "ENTRY_PULLBACK_INTERVAL", "config_value": "", "config_type": "string", "category": "strategy",
"description": "留空则使用 ENTRY_INTERVAL可填 15m、1h 等。"},
{"config_key": "ENTRY_PULLBACK_LOOKBACK_BARS", "config_value": "24", "config_type": "number", "category": "strategy",
"description": "统计区间用的K线根数。"},
{"config_key": "ENTRY_PULLBACK_MIN_BARS", "config_value": "5", "config_type": "number", "category": "strategy",
"description": "至少几根K才启用回撤过滤。"},
{"config_key": "ENTRY_PULLBACK_MAX_LONG_IN_RANGE", "config_value": "0.62", "config_type": "number", "category": "strategy",
"description": "做多区间相对位置上限制0~1默认0.62。"},
{"config_key": "ENTRY_PULLBACK_MIN_SHORT_IN_RANGE", "config_value": "0.38", "config_type": "number", "category": "strategy",
"description": "做空区间相对位置下限制0~1默认0.38。"},
]

View File

@ -69,6 +69,12 @@ const KEY_LABELS = {
STAGNATION_NO_NEW_HIGH_HOURS: '滞涨判定未创新高时长(小时)',
STAGNATION_PARTIAL_CLOSE_PCT: '滞涨触发时先平仓位比例',
STAGNATION_LOCK_PCT: '滞涨后抬止损至少锁利(%)',
ENTRY_PULLBACK_FILTER_ENABLED: '回撤区间入场过滤',
ENTRY_PULLBACK_INTERVAL: '回撤过滤K线周期(空=跟ENTRY)',
ENTRY_PULLBACK_LOOKBACK_BARS: '回撤统计K线根数',
ENTRY_PULLBACK_MIN_BARS: '回撤过滤最少K线数',
ENTRY_PULLBACK_MAX_LONG_IN_RANGE: '做多区间位置上限(0~1)',
ENTRY_PULLBACK_MIN_SHORT_IN_RANGE: '做空区间位置下限(0~1)',
}
//
@ -157,6 +163,12 @@ const CONFIG_GUIDE_DETAILS = {
STAGNATION_NO_NEW_HIGH_HOURS: '从最近一次创历史新高开始计时,如果连续这么多小时都没有再创新高(价格高点停滞),则视为“滞涨”,会触发滞涨早止盈逻辑。建议 2-4 小时区间,根据周期调整。',
STAGNATION_PARTIAL_CLOSE_PCT: '滞涨触发后,首先立即平掉的仓位比例,用于锁定一部分利润、降低回撤风险。例如 0.5 表示先平掉 50% 仓位,剩余 50% 继续观察。',
STAGNATION_LOCK_PCT: '滞涨触发后,对剩余仓位抬升止损时,至少要锁住的利润百分比(基于保证金)。实际使用时会与“历史最高浮盈的一半”取较大值,用于在强势趋势中多保留利润空间,在一般情况下则锁定一个稳定的收益区间。',
ENTRY_PULLBACK_FILTER_ENABLED: '开启后:开仓前用近 N 根 K 线的最低价/最高价构成区间,若做多时现价已贴在区间上沿(相对位置过高)则跳过,避免追高后一回撤就损;做空对称。与「趋势信号价追价上限」(USE_TREND_ENTRY_FILTER) 互补。',
ENTRY_PULLBACK_INTERVAL: '计算区间所用的 K 线周期。留空则跟随 ENTRY_INTERVAL一般为 1h。想更敏感可填 15m。',
ENTRY_PULLBACK_LOOKBACK_BARS: '参与统计的 K 线根数,默认 24。越大区间越宽、过滤越钝越小越敏感。',
ENTRY_PULLBACK_MIN_BARS: '至少几根 K 才启用本过滤,不足则跳过(避免数据过少误判)。',
ENTRY_PULLBACK_MAX_LONG_IN_RANGE: '做多允许的最高相对位置 pos0=区间底1=区间顶)。默认 0.62 表示超过则视为贴近前高/上沿,不开多。想更严可改为 0.550.58。',
ENTRY_PULLBACK_MIN_SHORT_IN_RANGE: '做空允许的最低相对位置。默认 0.38,低于则视为贴近前低/下沿,不开空。想更严可改为 0.420.45。',
}
const ConfigItem = ({ label, config, onUpdate, disabled }) => {
@ -666,6 +678,12 @@ const GlobalConfig = () => {
LOCK_PROFIT_STAGE1_PCT: { value: 0.02, type: 'number', category: 'strategy', description: '分层锁盈第一层锁利比例(如 0.02=2%)。' },
LOCK_PROFIT_STAGE2_TRIGGER_PCT: { value: 0.15, type: 'number', category: 'strategy', description: '分层锁盈第二层触发阈值(如 0.15=15%)。' },
LOCK_PROFIT_STAGE2_PCT: { value: 0.05, type: 'number', category: 'strategy', description: '分层锁盈第二层锁利比例(如 0.05=5%)。' },
ENTRY_PULLBACK_FILTER_ENABLED: { value: false, type: 'boolean', category: 'strategy', description: '回撤区间入场过滤避免买在K线区间上沿、卖在下沿。' },
ENTRY_PULLBACK_INTERVAL: { value: '', type: 'string', category: 'strategy', description: '留空=使用 ENTRY_INTERVAL可填 15m、1h、4h。' },
ENTRY_PULLBACK_LOOKBACK_BARS: { value: 24, type: 'number', category: 'strategy', description: '统计区间用的 K 线根数。' },
ENTRY_PULLBACK_MIN_BARS: { value: 5, type: 'number', category: 'strategy', description: '至少几根 K 才启用回撤过滤。' },
ENTRY_PULLBACK_MAX_LONG_IN_RANGE: { value: 0.62, type: 'number', category: 'strategy', description: '做多区间相对位置上限制0~1默认 0.62。' },
ENTRY_PULLBACK_MIN_SHORT_IN_RANGE: { value: 0.38, type: 'number', category: 'strategy', description: '做空区间相对位置下限制0~1默认 0.38。' },
}
const loadConfigs = async () => {