tradusai/run_analysis.sh
2025-12-02 22:54:03 +08:00

116 lines
3.3 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
# 运行量化+LLM分析可控制Gate
#
# 用法:
# ./run_analysis.sh # 使用Gate智能过滤
# ./run_analysis.sh --no-gate # 强制调用LLM绕过Gate
# ./run_analysis.sh --help # 显示帮助
set -e
# 颜色定义
GREEN='\033[0;32m'
BLUE='\033[0;34m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
# 显示帮助
show_help() {
echo "📊 交易信号分析工具"
echo ""
echo "用法:"
echo " ./run_analysis.sh [选项]"
echo ""
echo "选项:"
echo " --no-gate, -n 强制调用LLM绕过Gate每次都分析"
echo " --gate, -g 使用Gate默认智能过滤低质量信号"
echo " --help, -h 显示此帮助信息"
echo ""
echo "示例:"
echo " ./run_analysis.sh # 智能模式(推荐)"
echo " ./run_analysis.sh --no-gate # 强制LLM分析"
echo ""
echo "说明:"
echo " • Gate模式: 只有综合得分≥5.0的信号才会调用LLM节省成本"
echo " • No-Gate模式: 每次都调用LLM适合测试或重要行情"
exit 0
}
# 解析参数
USE_GATE=true
if [ $# -gt 0 ]; then
case "$1" in
--no-gate|-n)
USE_GATE=false
;;
--gate|-g)
USE_GATE=true
;;
--help|-h)
show_help
;;
*)
echo "❌ 未知参数: $1"
echo "使用 --help 查看帮助"
exit 1
;;
esac
fi
# 显示运行模式
echo -e "${BLUE}🚀 开始生成交易信号...${NC}"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
if [ "$USE_GATE" = false ]; then
echo -e "${YELLOW}⚠️ 模式: 强制LLM分析绕过Gate${NC}"
echo " 每次都会调用 DeepSeek AI"
else
echo -e "${GREEN}✅ 模式: 智能Gate推荐${NC}"
echo " 只有高质量信号才会调用 LLM"
fi
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo ""
# 检查 scheduler 容器是否运行
if ! docker compose ps scheduler 2>/dev/null | grep -q "running"; then
echo -e "${YELLOW}⚠️ scheduler 容器未运行,正在启动...${NC}"
docker compose --profile scheduler up -d
echo "⏳ 等待服务就绪..."
sleep 5
fi
# 运行分析
if [ "$USE_GATE" = false ]; then
# 绕过Gate临时设置极低阈值
docker compose exec scheduler python -c "
import os
os.environ['LLM_MIN_COMPOSITE_SCORE'] = '0.0' # 绕过Gate
# 运行分析
import sys
sys.path.insert(0, '/app')
from scripts.generate_trading_signal import main
main()
"
else
# 正常使用Gate
docker compose exec scheduler python /app/scripts/generate_trading_signal.py
fi
echo ""
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo -e "${GREEN}✅ 信号生成完成!${NC}"
echo ""
echo "📊 查看结果:"
echo " ./view_signal.sh"
echo " cat output/latest_signal.json | python -m json.tool"
echo ""
echo "📱 钉钉通知:"
if docker compose logs scheduler --tail 20 | grep -q "钉钉消息发送成功"; then
echo -e " ${GREEN}✅ 已发送${NC}"
else
echo -e " ${YELLOW}⚠️ 未发送可能是HOLD信号${NC}"
fi