#!/bin/bash # 检查 .env 文件 if [ ! -f ".env" ]; then echo "⚠️ 本地缺少 .env 文件,请创建并配置。示例内容如下:" echo "" echo "STRATEGY_NAME=FreqaiPrimer" echo "CONFIG_FILE=FreqaiPrimer.json" echo "TEST_BRANCH=freqaiprimer-deviation-test" echo "DRYRUN_BRANCH=freqaiprimer-deviation-dryrun" echo "" exit 1 fi # 加载 .env 文件中的变量 export $(grep -v '^#' .env | xargs) # 设置默认值 STRATEGY_NAME=${STRATEGY_NAME:-FreqaiPrimer} CONFIG_FILE=${CONFIG_FILE:-FreqaiPrimer.json} PARAMS_NAME=$(echo "$STRATEGY_NAME" | tr '[:upper:]' '[:lower:]') 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")} # Parse command line arguments START_DATE_RAW=${1:-$(date -d "2 days ago" +"%Y-%m-%d %H:%M:%S")} END_DATE_RAW=${2:-$(date -d "tomorrow" +"%Y-%m-%d %H:%M:%S")} # Parse command line arguments START_DATE_RAW=${1:-$(date -d "2 days ago" +"%Y-%m-%d 00:00")} END_DATE_RAW=${2:-$(date -d "today" +"%Y-%m-%d 00:00")} # Convert raw date strings to timestamps if [[ "$START_DATE_RAW" == *" "* ]]; then START_DATE=$(date -d "$START_DATE_RAW" +"%s") else START_DATE=$(date -d "${START_DATE_RAW} 00:00:00" +"%s") fi if [[ "$END_DATE_RAW" == *" "* ]]; then END_DATE=$(date -d "$END_DATE_RAW" +"%s") else END_DATE=$(date -d "${END_DATE_RAW} 00:00:00" +"%s") fi echo "Start timestamp: $START_TIMESTAMP" echo "End timestamp: $END_TIMESTAMP" cd ../ source .venv/bin/activate rm -rf user_data/models/* rm -rf ./freqtrade/user_data/data/backtest_results/* rm -fr ./user_data/dryrun_results/* #docker-compose -f docker-compose_backtest.yml run --rm freqtrade >output.log 2>&1 echo "docker-compose run --rm freqtrade hyperopt \ --logfile /freqtrade/user_data/logs/freqtrade.log \ --freqaimodel LightGBMRegressorMultiTarget \ --strategy $STRATEGY_NAME \ --config /freqtrade/config_examples/$CONFIG_FILE \ --config /freqtrade/templates/${PARAMS_NAME}.json \ --strategy-path /freqtrade/templates \ --timerange ${START_DATE}-${END_DATE} \ -e 100 \ --hyperopt-loss ShortTradeDurHyperOptLoss \ --spaces buy sell trailing \ --fee 0.0016" docker-compose run --rm freqtrade hyperopt \ --logfile /freqtrade/user_data/logs/freqtrade.log \ --freqaimodel LightGBMRegressorMultiTarget \ --strategy $STRATEGY_NAME \ --config /freqtrade/config_examples/$CONFIG_FILE \ --config /freqtrade/templates/${PARAMS_NAME}.json \ --strategy-path /freqtrade/templates \ --timerange ${START_DATE}-${END_DATE} \ -e 100 \ --hyperopt-loss SharpeHyperOptLoss \ --spaces buy sell trailing \ --fee 0.0016 #>output.log 2>&1 #sed -i 's/\x1B\[[0-9;]*m//g' output.log #python3 tools/filter.py # rm ./result/*.json -fr # rm ./result/*.py -fr # mv ./user_data/backtest_results/* ./result/ # # cd ./result # # 查找当前目录下的所有 zip 文件 # zip_files=(*.zip) # # # 检查是否只有一个 zip 文件 # if [ ${#zip_files[@]} -eq 1 ]; then # # 解压缩该 zip 文件到当前目录 # unzip "${zip_files[0]}" # rm *.zip # rm *.feather # else # echo "当前目录下没有 zip 文件或者有多个 zip 文件,无法操作。" # fi # # cd - # sed -i 's/\x1B\[[0-9;]*m//g' output.log # #python3 ../filter.py # cp output.log result/ -f # cd tools/ # python tradestocsv.py # python analytic.py >../result/analytic.log # cd ../