diff --git a/tools/live.sh b/tools/live.sh new file mode 100755 index 00000000..68d74d61 --- /dev/null +++ b/tools/live.sh @@ -0,0 +1,89 @@ +#!/bin/bash + +set -e # 出错立即停止 +# 检查 .env 文件 +if [ ! -f ".env" ]; then + echo "⚠️ 本地缺少 .env 文件,请创建并配置。示例内容如下:" + echo "" + echo "STRATEGY_NAME=TheForceV7" + echo "CONFIG_FILE=basic.json" + echo "TEST_BRANCH=theforce-noai-test" + echo "DRYRUN_BRANCH=theforce-noai-dryrun" + echo "" + exit 1 +fi +# 加载 .env 文件中的变量(位于项目根目录) +if [ -f ".env" ]; then + export $(grep -v '^#' .env | xargs) +else + echo "⚠️ 缺少 .env 文件,请创建并配置 TEST_BRANCH 和 DRYRUN_BRANCH" + exit 1 +fi + +# 获取当前分支名 +current_branch=$(git rev-parse --abbrev-ref HEAD) + +# 检查当前分支是否匹配 TEST_BRANCH 或 DRYRUN_BRANCH +if [[ "$current_branch" != "$TEST_BRANCH" && "$current_branch" != "$DRYRUN_BRANCH" ]]; then + echo "⚠️ 错误:当前分支 '$current_branch' 不符合环境变量配置要求。" + echo "请确保当前分支与 .env 文件中的 TEST_BRANCH 或 DRYRUN_BRANCH 配置一致。" + echo "TEST_BRANCH=$TEST_BRANCH" + echo "DRYRUN_BRANCH=$DRYRUN_BRANCH" + exit 1 +else + echo "✅ 当前分支 '$current_branch' 符合环境变量配置要求。" +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 文件中的变量 +export $(grep -v '^#' .env | xargs) +# 设置默认值 +STRATEGY_NAME=${STRATEGY_NAME:-TheForceV7} +CONFIG_FILE=${CONFIG_FILE:-basic.json} + +echo "Using strategy: $STRATEGY_NAME" +echo "Using config: $CONFIG_FILE" +echo "Using testBranch: $TEST_BRANCH" +# Parse command line arguments +START_DATE=${1:-$(date -d "2 days ago" +"%Y%m%d")} +END_DATE=${2:-$(date -d "tomorrow" +"%Y%m%d")} + +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 result/* || true + +hyperopt_config="${STRATEGY_NAME%.py}.json" +docker rm $(docker ps -aq) -f || true + +# 获取当前 Git Commit 的前 8 位 +GIT_COMMIT_SHORT=$(git rev-parse HEAD | cut -c 1-8) +echo "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 \ + --fee 0.0008 + --config /freqtrade/config_examples/$CONFIG_FILE \ + --strategy $STRATEGY_NAME \ + --strategy-path /freqtrade/templates" + +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 \ + --fee 0.0008 \ + --config /freqtrade/config_examples/$CONFIG_FILE \ + --strategy $STRATEGY_NAME \ + --strategy-path /freqtrade/templates