backtest.sh
This commit is contained in:
parent
a44179cc1d
commit
d9fac6c604
@ -134,17 +134,56 @@ if [ -z "$END_DATE_RAW" ]; then
|
||||
fi
|
||||
|
||||
# Parse dates
|
||||
if [[ "$START_DATE_RAW" == *" "* ]]; then
|
||||
START_DATE=$(date -d "$START_DATE_RAW" +"%s")
|
||||
if [[ "$START_DATE_RAW" == *"-"* ]]; then
|
||||
# 标准格式:2025-10-31 或 2025-10-31 00:00:00
|
||||
if [[ "$OSTYPE" == "darwin"* ]]; then
|
||||
START_DATE=$(date -jf "%Y-%m-%d" "${START_DATE_RAW%% *}" +"%s" 2>/dev/null)
|
||||
if [ -z "$START_DATE" ]; then
|
||||
START_DATE=$(date -jf "%Y-%m-%d %H:%M:%S" "$START_DATE_RAW" +"%s" 2>/dev/null)
|
||||
fi
|
||||
else
|
||||
START_DATE=$(date -d "$START_DATE_RAW" +"%s" 2>/dev/null)
|
||||
fi
|
||||
else
|
||||
# 兼容旧格式:20250616 -> 转换为 2025-06-16 00:00:00 再转为时间戳
|
||||
START_DATE=$(date -d "${START_DATE_RAW:0:4}-${START_DATE_RAW:4:2}-${START_DATE_RAW:6:2} 00:00:00" +"%s")
|
||||
# 旧格式:20251031
|
||||
YEAR="${START_DATE_RAW:0:4}"
|
||||
MONTH="${START_DATE_RAW:4:2}"
|
||||
DAY="${START_DATE_RAW:6:2}"
|
||||
if [[ "$OSTYPE" == "darwin"* ]]; then
|
||||
START_DATE=$(date -jf "%Y-%m-%d" "${YEAR}-${MONTH}-${DAY}" +"%s" 2>/dev/null)
|
||||
else
|
||||
START_DATE=$(date -d "${YEAR}-${MONTH}-${DAY}" +"%s" 2>/dev/null)
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ "$END_DATE_RAW" == *" "* ]]; then
|
||||
END_DATE=$(date -d "$END_DATE_RAW" +"%s")
|
||||
if [[ "$END_DATE_RAW" == *"-"* ]]; then
|
||||
# 标准格式:2025-11-24 或 2025-11-24 00:00:00
|
||||
if [[ "$OSTYPE" == "darwin"* ]]; then
|
||||
END_DATE=$(date -jf "%Y-%m-%d" "${END_DATE_RAW%% *}" +"%s" 2>/dev/null)
|
||||
if [ -z "$END_DATE" ]; then
|
||||
END_DATE=$(date -jf "%Y-%m-%d %H:%M:%S" "$END_DATE_RAW" +"%s" 2>/dev/null)
|
||||
fi
|
||||
else
|
||||
END_DATE=$(date -d "$END_DATE_RAW" +"%s" 2>/dev/null)
|
||||
fi
|
||||
else
|
||||
END_DATE=$(date -d "${END_DATE_RAW:0:4}-${END_DATE_RAW:4:2}-${END_DATE_RAW:6:2} 00:00:00" +"%s")
|
||||
# 旧格式:20251124
|
||||
YEAR="${END_DATE_RAW:0:4}"
|
||||
MONTH="${END_DATE_RAW:4:2}"
|
||||
DAY="${END_DATE_RAW:6:2}"
|
||||
if [[ "$OSTYPE" == "darwin"* ]]; then
|
||||
END_DATE=$(date -jf "%Y-%m-%d" "${YEAR}-${MONTH}-${DAY}" +"%s" 2>/dev/null)
|
||||
else
|
||||
END_DATE=$(date -d "${YEAR}-${MONTH}-${DAY}" +"%s" 2>/dev/null)
|
||||
fi
|
||||
fi
|
||||
|
||||
# 检查 date 是否成功
|
||||
if [ -z "$START_DATE" ] || [ -z "$END_DATE" ]; then
|
||||
echo "Error: Failed to parse dates."
|
||||
echo "START_DATE_RAW=$START_DATE_RAW -> START_DATE=$START_DATE"
|
||||
echo "END_DATE_RAW=$END_DATE_RAW -> END_DATE=$END_DATE"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 处理交易对参数:优先级为 --pairRemoteList > --pairs > 默认值
|
||||
@ -216,16 +255,16 @@ if [ -n "$STRATEGY_ARG" ] && [ "$STRATEGY_ARG" != "PARAM_WITHOUT_VALUE" ]; then
|
||||
# 自动匹配策略对应的配置文件(使用小写)
|
||||
STRATEGY_CONFIG_LOWER="$(echo "$STRATEGY_ARG" | tr '[:upper:]' '[:lower:]').json"
|
||||
|
||||
echo "Checking auto-matched config file: freqtrade/templates/$STRATEGY_CONFIG_LOWER"
|
||||
echo "Checking auto-matched config file: config_examples/$STRATEGY_CONFIG_LOWER"
|
||||
|
||||
# 检查小写配置文件
|
||||
if [ -f "../freqtrade/templates/$STRATEGY_CONFIG_LOWER" ]; then
|
||||
# 检查配置文件(在 config_examples 目录中查找)
|
||||
if [ -f "../config_examples/$STRATEGY_CONFIG_LOWER" ]; then
|
||||
CONFIG_FILE="$STRATEGY_CONFIG_LOWER"
|
||||
echo "Auto-matched config file for strategy: $CONFIG_FILE"
|
||||
else
|
||||
echo "Warning: Auto-matched config file '$STRATEGY_CONFIG_LOWER' not found in templates directory"
|
||||
echo "Available config files in templates directory:"
|
||||
ls ../freqtrade/templates/*.json 2>/dev/null | sed 's|.*/||' || echo "No JSON config files found"
|
||||
echo "Warning: Auto-matched config file '$STRATEGY_CONFIG_LOWER' not found in config_examples directory"
|
||||
echo "Available config files in config_examples directory:"
|
||||
ls ../config_examples/*.json 2>/dev/null | sed 's|.*/||' || echo "No JSON config files found"
|
||||
echo "Using current config: $CONFIG_FILE"
|
||||
fi
|
||||
fi
|
||||
@ -237,17 +276,12 @@ if [ -n "$CONFIG_ARG" ]; then
|
||||
fi
|
||||
|
||||
# 检查指定的配置文件是否存在,如果不存在则使用默认配置
|
||||
echo "Checking config file: freqtrade/templates/$CONFIG_FILE"
|
||||
if [ ! -f "../freqtrade/templates/$CONFIG_FILE" ]; then
|
||||
# 如果在 templates 中找不到,尝试在 config_examples 中找
|
||||
if [ ! -f "../config_examples/$CONFIG_FILE" ]; then
|
||||
echo "Warning: Config file freqtrade/templates/$CONFIG_FILE not found, using default configuration"
|
||||
CONFIG_FILE="basic.json"
|
||||
else
|
||||
echo "Config file found: config_examples/$CONFIG_FILE"
|
||||
fi
|
||||
echo "Checking config file: config_examples/$CONFIG_FILE"
|
||||
if [ ! -f "../config_examples/$CONFIG_FILE" ]; then
|
||||
echo "Warning: Config file config_examples/$CONFIG_FILE not found, using default configuration"
|
||||
CONFIG_FILE="basic.json"
|
||||
else
|
||||
echo "Config file found: freqtrade/templates/$CONFIG_FILE"
|
||||
echo "Config file found: config_examples/$CONFIG_FILE"
|
||||
fi
|
||||
|
||||
# 最后确认STRATEGY_NAME有值
|
||||
@ -299,7 +333,7 @@ docker-compose run --rm freqtrade backtesting $PAIRS_FLAG \
|
||||
--breakdown day \
|
||||
--cache none >output.log 2>&1
|
||||
|
||||
sed -i 's/\x1B\[[0-9;]*m//g' output.log
|
||||
sed -i '' 's/\\x1B\\[[0-9;]*m//g' output.log
|
||||
|
||||
rm ./result/*.json -fr
|
||||
rm ./result/*.py -fr
|
||||
@ -320,7 +354,7 @@ else
|
||||
fi
|
||||
|
||||
cd -
|
||||
sed -i 's/\x1B\[[0-9;]*m//g' output.log
|
||||
sed -i '' 's/\\x1B\\[[0-9;]*m//g' output.log
|
||||
cp output.log result/ -f
|
||||
cd tools/
|
||||
python tradestocsv.py
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user