11 KiB
11 KiB
股票投资分析系统 - 运行指南
快速启动
本地开发
cd /Users/freedak/Documents/go-new/stock/stock-html
# 激活虚拟环境
source venv/bin/activate
# 启动服务
python app.py
服务器部署
主服务器(原有)
- 服务器地址:43.135.128.39(腾讯云)
- 登录用户:ubuntu(需sudo)
- 部署路径:/opt/stock-app
- 外部访问:http://43.135.128.39:3333
新服务器(stock.allbyai.cn)
- 服务器地址:152.136.182.184(腾讯云)
- 登录用户:ubuntu(需sudo)
- 部署路径:/opt/stock-app
- 域名访问:http://stock.allbyai.cn
- IP直连:http://152.136.182.184:3333
同步代码到服务器
注意:本地修改代码后请执行下方同步并重启,使服务器生效。
# 同步全部代码(推荐)
cd /Users/freedak/Documents/go-new/stock/stock-html
rsync -avz ./ ubuntu@43.135.128.39:/opt/stock-app/ \
--exclude='.git' \
--exclude='venv' \
--exclude='__pycache__' \
--exclude='stock_data_cache' \
--exclude='*.pyc' \
--exclude='.DS_Store' \
--exclude='stock_names.json' \
--exclude='alerts_cache.json' \
--exclude='trades.json' \
--exclude='watchlist.json' \
--exclude='*.log' \
--exclude='.playwright-mcp' \
--exclude='/app.js' \
--exclude='/index.html' \
--exclude='/main.css' \
--exclude='/css' \
--exclude='/js' \
--exclude='/.windsurfrules'
# 仅同步前端
rsync -avz templates/ ubuntu@43.135.128.39:/opt/stock-app/templates/
rsync -avz static/ ubuntu@43.135.128.39:/opt/stock-app/static/
# 仅同步后端
rsync -avz app.py routes/ services/ ubuntu@43.135.128.39:/opt/stock-app/
# 重启服务
ssh ubuntu@43.135.128.39 "systemctl restart stock-app"
# ========== 新服务器 stock.allbyai.cn ==========
# 同步全部代码到新服务器
cd /Users/freedak/Documents/go-new/stock/stock-html
rsync -avz ./ ubuntu@152.136.182.184:/opt/stock-app/ \
--exclude='.git' \
--exclude='venv' \
--exclude='__pycache__' \
--exclude='stock_data_cache' \
--exclude='*.pyc' \
--exclude='.DS_Store' \
--exclude='stock_names.json' \
--exclude='alerts_cache.json' \
--exclude='trades.json' \
--exclude='watchlist.json' \
--exclude='*.log' \
--exclude='.playwright-mcp' \
--exclude='/app.js' \
--exclude='/index.html' \
--exclude='/main.css' \
--exclude='/css' \
--exclude='/js' \
--exclude='/.windsurfrules'
# 重启新服务器服务
ssh ubuntu@152.136.182.184 "systemctl restart stock-app"
# 或使用一键脚本
./deploy/sync-to-new-server.sh
服务管理
# Web应用服务
ssh ubuntu@43.135.128.39 "systemctl start stock-app"
ssh ubuntu@43.135.128.39 "systemctl stop stock-app"
ssh ubuntu@43.135.128.39 "systemctl restart stock-app"
ssh ubuntu@43.135.128.39 "systemctl status stock-app"
ssh ubuntu@43.135.128.39 "journalctl -u stock-app -f"
# 数据采集服务
ssh ubuntu@43.135.128.39 "systemctl start stock-data-service"
ssh ubuntu@43.135.128.39 "systemctl stop stock-data-service"
ssh ubuntu@43.135.128.39 "systemctl status stock-data-service"
ssh ubuntu@43.135.128.39 "journalctl -u stock-data-service -f"
# ========== 新服务器 stock.allbyai.cn ==========
# Web应用服务
ssh ubuntu@152.136.182.184 "systemctl start stock-app"
ssh ubuntu@152.136.182.184 "systemctl stop stock-app"
ssh ubuntu@152.136.182.184 "systemctl restart stock-app"
ssh ubuntu@152.136.182.184 "systemctl status stock-app"
ssh ubuntu@152.136.182.184 "journalctl -u stock-app -f"
# 数据采集服务
ssh ubuntu@152.136.182.184 "systemctl start stock-data-service"
ssh ubuntu@152.136.182.184 "systemctl stop stock-data-service"
ssh ubuntu@152.136.182.184 "systemctl status stock-data-service"
ssh ubuntu@152.136.182.184 "journalctl -u stock-data-service -f"
项目结构
stock-html/
├── app.py # Flask后端主程序
├── config.py # 配置文件(支持环境变量)
├── db.py # 数据库操作层
├── requirements.txt # Python依赖
├── start.sh # 启动脚本
├── stock_data_service.py # 数据采集服务(定时任务)
├── full_signal_scan.py # 全市场信号扫描脚本
├── sync_fund_flow.py # 资金流向全市场采集脚本
├── auto_sync_fund_flow.sh # 资金流向采集定时任务
├── routes/ # API路由
│ ├── analysis.py # 分析/扫描/信号相关API
│ ├── auth.py # 认证API
│ ├── market.py # 市场数据API
│ ├── sim_trade.py # 模拟交易API
│ ├── trades.py # 交易记录API
│ └── watchlist.py # 关注列表API
├── services/ # 业务服务
│ ├── signal_detector.py # 7种技术信号检测器
│ ├── technical_indicators.py # 技术指标计算
│ ├── scheduler.py # 自动交易调度器
│ ├── stock_service.py # 股票数据服务
│ ├── mairui_api.py # 迈瑞API
│ └── doubao_api.py # 豆包AI分析
├── templates/
│ └── index.html # 前端页面(Vue.js)
├── static/
│ ├── css/main.css # 样式
│ └── js/app.js # Vue.js应用
└── stock-data-service.service # systemd服务配置
systemd 服务
stock-app.service (Web应用)
路径:/etc/systemd/system/stock-app.service
端口:3333
stock-data-service.service (数据采集)
路径:/etc/systemd/system/stock-data-service.service
功能:定时采集实时价格数据
全景扫描定时任务 (crontab)
应用内没有自动配置全景扫描的定时任务,需在服务器上添加 crontab。当前配置每天两次扫描:
| 时间 | 说明 |
|---|---|
| 11:50 | 午休扫描 — 上午收盘20分钟后,确保数据API更新完毕,供下午交易参考 |
| 16:30 | 收盘扫描 — 收盘1.5小时后,确保全天K线数据完整更新 |
为什么留缓冲时间? A股上午 11:30 收盘、下午 15:00 收盘。数据API更新需要一定时间,11:50 和 16:30 给予充分缓冲确保数据完整性。
方式一:一键配置(推荐)
在本地 stock-html 目录下执行(会同步 auto_scan.sh、在服务器上添加 crontab):
cd /path/to/stock-html
./setup_cron_scan.sh
如需指定服务器或目录:STOCK_SERVER=root@你的IP STOCK_APP_DIR=/opt/stock-app ./setup_cron_scan.sh
方式二:在服务器上手动配置
ssh ubuntu@43.135.128.39
chmod +x /opt/stock-app/auto_scan.sh
crontab -e
# 添加两行:
50 11 * * 1-5 /opt/stock-app/auto_scan.sh >> /opt/stock-app/auto_scan.log 2>&1
30 16 * * 1-5 /opt/stock-app/auto_scan.sh >> /opt/stock-app/auto_scan.log 2>&1
# 5分钟K线采集(17:30,收盘后数据完整)
30 17 * * 1-5 /opt/stock-app/auto_sync_kline_5min.sh >> /opt/stock-app/sync_kline_5min.log 2>&1
# 资金流向采集(18:00,在K线采集之后)
0 18 * * 1-5 /opt/stock-app/auto_sync_fund_flow.sh >> /opt/stock-app/sync_fund_flow.log 2>&1
验证与排查
# 查看当前 crontab
ssh ubuntu@43.135.128.39 "crontab -l"
# 手动执行一次测试
ssh ubuntu@43.135.128.39 "/opt/stock-app/auto_scan.sh"
# 查看扫描日志
ssh ubuntu@43.135.128.39 "tail -50 /opt/stock-app/auto_scan.log"
- 未配置 crontab 时:前端「全景扫描」按钮仅查看已有缓存结果,不会触发新扫描。需手动在服务器执行
FORCE_RESCAN=1 python full_signal_scan.py或配置 crontab。
API接口
| 接口 | 方法 | 说明 |
|---|---|---|
/api/health |
GET | 健康检查 |
/api/signal_alerts |
POST | 信号分析提醒(新模型) |
/api/tech_signals/<code> |
GET | 单只股票7种信号检测 |
/api/batch_tech_signals |
POST | 批量信号检测 |
/api/start_full_scan |
POST | 启动全市场扫描 |
/api/scan_status |
GET | 扫描进度查询 |
/api/scan_results |
GET | 扫描结果查询 |
/api/scan_strategy |
GET | 策略建议 |
/api/realtime_price/<code> |
GET | 获取实时价格 |
/api/trades |
GET/POST | 交易记录 |
/api/watchlist |
GET/POST/DELETE | 关注列表 |
/api/alerts_cache |
GET/POST | 分析缓存 |
/api/fundamental/<code> |
GET | 基本面数据 |
/api/kline/<code> |
GET | K线数据 |
核心算法(交易信号实战体系)
7种技术信号
- ★主升浪 - 最稳最猛(利润核心阶段)
- 日线底背离 - 最安全抄底(反转前置信号)
- 龙抬头 - 最佳入场点(实操核心买点)
- 真龙 - 趋势确认(中期行情定局信号)
- 短底背离 - 辅助参考
- 老鼠仓 - 辅助参考
- 反弹 - 辅助参考
最强战法
- 日线底背离出现 → 纳入关注
- 龙抬头出现 → 执行买入
- 真龙/主升浪出现 → 持有加仓
- MACD死叉+主升浪消失 → 卖出
常用命令
# 一键同步全部代码并重启(已排除根目录重复项,仅同步 templates/ static/ 等正确路径)
cd /Users/freedak/Documents/go-new/stock/stock-html && \
rsync -avz ./ ubuntu@43.135.128.39:/opt/stock-app/ \
--exclude='.git' --exclude='venv' --exclude='__pycache__' --exclude='stock_data_cache' \
--exclude='*.pyc' --exclude='.DS_Store' --exclude='*.log' \
--exclude='stock_names.json' --exclude='alerts_cache.json' \
--exclude='.playwright-mcp' \
--exclude='/app.js' --exclude='/index.html' --exclude='/main.css' \
--exclude='/css' --exclude='/js' --exclude='/.windsurfrules' && \
ssh ubuntu@43.135.128.39 "systemctl restart stock-app && echo '服务已重启'"
# 仅同步前端并重启
rsync -avz templates/ static/ ubuntu@43.135.128.39:/opt/stock-app/ && \
ssh ubuntu@43.135.128.39 "systemctl restart stock-app"
# 查看两个服务状态
ssh ubuntu@43.135.128.39 "systemctl status stock-app stock-data-service"
# ========== 新服务器 stock.allbyai.cn 快捷命令 ==========
# 一键同步并重启(推荐)
cd /Users/freedak/Documents/go-new/stock/stock-html && \
rsync -avz ./ ubuntu@152.136.182.184:/opt/stock-app/ \
--exclude='.git' --exclude='venv' --exclude='__pycache__' --exclude='stock_data_cache' \
--exclude='*.pyc' --exclude='.DS_Store' --exclude='*.log' \
--exclude='stock_names.json' --exclude='alerts_cache.json' \
--exclude='.playwright-mcp' \
--exclude='/app.js' --exclude='/index.html' --exclude='/main.css' \
--exclude='/css' --exclude='/js' --exclude='/.windsurfrules' && \
ssh ubuntu@152.136.182.184 "systemctl restart stock-app && echo '服务已重启'"
# 或使用脚本
./deploy/sync-to-new-server.sh
# 查看服务状态
ssh ubuntu@152.136.182.184 "systemctl status stock-app stock-data-service"
最后更新:2026-03-02