优化download.sh和dryrun.sh

This commit is contained in:
Ubuntu 2025-05-18 06:26:20 +08:00
parent c232264487
commit 77f48fdadf
3 changed files with 83 additions and 6 deletions

View File

@ -35,6 +35,10 @@
},
"pair_whitelist": [
"BTC/USDT",
"TON/USDT",
"ETH/USDT",
"OKB/USDT",
"DOT/USDT",
"SOL/USDT"
],
"pair_blacklist": []

View File

@ -27,17 +27,66 @@ get_param_value() {
exit 1
}
# Function to extract comma-separated values
get_csv_param_value() {
local param="$1"
shift
while [[ $# -gt 0 ]]; do
case "$1" in
$param=*)
echo "${1#*=}"
return
;;
$param)
# Check if the next argument exists and does not start with a dash
if [[ -n "$2" && "$2" != -* ]]; then
echo "$2"
return
else
echo "Error: Missing value for parameter $param" >&2
exit 1
fi
;;
esac
shift
done
echo ""
return
}
if [[ "$@" == *"--timerange"* ]] && [[ "$@" == *"--days"* ]]; then
echo "Error: Both --timerange and --days cannot be provided."
exit 1
fi
echo days: $days
# Get timerange or days from parameters
if [[ "$@" == *"--timerange"* ]]; then
timerange=$(get_param_value "--timerange" "$@")
docker-compose run --rm freqtrade download-data --config /freqtrade/config_examples/basic.json --pairs BTC/USDT OKB/USDT TON/USDT DOT/USDT SOL/USDT XRP/USDT --timeframe 3m 5m 15m 30m 1h 4h 6h 12h 1d --timerange $timerange
elif [[ "$@" == *"--days"* ]]; then
days=$(get_param_value "--days" "$@")
docker-compose run --rm freqtrade download-data --config /freqtrade/config_examples/basic.json --pairs BTC/USDT OKB/USDT TON/USDT DOT/USDT SOL/USDT XRP/USDT --timeframe 3m 5m 15m 30m 1h 4h 6h 12h 1d --days $days
else
docker-compose run --rm freqtrade download-data --config /freqtrade/config_examples/basic.json --pairs BTC/USDT OKB/USDT TON/USDT DOT/USDT SOL/USDT XRP/USDT --timeframe 3m 5m 15m 30m 1h 4h 6h 12h 1d
fi
# Get pairs and timeframe from parameters or use defaults
pairs=$(get_csv_param_value "--pairs" "$@")
timeframe=$(get_csv_param_value "--timeframe" "$@")
# Use default values if parameters are not provided
if [[ -z "$pairs" ]]; then
pairs="BTC/USDT,OKB/USDT,TON/USDT,DOT/USDT,SOL/USDT,XRP/USDT"
fi
if [[ -z "$timeframe" ]]; then
timeframe="3m,5m,15m,30m,1h,4h,6h,12h,1d"
fi
# Initialize the base command
cmd="docker-compose run --rm freqtrade download-data --config /freqtrade/config_examples/basic.json --pairs $pairs --timeframe $timeframe"
# Add timerange or days if provided
if [[ -n "$timerange" ]]; then
cmd+=" --timerange $timerange"
elif [[ -n "$days" ]]; then
cmd+=" --days $days"
fi
# Execute the command
eval $cmd

View File

@ -1,4 +1,26 @@
#!/bin/bash
# 检查当前分支名称是否包含 "dryrun"
CURRENT_BRANCH=$(git rev-parse --abbrev-ref HEAD)
if [[ "$CURRENT_BRANCH" != *"dryrun"* ]]; then
echo "⚠️ 警告:当前分支名称为 '$CURRENT_BRANCH',不包含 'dryrun'。"
echo "⚠️ 确保您正在正确的分支上运行此脚本。"
read -p "是否继续?(y/n): " confirm
if [[ "$confirm" != "y" && "$confirm" != "Y" ]]; then
echo "已取消执行。"
exit 1
fi
fi
# 如果当前分支名称包含 "dryrun",执行 git reset --hard
if [[ "$CURRENT_BRANCH" == *"dryrun"* ]]; then
echo "当前分支为 '$CURRENT_BRANCH',正在执行 git reset --hard 以确保代码干净..."
git reset --hard
if [ $? -ne 0 ]; then
echo "⚠️ 执行 git reset --hard 失败,请检查 Git 状态。"
exit 1
fi
echo "Git 工作区已清理。"
fi
# 检查 .env 文件
if [ ! -f ".env" ]; then
@ -35,7 +57,9 @@ rm result/*
hyperopt_config="${STRATEGY_NAME%.py}.json"
docker rm $(docker ps -aq) -f
docker-compose run -d --rm -p 8080:8080 freqtrade trade \
# 获取当前 Git Commit 的前 8 位
GIT_COMMIT_SHORT=$(git rev-parse HEAD | cut -c 1-8)
docker-compose run -d --rm --name freqtrade-dryrun-${GIT_COMMIT_SHORT} -p 8080:8080 freqtrade trade \
--logfile /freqtrade/user_data/logs/freqtrade.log \
--db-url sqlite:////freqtrade/user_data/tradesv3.sqlite \
--freqaimodel LightGBMRegressor \