From 013f8df750a98cd81b85ad7c61c8e56c290c330c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=96=87=E8=96=87=E5=AE=89?= Date: Tue, 16 Jun 2026 11:18:09 +0800 Subject: [PATCH] 1 --- config/my_batch_hybrid_whitelist.json | 107 ++++++++++++++++++++++++++ scripts/apply_hybrid_whitelist.sh | 38 +++++++++ 2 files changed, 145 insertions(+) create mode 100644 config/my_batch_hybrid_whitelist.json create mode 100755 scripts/apply_hybrid_whitelist.sh diff --git a/config/my_batch_hybrid_whitelist.json b/config/my_batch_hybrid_whitelist.json new file mode 100644 index 0000000..6c86a72 --- /dev/null +++ b/config/my_batch_hybrid_whitelist.json @@ -0,0 +1,107 @@ +[ + { + "key": "AUTO_TRADE_SYMBOL_WHITELIST", + "value": "BTCUSDT,ETHUSDT,BNBUSDT,SOLUSDT,LINKUSDT,DOGEUSDT,AVAXUSDT,XRPUSDT", + "type": "string", + "category": "strategy", + "description": "混合档:4主流 + 4高流动山寨(LINK/DOGE/AVAX/XRP);仅名单内自动下单" + }, + { + "key": "MANUAL_REDUCED_SYMBOLS", + "value": "LINKUSDT,DOGEUSDT,AVAXUSDT,XRPUSDT", + "type": "string", + "category": "strategy", + "description": "山寨部分:减仓观察(仓位×0.5)且信号门槛+1" + }, + { + "key": "MANUAL_REDUCED_SYMBOL_POSITION_FACTOR", + "value": 0.5, + "type": "number", + "category": "strategy", + "description": "减仓名单仓位系数" + }, + { + "key": "MANUAL_REDUCED_SYMBOL_SIGNAL_BOOST", + "value": 1, + "type": "number", + "category": "strategy", + "description": "减仓名单额外信号门槛+1" + }, + { + "key": "MANUAL_BLOCKED_SYMBOLS", + "value": "", + "type": "string", + "category": "strategy", + "description": "混合档:清空旧山寨黑名单,按需再手动加" + }, + { + "key": "AUTO_TRADE_ALLOW_RANGING", + "value": true, + "type": "boolean", + "category": "strategy", + "description": "允许震荡开仓;ranging 叠加 RANGING_MARKET_SIGNAL_BOOST" + }, + { + "key": "AUTO_TRADE_ONLY_TRENDING", + "value": false, + "type": "boolean", + "category": "strategy", + "description": "非仅 trending,与 ALLOW_RANGING 配合" + }, + { + "key": "MIN_SIGNAL_STRENGTH", + "value": 7, + "type": "number", + "category": "strategy", + "description": "主流基础门槛7;ranging+2;减仓山寨再+1" + }, + { + "key": "RANGING_MARKET_SIGNAL_BOOST", + "value": 2, + "type": "number", + "category": "strategy", + "description": "震荡市额外+2信号分" + }, + { + "key": "MIN_CHANGE_PERCENT", + "value": 1.0, + "type": "number", + "category": "scan", + "description": "24h涨跌幅绝对值≥1%进入候选" + }, + { + "key": "BETA_FILTER_ENABLED", + "value": true, + "type": "boolean", + "category": "strategy", + "description": "保留大盘共振:BTC/ETH急跌时禁多" + }, + { + "key": "BETA_FILTER_THRESHOLD", + "value": -0.008, + "type": "number", + "category": "strategy", + "description": "15m/1h跌超0.8%触发禁多(与major_coins一致)" + }, + { + "key": "NO_OPEN_HOURS_BJ", + "value": "", + "type": "string", + "category": "risk", + "description": "清空离散禁开小时" + }, + { + "key": "NIGHT_HOURS_NO_OPEN_ENABLED", + "value": false, + "type": "boolean", + "category": "risk", + "description": "关闭晚间禁开窗口" + }, + { + "key": "ENTRY_SYMBOL_COOLDOWN_SEC", + "value": 1200, + "type": "number", + "category": "strategy", + "description": "同币冷却20分钟" + } +] diff --git a/scripts/apply_hybrid_whitelist.sh b/scripts/apply_hybrid_whitelist.sh new file mode 100755 index 0000000..6364357 --- /dev/null +++ b/scripts/apply_hybrid_whitelist.sh @@ -0,0 +1,38 @@ +#!/usr/bin/env bash +# 混合白名单档:4 主流 + 4 高流动山寨,并开启 ranging 机会档 +# +# 白名单:BTC, ETH, BNB, SOL + LINK, DOGE, AVAX, XRP +# 山寨(LINK/DOGE/AVAX/XRP) 走 MANUAL_REDUCED:仓位×0.5,信号+1 +# 详见 config/my_batch_hybrid_whitelist.json +# +# 用法(项目根): +# ./scripts/apply_hybrid_whitelist.sh --dry-run +# ./scripts/apply_hybrid_whitelist.sh +# +set -euo pipefail +ROOT="$(cd "$(dirname "$0")/.." && pwd)" +cd "$ROOT" + +PYTHON_BIN="" +for _py in \ + "${ROOT}/.venv/bin/python" \ + "${ROOT}/trading_system/.venv/bin/python" \ + "${ROOT}/backend/.venv/bin/python"; do + if [ -x "$_py" ]; then + PYTHON_BIN="$_py" + break + fi +done +if [ -z "$PYTHON_BIN" ]; then + PYTHON_BIN="$(command -v python3)" +fi + +DRY_RUN=() +if [[ "${1:-}" == "--dry-run" ]]; then + DRY_RUN=(--dry-run) +fi + +exec "$PYTHON_BIN" "$ROOT/scripts/apply_config_patch_only.py" \ + --from "$ROOT/config/my_batch_hybrid_whitelist.json" \ + --updated-by "hybrid_whitelist" \ + "${DRY_RUN[@]}"