auto-sync: 2026-03-28 12:07:55

This commit is contained in:
cfdaily
2026-03-28 12:07:55 +08:00
parent 488d115213
commit fe6aa11a5f
102 changed files with 1293 additions and 2 deletions
+122
View File
@@ -0,0 +1,122 @@
#!/bin/bash
# ============================================
# 同步策略 + 全自动回测,不需要重启 Docker!
# 使用方法:
# ./sync_and_run_backtest.sh --strategy strategies.pangtong-value.strategy_A
# ============================================
set -e
# 配置信息
NAS_IP="192.168.2.154"
NAS_USER="admin"
LOCAL_PROJECT="/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live"
NAS_TARGET="/volume1/stock/sanguo_vnpy"
DOCKER_CONTAINER="sanguo_vnpy"
# 颜色
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m'
log_info() {
echo -e "${GREEN}[INFO]${NC} $1"
}
log_warn() {
echo -e "${YELLOW}[WARN]${NC} $1"
}
log_error() {
echo -e "${RED}[ERROR]${NC} $1"
}
# 解析参数
while [[ $# -gt 0 ]]; do
case $1 in
--strategy)
STRATEGY="$2"
shift
shift
;;
*)
shift
;;
esac
done
# 检查参数
if [[ -z "$STRATEGY" ]]; then
log_error "必须指定 --strategy 参数"
echo ""
echo "使用方法:"
echo " $0 --strategy strategies.pangtong-value.strategy_A"
echo ""
exit 1
fi
# 提取策略路径(用于同步)
# strategies.pangtong-value.strategy_A → strategies/pangtong-value
STRATEGY_PATH=$(echo "$STRATEGY" | tr '.' '/')
STRATEGY_PATH=$(dirname "$STRATEGY_PATH")
echo "============================================"
echo " 同步策略 + 全自动回测(无需重启 Docker"
echo "============================================"
echo ""
log_info "策略: $STRATEGY"
log_info "策略路径: $STRATEGY_PATH"
echo ""
# 第一步:同步策略代码到 NAS
log_info "1/3: 同步策略代码到 NAS"
rsync -av --delete \
"$LOCAL_PROJECT/$STRATEGY_PATH"/ \
"$NAS_USER@$NAS_IP:$NAS_TARGET/$STRATEGY_PATH"/ \
--exclude='__pycache__' \
--exclude='*.pyc' \
--exclude='.ipynb_checkpoints' \
--exclude='.DS_Store'
log_info "✅ 同步完成"
echo ""
# 第二步:在容器中运行回测
log_info "2/3: 在运行的容器中执行回测"
echo ""
ssh "$NAS_USER@$NAS_IP" "export PATH=\$PATH:/var/packages/Docker/target/usr/bin && docker exec $DOCKER_CONTAINER python /app/scripts/run_backtest_auto.py $STRATEGY"
log_info "✅ 回测执行完成"
echo ""
# 第三步:同步回测结果回本地
log_info "3/3: 同步回测结果回本地"
echo ""
# 结果目录
RESULT_PATH="$STRATEGY_PATH/backtest_results"
mkdir -p "$LOCAL_PROJECT/$RESULT_PATH"
rsync -av \
"$NAS_USER@$NAS_IP:$NAS_TARGET/$RESULT_PATH"/ \
"$LOCAL_PROJECT/$RESULT_PATH"/ \
--exclude='__pycache__'
log_info "✅ 结果同步完成"
echo ""
echo "============================================"
echo " 🎉 回测完成!"
echo "============================================"
echo ""
echo "📄 结果位置:"
echo " NAS: $NAS_TARGET/$RESULT_PATH/"
echo " 本地: $LOCAL_PROJECT/$RESULT_PATH/"
echo ""
echo "📊 直接查看结果:"
echo " cat $LOCAL_PROJECT/$RESULT_PATH/*.txt"
echo " open $LOCAL_PROJECT/$RESULT_PATH/*.png"
echo ""