From ddd127e0b3fab4feea279ffca10390cadff9517f Mon Sep 17 00:00:00 2001 From: "zhangkun9038@dingtalk.com" Date: Wed, 26 Nov 2025 23:17:18 +0800 Subject: [PATCH] ./live.sh --strategy StaticGrid --pairs ETH/USDT --- tools/live.sh | 84 ++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 63 insertions(+), 21 deletions(-) diff --git a/tools/live.sh b/tools/live.sh index 96d927c..001fb20 100755 --- a/tools/live.sh +++ b/tools/live.sh @@ -192,6 +192,7 @@ PAIR_REMOTE_LIST_URL="$DEFAULT_PAIR_REMOTE_URL" # 初始化策略配置(从 .env 加载) STRATEGY_NAME=${STRATEGY_NAME:-TheForceV7} CONFIG_FILE=${CONFIG_FILE:-basic.json} +PAIRS_ARG="" # 解析命令行参数:支持策略名、配置文件、币对列表 while [[ $# -gt 0 ]]; do @@ -222,6 +223,19 @@ while [[ $# -gt 0 ]]; do exit 1 fi ;; + --pairs=*) + PAIRS_ARG="${1#*=}" + shift + ;; + --pairs) + if [[ -n "$2" && "$2" != -* ]]; then + PAIRS_ARG="$2" + shift 2 + else + echo "错误:--pairs需要指定值" >&2 + exit 1 + fi + ;; --pairRemoteList=*) PAIR_REMOTE_LIST_URL="${1#*=}" shift @@ -264,28 +278,56 @@ echo "✅ 远程币对列表URL: $PAIR_REMOTE_LIST_URL" >&2 ### 核心:处理币对列表 ### -# 1. 获取数据库币对(使用绝对路径) -db_path="/home/ubuntu/freqtrade/user_data/tradesv3.sqlite" -db_pairs=$(get_open_trades_pairs "$db_path") - -# 2. 获取远程币对 -remote_pairs=$(get_remote_pairs "$PAIR_REMOTE_LIST_URL") - -# 3. 合并去重 -merged_pairs=$(merge_and_deduplicate_pairs "$db_pairs" "$remote_pairs") - -# 4. 更新配置文件 -update_live_json_pair_whitelist "../config_examples/live.json" "$merged_pairs" - -# 编辑 ../freqtrade/templates/${PARAMS_NAME}.json 文件,删除包含 "protection": {}, 的行 -echo "正在编辑 ../freqtrade/templates/${PARAMS_NAME}.json 文件,删除 'protection': {} 行..." >&2 -sed -i '/"protection": {},/d' "../freqtrade/templates/${PARAMS_NAME}.json" - -if [ $? -eq 0 ]; then - echo "✅ 成功编辑 ../freqtrade/templates/${PARAMS_NAME}.json 文件" >&2 +# 0. 判断是否使用 --pairs 传入的币对列表 +if [ -n "$PAIRS_ARG" ]; then + echo "✅ 使用命令行 --pairs 参数:$PAIRS_ARG" >&2 + # 更新配置文件中的 pair_whitelist + if [ -f "../config_examples/live.json" ]; then + update_live_json_pair_whitelist "../config_examples/live.json" "$PAIRS_ARG" + else + echo "⚠️ 找不到 ../config_examples/live.json,跳过配置更新" >&2 + fi else - echo "❌ 编辑 ../freqtrade/templates/${PARAMS_NAME}.json 文件失败" >&2 - exit 1 + # 使用旧的逻辑:数据库 + 遥程 API + echo "✅ 使用旧逻辑(数据库 + 遥程 API)" >&2 + + # 1. 获取数据库币对(使用绝对路径) + db_path="/home/ubuntu/freqtrade/user_data/tradesv3.sqlite" + db_pairs=$(get_open_trades_pairs "$db_path") + + # 2. 获取遥程币对 + remote_pairs=$(get_remote_pairs "$PAIR_REMOTE_LIST_URL") + + # 3. 合并去重 + merged_pairs=$(merge_and_deduplicate_pairs "$db_pairs" "$remote_pairs") + + # 4. 更新配置文件 + if [ -f "../config_examples/live.json" ]; then + update_live_json_pair_whitelist "../config_examples/live.json" "$merged_pairs" + else + echo "⚠️ 找不到 ../config_examples/live.json,跳过配置更新" >&2 + fi +fi + +# 编辑参数文件,删除包含 "protection": {}, 的行(如果文件存在) +PARAMS_FILE="../freqtrade/templates/${PARAMS_NAME}.json" +if [ -f "$PARAMS_FILE" ]; then + echo "正在编辑 $PARAMS_FILE 文件,删除 'protection': {} 行..." >&2 + # macOS 兼容的 sed 命令 + if [[ "$OSTYPE" == "darwin"* ]]; then + sed -i '' '/'"protection"': {},/d' "$PARAMS_FILE" + else + sed -i '/'"protection"': {},/d' "$PARAMS_FILE" + fi + + if [ $? -eq 0 ]; then + echo "✅ 成功编辑 $PARAMS_FILE 文件" >&2 + else + echo "❌ 编辑 $PARAMS_FILE 文件失败" >&2 + exit 1 + fi +else + echo "⚠️ 参数文件 $PARAMS_FILE 不存在,跳过编辑" >&2 fi ### 启动容器 ###