hyperopt_org update
This commit is contained in:
parent
5b21b349a5
commit
638da68bc0
@ -1,5 +1,36 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Function to extract the value of a parameter
|
||||
get_param_value() {
|
||||
local param="$1"
|
||||
shift
|
||||
local args=($@)
|
||||
local i=0
|
||||
|
||||
while [ $i -lt ${#args[@]} ]; do
|
||||
case "${args[$i]}" in
|
||||
$param=*)
|
||||
echo "${args[$i]#*=}"
|
||||
return 0
|
||||
;;
|
||||
$param)
|
||||
# Check if the next argument exists and does not start with a dash
|
||||
if [ $((i + 1)) -lt ${#args[@]} ] && [[ "${args[$((i + 1))]}" != -* ]]; then
|
||||
echo "${args[$((i + 1))]}"
|
||||
return 0
|
||||
fi
|
||||
# 如果参数存在但没有值,返回特殊标识"PARAM_WITHOUT_VALUE"
|
||||
echo "PARAM_WITHOUT_VALUE"
|
||||
return 0
|
||||
;;
|
||||
esac
|
||||
i=$((i + 1))
|
||||
done
|
||||
# 如果参数不存在,返回空字符串
|
||||
echo ""
|
||||
return 0
|
||||
}
|
||||
|
||||
# 检查 .env 文件
|
||||
if [ ! -f ".env" ]; then
|
||||
echo "⚠️ 本地缺少 .env 文件,请创建并配置。示例内容如下:"
|
||||
@ -46,36 +77,6 @@ else
|
||||
RANDOM_STATE="$RANDOM_STATE_ARG"
|
||||
fi
|
||||
echo "Using random-state: $RANDOM_STATE"
|
||||
# Function to extract the value of a parameter
|
||||
get_param_value() {
|
||||
local param="$1"
|
||||
shift
|
||||
local args=($@)
|
||||
local i=0
|
||||
|
||||
while [ $i -lt ${#args[@]} ]; do
|
||||
case "${args[$i]}" in
|
||||
$param=*)
|
||||
echo "${args[$i]#*=}"
|
||||
return 0
|
||||
;;
|
||||
$param)
|
||||
# Check if the next argument exists and does not start with a dash
|
||||
if [ $((i + 1)) -lt ${#args[@]} ] && [[ "${args[$((i + 1))]}" != -* ]]; then
|
||||
echo "${args[$((i + 1))]}"
|
||||
return 0
|
||||
fi
|
||||
# 如果参数存在但没有值,返回特殊标识"PARAM_WITHOUT_VALUE"
|
||||
echo "PARAM_WITHOUT_VALUE"
|
||||
return 0
|
||||
;;
|
||||
esac
|
||||
i=$((i + 1))
|
||||
done
|
||||
# 如果参数不存在,返回空字符串
|
||||
echo ""
|
||||
return 0
|
||||
}
|
||||
|
||||
# Check if we have named parameters
|
||||
HAS_NAMED_PARAMS=false
|
||||
@ -171,25 +172,32 @@ else
|
||||
fi
|
||||
|
||||
# Set default values if parameters not provided
|
||||
# macOS兼容的date命令
|
||||
if [ -z "$START_DATE_RAW" ]; then
|
||||
START_DATE_RAW=$(date -d "2 days ago" +"%Y-%m-%d %H:%M:%S")
|
||||
START_DATE_RAW=$(date -v -2d +"%Y-%m-%d %H:%M:%S")
|
||||
fi
|
||||
|
||||
if [ -z "$END_DATE_RAW" ]; then
|
||||
END_DATE_RAW=$(date -d "tomorrow" +"%Y-%m-%d %H:%M:%S")
|
||||
END_DATE_RAW=$(date -v +1d +"%Y-%m-%d %H:%M:%S")
|
||||
fi
|
||||
|
||||
# Parse dates
|
||||
# 增强日期格式校验
|
||||
if [[ "$START_DATE_RAW" =~ ^[0-9]{8}$ ]]; then
|
||||
# 处理YYYYMMDD格式
|
||||
START_DATE=$(date -d "${START_DATE_RAW:0:4}-${START_DATE_RAW:4:2}-${START_DATE_RAW:6:2}" +"%s" 2>/dev/null)
|
||||
YEAR=${START_DATE_RAW:0:4}
|
||||
MONTH=${START_DATE_RAW:4:2}
|
||||
DAY=${START_DATE_RAW:6:2}
|
||||
START_DATE=$(date -j -f "%Y-%m-%d" "$YEAR-$MONTH-$DAY" +"%s" 2>/dev/null)
|
||||
if [ -z "$START_DATE" ]; then
|
||||
echo "错误:无效的起始日期格式 $START_DATE_RAW,请使用 YYYY-MM-DD 或 YYYYMMDD"
|
||||
exit 1
|
||||
fi
|
||||
elif [[ "$START_DATE_RAW" == *" "* ]]; then
|
||||
START_DATE=$(date -d "$START_DATE_RAW" +"%s" 2>/dev/null)
|
||||
# 处理带空格的日期格式 (YYYY-MM-DD HH:MM:SS)
|
||||
DATE_PART=$(echo "$START_DATE_RAW" | cut -d' ' -f1)
|
||||
TIME_PART=$(echo "$START_DATE_RAW" | cut -d' ' -f2)
|
||||
START_DATE=$(date -j -f "%Y-%m-%d %H:%M:%S" "$DATE_PART $TIME_PART" +"%s" 2>/dev/null)
|
||||
if [ -z "$START_DATE" ]; then
|
||||
echo "错误:无效的起始日期格式 $START_DATE_RAW"
|
||||
exit 1
|
||||
@ -200,9 +208,16 @@ else
|
||||
fi
|
||||
|
||||
if [[ "$END_DATE_RAW" == *" "* ]]; then
|
||||
END_DATE=$(date -d "$END_DATE_RAW" +"%s")
|
||||
# 处理带空格的日期格式 (YYYY-MM-DD HH:MM:SS)
|
||||
DATE_PART=$(echo "$END_DATE_RAW" | cut -d' ' -f1)
|
||||
TIME_PART=$(echo "$END_DATE_RAW" | cut -d' ' -f2)
|
||||
END_DATE=$(date -j -f "%Y-%m-%d %H:%M:%S" "$DATE_PART $TIME_PART" +"%s")
|
||||
else
|
||||
END_DATE=$(date -d "${END_DATE_RAW:0:4}-${END_DATE_RAW:4:2}-${END_DATE_RAW:6:2} 00:00:00" +"%s")
|
||||
# 处理YYYYMMDD格式
|
||||
YEAR=${END_DATE_RAW:0:4}
|
||||
MONTH=${END_DATE_RAW:4:2}
|
||||
DAY=${END_DATE_RAW:6:2}
|
||||
END_DATE=$(date -j -f "%Y-%m-%d %H:%M:%S" "$YEAR-$MONTH-$DAY 00:00:00" +"%s")
|
||||
fi
|
||||
|
||||
# 处理交易对参数:优先级为 --pairRemoteList > --pairs > 默认值
|
||||
@ -328,12 +343,17 @@ echo "Using config: $CONFIG_FILE"
|
||||
echo "Using testBranch: $TEST_BRANCH"
|
||||
echo "Using hyperopt spaces: $SPACES" # 再次确认
|
||||
|
||||
# 直接在当前目录工作,不使用不存在的.venv
|
||||
cd ../
|
||||
source .venv/bin/activate
|
||||
rm -rf user_data/models/*
|
||||
rm -rf ./freqtrade/user_data/data/backtest_results/*
|
||||
rm -fr ./user_data/dryrun_results/*
|
||||
rm -f result/*
|
||||
# 安全地删除文件,只删除存在的文件
|
||||
find user_data/models -type f -delete 2>/dev/null
|
||||
touch user_data/models/.gitkeep
|
||||
find ./freqtrade/user_data/data/backtest_results -type f -delete 2>/dev/null
|
||||
touch ./freqtrade/user_data/data/backtest_results/.gitkeep
|
||||
find ./user_data/dryrun_results -type f -delete 2>/dev/null
|
||||
touch ./user_data/dryrun_results/.gitkeep
|
||||
find result -type f -delete 2>/dev/null
|
||||
touch result/.gitkeep
|
||||
|
||||
PARAMS_NAME=freqaiprimer
|
||||
echo "docker-compose run --rm freqtrade hyperopt $PAIRS_FLAG \
|
||||
@ -349,7 +369,7 @@ echo "docker-compose run --rm freqtrade hyperopt $PAIRS_FLAG \
|
||||
--epochs 100 \
|
||||
-j 4 \
|
||||
--hyperopt-loss CalmarHyperOptLoss \
|
||||
--spaces $SPACES \ # ✅ 关键修改:这里使用变量
|
||||
--spaces $SPACES \
|
||||
--fee 0.001"
|
||||
|
||||
docker-compose run --rm freqtrade hyperopt $PAIRS_FLAG \
|
||||
@ -361,10 +381,10 @@ docker-compose run --rm freqtrade hyperopt $PAIRS_FLAG \
|
||||
--enable-protections \
|
||||
--strategy-path /freqtrade/templates \
|
||||
--timerange ${START_DATE}-${END_DATE} \
|
||||
--random-state $RANDOM_STATE \ # ✅ 使用变量
|
||||
--epochs $EPOCHS \ # ✅ 使用变量
|
||||
--random-state $RANDOM_STATE \
|
||||
--epochs $EPOCHS \
|
||||
-j 4 \
|
||||
--hyperopt-loss CalmarHyperOptLoss \
|
||||
--spaces $SPACES \ # ✅ 关键修改:这里使用变量
|
||||
--spaces $SPACES \
|
||||
--fee 0.001
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user