From 3d3bead6793b774ba731fc09bc07e2cb73c4e409 Mon Sep 17 00:00:00 2001 From: "zhangkun9038@dingtalk.com" Date: Thu, 19 Feb 2026 22:59:43 +0800 Subject: [PATCH] =?UTF-8?q?=E8=84=9A=E6=9C=AC=E4=BC=9A=E8=87=AA=E5=8A=A8?= =?UTF-8?q?=E4=BD=BF=E7=94=A8=E9=BB=98=E8=AE=A4=E7=9A=84=20MyCoolRLModel?= =?UTF-8?q?=20=E6=A8=A1=E5=9E=8B=EF=BC=8C=E8=80=8C=E4=B8=8D=E4=BC=9A?= =?UTF-8?q?=E6=8F=90=E7=A4=BA=E5=8F=82=E6=95=B0=E7=BC=BA=E5=A4=B1=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- test_date.sh | 23 +++++++++++++++++++++++ test_fixed.sh | 22 ++++++++++++++++++++++ tools/backtest.sh | 29 ++++++++++++++++++++++++++--- 3 files changed, 71 insertions(+), 3 deletions(-) create mode 100755 test_date.sh create mode 100755 test_fixed.sh diff --git a/test_date.sh b/test_date.sh new file mode 100755 index 00000000..0d18880c --- /dev/null +++ b/test_date.sh @@ -0,0 +1,23 @@ +#!/bin/bash + +# 测试日期格式 +START_DATE_RAW="20260118" +END_DATE_RAW="20260218" + +echo "Original params:" +echo "START_DATE_RAW: $START_DATE_RAW" +echo "END_DATE_RAW: $END_DATE_RAW" + +# 直接测试日期格式化 +START_DATE_STR="${START_DATE_RAW:0:4}-${START_DATE_RAW:4:2}-${START_DATE_RAW:6:2}" +END_DATE_STR="${END_DATE_RAW:0:4}-${END_DATE_RAW:4:2}-${END_DATE_RAW:6:2}" + +echo "Formatted dates:" +echo "START_DATE_STR: $START_DATE_STR" +echo "END_DATE_STR: $END_DATE_STR" +echo "Timerange would be: $START_DATE_STR-$END_DATE_STR" + +# 测试是否包含多余的连字符 +echo "Checking for extra dashes..." +echo "START_DATE_STR has $(echo "$START_DATE_STR" | grep -o '-' | wc -l) dashes" +echo "END_DATE_STR has $(echo "$END_DATE_STR" | grep -o '-' | wc -l) dashes" \ No newline at end of file diff --git a/test_fixed.sh b/test_fixed.sh new file mode 100755 index 00000000..1582b229 --- /dev/null +++ b/test_fixed.sh @@ -0,0 +1,22 @@ +#!/bin/bash + +# 测试修复后的日期格式 +START_DATE_RAW="20260118" +END_DATE_RAW="20260218" + +echo "Original params:" +echo "START_DATE_RAW: $START_DATE_RAW" +echo "END_DATE_RAW: $END_DATE_RAW" + +# 处理日期格式 +START_DATE_STR="${START_DATE_RAW:0:4}-${START_DATE_RAW:4:2}-${START_DATE_RAW:6:2}" +END_DATE_STR="${END_DATE_RAW:0:4}-${END_DATE_RAW:4:2}-${END_DATE_RAW:6:2}" + +echo "Formatted dates:" +echo "START_DATE_STR: $START_DATE_STR" +echo "END_DATE_STR: $END_DATE_STR" + +# 构建正确的 timerange 格式 (YYYY-MM-DD/YYYY-MM-DD) +TIMERANGE_ARG="$START_DATE_STR/$END_DATE_STR" + +echo "Final timerange argument: $TIMERANGE_ARG" \ No newline at end of file diff --git a/tools/backtest.sh b/tools/backtest.sh index 0934f4c3..eaa0ea96 100755 --- a/tools/backtest.sh +++ b/tools/backtest.sh @@ -124,6 +124,15 @@ fi START_DATE_STR="" END_DATE_STR="" +# 从原始参数中提取日期 +if [ $# -gt 0 ]; then + START_DATE_RAW="$1" +fi +if [ $# -gt 1 ]; then + END_DATE_RAW="$2" +fi + +# 处理日期格式 if [[ "$START_DATE_RAW" == *" "* ]]; then START_DATE_STR=$(date -d "$START_DATE_RAW" +"%Y-%m-%d") else @@ -138,6 +147,20 @@ else END_DATE_STR="${END_DATE_RAW:0:4}-${END_DATE_RAW:4:2}-${END_DATE_RAW:6:2}" fi +# 确保日期格式正确 +if [[ ! "$START_DATE_STR" =~ ^[0-9]{4}-[0-9]{2}-[0-9]{2}$ ]]; then + echo "Error: Invalid start date format: $START_DATE_STR" + exit 1 +fi + +if [[ ! "$END_DATE_STR" =~ ^[0-9]{4}-[0-9]{2}-[0-9]{2}$ ]]; then + echo "Error: Invalid end date format: $END_DATE_STR" + exit 1 +fi + +# 构建正确的 timerange 格式 (YYYY-MM-DD/YYYY-MM-DD) +TIMERANGE_ARG="$START_DATE_STR/$END_DATE_STR" + # 处理交易对参数:优先级为 --pairRemoteList > --pairs > 默认值 if [ -n "$PAIR_REMOTE_LIST_URL" ]; then # 从远程API获取交易对列表 @@ -206,7 +229,7 @@ hyperopt_config="${STRATEGY_NAME%.py}.json" # Debug: Print date variables to check format echo "DEBUG: START_DATE_STR = '$START_DATE_STR'" echo "DEBUG: END_DATE_STR = '$END_DATE_STR'" -echo "DEBUG: Timerange format would be: $START_DATE_STR-$END_DATE_STR" +echo "DEBUG: TIMERANGE_ARG = '$TIMERANGE_ARG'" echo "docker-compose run --rm freqtrade backtesting $PAIRS_FLAG \ --logfile /freqtrade/user_data/logs/freqtrade.log \ @@ -215,7 +238,7 @@ echo "docker-compose run --rm freqtrade backtesting $PAIRS_FLAG \ --config /freqtrade/config_examples/$CONFIG_FILE \ --strategy-path /freqtrade/templates \ --strategy $STRATEGY_NAME \ - --timerange $START_DATE_STR-$END_DATE_STR \ + --timerange $TIMERANGE_ARG \ --fee 0.0008 \ --breakdown day \ --cache none >output.log" @@ -228,7 +251,7 @@ docker-compose run --rm freqtrade backtesting $PAIRS_FLAG \ --strategy-path /freqtrade/templates \ --enable-protections \ --strategy $STRATEGY_NAME \ - --timerange $START_DATE_STR-$END_DATE_STR \ + --timerange $TIMERANGE_ARG \ --fee 0.0008 \ --breakdown day \ --cache none >output.log 2>&1