1
This commit is contained in:
parent
e46fa4b117
commit
5b0aac4e9d
23
config/my_batch_steady_lift_tier1.json
Normal file
23
config/my_batch_steady_lift_tier1.json
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
[
|
||||
{
|
||||
"key": "MIN_CHANGE_PERCENT",
|
||||
"value": 1.0,
|
||||
"type": "number",
|
||||
"category": "scan",
|
||||
"description": "稳妥增效一档:24h涨跌幅绝对值门槛从2%降至1%,主流币更易进入候选池"
|
||||
},
|
||||
{
|
||||
"key": "MIN_SIGNAL_STRENGTH",
|
||||
"value": 7,
|
||||
"type": "number",
|
||||
"category": "strategy",
|
||||
"description": "稳妥增效一档:最低信号强度 8→7,略增机会"
|
||||
},
|
||||
{
|
||||
"key": "ENTRY_SYMBOL_COOLDOWN_SEC",
|
||||
"value": 1200,
|
||||
"type": "number",
|
||||
"category": "strategy",
|
||||
"description": "稳妥增效一档:同币种开仓冷却 1800s→1200s(20分钟)"
|
||||
}
|
||||
]
|
||||
89
scripts/apply_config_patch_only.py
Normal file
89
scripts/apply_config_patch_only.py
Normal file
|
|
@ -0,0 +1,89 @@
|
|||
#!/usr/bin/env python3
|
||||
"""
|
||||
仅应用 JSON 补丁中的配置项,不与 DEFAULT_RECOMMENDED 合并。
|
||||
用于小幅改库,避免误把 apply_recommended_config 内置批量默认值重新刷一遍。
|
||||
|
||||
JSON 格式与 apply_recommended_config.py --from 相同(数组或对象)。
|
||||
"""
|
||||
from __future__ import annotations
|
||||
|
||||
import argparse
|
||||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
PROJECT_ROOT = Path(__file__).resolve().parent.parent
|
||||
SCRIPTS_DIR = PROJECT_ROOT / "scripts"
|
||||
BACKEND_DIR = PROJECT_ROOT / "backend"
|
||||
for p in (SCRIPTS_DIR, BACKEND_DIR, PROJECT_ROOT):
|
||||
if str(p) not in sys.path:
|
||||
sys.path.insert(0, str(p))
|
||||
|
||||
from apply_recommended_config import infer_type, load_external_json
|
||||
|
||||
|
||||
def main() -> None:
|
||||
parser = argparse.ArgumentParser(description="仅应用补丁 JSON 中的全局策略配置(不合并内置默认)")
|
||||
parser.add_argument("--from", dest="from_path", required=True, help="补丁 JSON 路径")
|
||||
parser.add_argument("--dry-run", action="store_true", help="只打印,不落库")
|
||||
parser.add_argument("--updated-by", default="apply_config_patch_only", help="写入 updated_by")
|
||||
args = parser.parse_args()
|
||||
|
||||
from_path = Path(args.from_path)
|
||||
if not from_path.is_absolute():
|
||||
from_path = PROJECT_ROOT / from_path
|
||||
if not from_path.is_file():
|
||||
raise FileNotFoundError(f"未找到配置文件: {from_path}")
|
||||
|
||||
patch = load_external_json(from_path)
|
||||
if not patch:
|
||||
print("补丁为空,退出")
|
||||
return
|
||||
|
||||
print(f"将应用 {len(patch)} 个配置项(仅补丁,dry_run={args.dry_run})")
|
||||
for key in sorted(patch.keys()):
|
||||
meta = patch[key]
|
||||
print(f" - {key} = {meta.get('value')} [{meta.get('type')}/{meta.get('category')}]")
|
||||
|
||||
if args.dry_run:
|
||||
return
|
||||
|
||||
from database.models import GlobalStrategyConfig
|
||||
|
||||
mgr = None
|
||||
try:
|
||||
import config_manager
|
||||
|
||||
if hasattr(config_manager, "GlobalStrategyConfigManager"):
|
||||
mgr = config_manager.GlobalStrategyConfigManager()
|
||||
except Exception:
|
||||
mgr = None
|
||||
|
||||
ok, fail = 0, 0
|
||||
for key, meta in patch.items():
|
||||
try:
|
||||
GlobalStrategyConfig.set(
|
||||
key,
|
||||
meta.get("value"),
|
||||
meta.get("type") or infer_type(meta.get("value")),
|
||||
meta.get("category") or "strategy",
|
||||
meta.get("description"),
|
||||
updated_by=args.updated_by,
|
||||
)
|
||||
if mgr is not None:
|
||||
try:
|
||||
mgr._set_to_redis(key, meta.get("value"))
|
||||
mgr._cache[key] = meta.get("value")
|
||||
except Exception:
|
||||
pass
|
||||
ok += 1
|
||||
except Exception as e:
|
||||
fail += 1
|
||||
print(f"[失败] {key}: {e}")
|
||||
|
||||
print(f"\n完成:成功 {ok},失败 {fail}")
|
||||
if fail > 0:
|
||||
sys.exit(1)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
27
scripts/apply_steady_lift_tier1.sh
Executable file
27
scripts/apply_steady_lift_tier1.sh
Executable file
|
|
@ -0,0 +1,27 @@
|
|||
#!/usr/bin/env bash
|
||||
# 稳妥增效一档:写入 global_strategy_config + Redis 缓存(与前端「保存配置」同路径)
|
||||
#
|
||||
# 变更内容(见 config/my_batch_steady_lift_tier1.json):
|
||||
# MIN_CHANGE_PERCENT 2% → 1% (24h 涨跌绝对值门槛)
|
||||
# MIN_SIGNAL_STRENGTH 8 → 7
|
||||
# ENTRY_SYMBOL_COOLDOWN_SEC 1800 → 1200
|
||||
#
|
||||
# 用法(在项目根目录):
|
||||
# chmod +x scripts/apply_steady_lift_tier1.sh
|
||||
# ./scripts/apply_steady_lift_tier1.sh
|
||||
# ./scripts/apply_steady_lift_tier1.sh --dry-run
|
||||
#
|
||||
set -euo pipefail
|
||||
ROOT="$(cd "$(dirname "$0")/.." && pwd)"
|
||||
cd "$ROOT"
|
||||
|
||||
DRY_RUN=()
|
||||
if [[ "${1:-}" == "--dry-run" ]]; then
|
||||
DRY_RUN=(--dry-run)
|
||||
fi
|
||||
|
||||
# 使用 apply_config_patch_only:只写本 JSON 中的键,不合并 apply_recommended_config 内置批量默认
|
||||
exec python3 "$ROOT/scripts/apply_config_patch_only.py" \
|
||||
--from "$ROOT/config/my_batch_steady_lift_tier1.json" \
|
||||
--updated-by "steady_lift_tier1" \
|
||||
"${DRY_RUN[@]}"
|
||||
|
|
@ -216,7 +216,7 @@ DEFAULT_TRADING_CONFIG = {
|
|||
'MAX_TOTAL_POSITION_PERCENT': 0.80, # 总仓位80%(避免满仓,留有余地)
|
||||
'MIN_POSITION_PERCENT': 0.01, # 最小仓位1%
|
||||
'MIN_MARGIN_USDT': 2.0, # 最小保证金2美元(降低门槛,允许高杠杆小资金交易,避免被 risk_manager 拦截)
|
||||
'MIN_CHANGE_PERCENT': 0.5, # 最小价格变动0.5%
|
||||
'MIN_CHANGE_PERCENT': 1.0, # 最小24h涨跌幅绝对值(%);与稳妥增效一档对齐,缺省略宽于0.5以利主流币入池
|
||||
'TOP_N_SYMBOLS': 8, # 主流币模式:缩小候选池,提高信号质量
|
||||
'SCAN_EXTRA_SYMBOLS_FOR_SUPPLEMENT': 20, # 智能补单候选增加
|
||||
'MAX_SCAN_SYMBOLS': 120, # 主流币模式:减少扫描面,降低噪声与计算负载
|
||||
|
|
@ -267,7 +267,7 @@ DEFAULT_TRADING_CONFIG = {
|
|||
'MIN_VOLUME_24H': 30000000, # 24小时成交额≥3000万美元,过滤垃圾币
|
||||
'MIN_VOLUME_24H_STRICT': 50000000, # 严格过滤≥5000万美元
|
||||
'MIN_VOLATILITY': 0.03, # 最小波动率3%,过滤死币
|
||||
'MIN_SIGNAL_STRENGTH': 8, # 主流币模式:提高信号门槛,减少低质量入场
|
||||
'MIN_SIGNAL_STRENGTH': 7, # 稳妥增效一档:略降门槛以增加机会(原为8)
|
||||
# ===== 资金费率过滤(开仓前)=====
|
||||
'FUNDING_RATE_FILTER_ENABLED': True, # 开仓前检查资金费率,避免在费率极端不利于己方时进场
|
||||
'MAX_FUNDING_RATE_FOR_LONG': 0.001, # 做多时 lastFundingRate 超过此值则跳过(0.1%=多头付费高)
|
||||
|
|
@ -393,7 +393,7 @@ DEFAULT_TRADING_CONFIG = {
|
|||
# 根治方案:默认关闭。关闭后回归“纯限价单模式”(不追价/不市价兜底/未成交撤单跳过)
|
||||
'SMART_ENTRY_ENABLED': True, # 开启智能入场,提高成交率
|
||||
'SMART_ENTRY_STRONG_SIGNAL': 7, # 强信号阈值(与 MIN_SIGNAL_STRENGTH 一致,便于智能入场触发)
|
||||
'ENTRY_SYMBOL_COOLDOWN_SEC': 1800, # 同一币种冷却30分钟(1800秒),快速验证模式:缩短冷却以增加交易频率
|
||||
'ENTRY_SYMBOL_COOLDOWN_SEC': 1200, # 稳妥增效一档:同一币种冷却20分钟(1200秒)
|
||||
|
||||
# ===== 同一交易对连续亏损过滤(避免连续亏损后继续交易)=====
|
||||
'SYMBOL_LOSS_COOLDOWN_ENABLED': True, # 是否启用同一交易对连续亏损后的冷却
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user