脚本会自动使用默认的 MyCoolRLModel 模型,而不会提示参数缺失。

This commit is contained in:
zhangkun9038@dingtalk.com 2026-02-19 23:15:28 +08:00
parent dade26a9ad
commit ab99c06030
2 changed files with 76 additions and 16 deletions

52
test_timestamp.sh Normal file
View File

@ -0,0 +1,52 @@
#!/bin/bash
# 测试时间戳转换
# 测试输入
START_DATE_RAW="20260118"
END_DATE_RAW="20260218"
echo "=== 测试时间戳转换 ==="
echo "输入:"
echo "START_DATE_RAW: $START_DATE_RAW"
echo "END_DATE_RAW: $END_DATE_RAW"
# 处理日期格式 - 转换为 UNIX 时间戳
START_DATE_TS=""
END_DATE_TS=""
if [[ "$START_DATE_RAW" == *" "* ]]; then
# 如果输入有空格,假设是日期/时间字符串
START_DATE_TS=$(date -d "$START_DATE_RAW" +"%s")
elif [[ "$START_DATE_RAW" =~ ^[0-9]{8}$ ]]; then
# 如果输入是 8 位数 (YYYYMMDD),转换为时间戳
START_DATE_TS=$(date -d "${START_DATE_RAW:0:4}-${START_DATE_RAW:4:2}-${START_DATE_RAW:6:2} 00:00:00" +"%s")
else
# 否则,假设已经是时间戳
START_DATE_TS="$START_DATE_RAW"
fi
if [[ "$END_DATE_RAW" == *" "* ]]; then
# 如果输入有空格,假设是日期/时间字符串
END_DATE_TS=$(date -d "$END_DATE_RAW" +"%s")
elif [[ "$END_DATE_RAW" =~ ^[0-9]{8}$ ]]; then
# 如果输入是 8 位数 (YYYYMMDD),转换为时间戳
END_DATE_TS=$(date -d "${END_DATE_RAW:0:4}-${END_DATE_RAW:4:2}-${END_DATE_RAW:6:2} 00:00:00" +"%s")
else
# 否则,假设已经是时间戳
END_DATE_TS="$END_DATE_RAW"
fi
echo ""
echo "转换结果:"
echo "START_DATE_TS: $START_DATE_TS"
echo "END_DATE_TS: $END_DATE_TS"
# 构建正确的 timerange 格式 (TIMESTAMP1-TIMESTAMP2)
TIMERANGE_ARG="$START_DATE_TS-$END_DATE_TS"
echo ""
echo "最终 timerange 参数:"
echo "TIMERANGE_ARG: $TIMERANGE_ARG"
echo ""
echo "完整命令示例:"
echo "docker-compose run --rm freqtrade backtesting --pairs XAUT/USDT --timerange $TIMERANGE_ARG --strategy FreqaiPrimer"

View File

@ -123,37 +123,45 @@ if [ -z "$START_DATE_RAW" ] && [ -z "$END_DATE_RAW" ] && [ $# -gt 0 ]; then
fi fi
# Process date formats # Process date formats
START_DATE_STR="" START_DATE_TS=""
END_DATE_STR="" END_DATE_TS=""
# Handle date processing # Handle date processing - convert to UNIX timestamp
if [[ "$START_DATE_RAW" == *" "* ]]; then if [[ "$START_DATE_RAW" == *" "* ]]; then
START_DATE_STR=$(date -d "$START_DATE_RAW" +"%Y-%m-%d") # If input has spaces, assume it's a date/time string
START_DATE_TS=$(date -d "$START_DATE_RAW" +"%s")
elif [[ "$START_DATE_RAW" =~ ^[0-9]{8}$ ]]; then
# If input is 8 digits (YYYYMMDD), convert to timestamp
START_DATE_TS=$(date -d "${START_DATE_RAW:0:4}-${START_DATE_RAW:4:2}-${START_DATE_RAW:6:2} 00:00:00" +"%s")
else else
# 兼容旧格式20260118 -> 转换为 2026-01-18 # Otherwise, assume it's already a timestamp
START_DATE_STR="${START_DATE_RAW:0:4}-${START_DATE_RAW:4:2}-${START_DATE_RAW:6:2}" START_DATE_TS="$START_DATE_RAW"
fi fi
if [[ "$END_DATE_RAW" == *" "* ]]; then if [[ "$END_DATE_RAW" == *" "* ]]; then
END_DATE_STR=$(date -d "$END_DATE_RAW" +"%Y-%m-%d") # If input has spaces, assume it's a date/time string
END_DATE_TS=$(date -d "$END_DATE_RAW" +"%s")
elif [[ "$END_DATE_RAW" =~ ^[0-9]{8}$ ]]; then
# If input is 8 digits (YYYYMMDD), convert to timestamp
END_DATE_TS=$(date -d "${END_DATE_RAW:0:4}-${END_DATE_RAW:4:2}-${END_DATE_RAW:6:2} 00:00:00" +"%s")
else else
# 兼容旧格式20260218 -> 转换为 2026-02-18 # Otherwise, assume it's already a timestamp
END_DATE_STR="${END_DATE_RAW:0:4}-${END_DATE_RAW:4:2}-${END_DATE_RAW:6:2}" END_DATE_TS="$END_DATE_RAW"
fi fi
# Validate date formats # Validate timestamp formats
if [[ ! "$START_DATE_STR" =~ ^[0-9]{4}-[0-9]{2}-[0-9]{2}$ ]]; then if [[ ! "$START_DATE_TS" =~ ^[0-9]+$ ]]; then
echo "Error: Invalid start date format: $START_DATE_STR" echo "Error: Invalid start date format: $START_DATE_RAW"
exit 1 exit 1
fi fi
if [[ ! "$END_DATE_STR" =~ ^[0-9]{4}-[0-9]{2}-[0-9]{2}$ ]]; then if [[ ! "$END_DATE_TS" =~ ^[0-9]+$ ]]; then
echo "Error: Invalid end date format: $END_DATE_STR" echo "Error: Invalid end date format: $END_DATE_RAW"
exit 1 exit 1
fi fi
# Build correct timerange format (YYYY-MM-DD/YYYY-MM-DD) # Build correct timerange format (TIMESTAMP1-TIMESTAMP2)
TIMERANGE_ARG="$START_DATE_STR/$END_DATE_STR" TIMERANGE_ARG="$START_DATE_TS-$END_DATE_TS"
# 处理交易对参数:优先级为 --pairRemoteList > --pairs > 默认值 # 处理交易对参数:优先级为 --pairRemoteList > --pairs > 默认值
if [ -n "$PAIR_REMOTE_LIST_URL" ]; then if [ -n "$PAIR_REMOTE_LIST_URL" ]; then