← 返回文档中心 · 来源:本地项目(暂未单独开源) · 同步于 2026-10-02

定位:随身盯盘终端(代替手机)。只做界面,行情/预测/荐股/AI 全部复用 stock-analyzer 的 stock_predict.py(与 stock_gui.py 同源),不复制算法。

  • 自适应 240x320 竖屏 / 320x240 横屏(自动检测;--size 可桌面预览)
  • 触控优先:大按钮、拖动滚动、长按菜单、数字键盘;无鼠标也能全流程操作
  • 屏幕尽头的导航:自选 / 荐股 / AI / 设置
  • 后端缺失时降级:无网显示缓存/–;无 numpy 时荐股给出兜底入口

自选页

项目结构

stock_pi_mobile/
├── mobile_gui.py   # 入口 + App(页面组装 / 生命周期 / 后台任务泵)
├── widgets.py      # 触摸控件 Btn / VScroll / 弹窗 / 字体
├── helpers.py      # 后端加载 / 格式化 / WiFi(nmcli)
├── make_picks.py   # 电脑端生成荐股快照
├── start_mobile.sh # Pi 上循环守护启动
├── stock_predict.py / stock_cache.db / stock_gui.ini  # 后端(从 stock-analyzer 取)
└── stock_mobile.ini / picks_cache.json                # 本机配置与快照

触屏要点(widgets.py):

  • 按钮按下高亮、拖出取消、松手坐标 ±8px 容差(电阻屏抖动)
  • 列表拖动 ≥5px 判定为滚动;滚动中不触发行的点按/长按
  • 长按 550ms 弹菜单;拖动会取消长按;松手带惯性滑动
  • 网络/数据库重活全部走后台线程(详情 K 线、AI 上下文、行情、扫描)

功能

屏 内容
自选 6 格指数条(5指数+自选均涨)、自选行情(30秒自动刷新)、加自选/长按置顶与删除
详情 迷你K线+MA20+T+1预测区间、建议/量能/大盘/板块/策略/信号/回测,完整分析、AI问、自选开关
荐股 稳健/均衡/激进三档切换、闸门状态、手数/金额/评分、AI选档;优先读 picks_cache.json 快照(小内存设备推荐),算力够时可本地重算
AI DeepSeek/OpenAI 兼容多轮问答,自动带大盘+自选+当前个股上下文,预设问题一键问
设置 API Key/模型/接口、荐股资金/偏好/标的池/默认档、网络/WiFi、刷新代码表、补自选K线、清空会话、红涨绿跌
WiFi 当前 SSID/IP/信号、扫描列表点选连接、密码输入、一键连预设、断开、手动连接、设静态IP/恢复DHCP

部署到树莓派

  1. 把本仓库放到 Pi(git clone 或整体拷贝),再从 stock-analyzer 取后端三件套 放到同目录(或任意目录用 --backend 指定):
    stock_predict.py      # 算法(唯一生成物,勿手改;保持与开发机同版本)
    stock_cache.db        # 日K缓存
    stock_gui.ini         # 可选:后端配置(API Key 等)
    

    界面三文件(mobile_gui.py / widgets.py / helpers.py)需一起更新, 缺一不可;rsync 时注意别覆盖 Pi 上的 stock_mobile.ini 与 picks_cache.json。 如果从开发机拷 stock_gui.ini,记得清掉 [proxy] url(开发机代理 在 Pi 上不存在,会导致行情全部失败,界面显示 --)。

  2. 系统依赖:
    sudo apt install python3-tk fonts-wqy-zenhei
    sudo apt install python3-numpy        # 三档引擎(armv6 用 apt 版,别 pip 编译)
    

    armv6 小内存设备(Pi Zero 427MB)即使装了 numpy 也跑不动三档引擎 (面板要 1GB+ 内存),用下面的「荐股快照」方案;其它功能不受影响。

  3. 先自检:
    python3 mobile_gui.py --check
    
  4. 运行(小屏自动全屏):
    ./start_mobile.sh          # 循环守护 + 日志 /tmp/stock_mobile.log
    

    或直接 python3 mobile_gui.py --fullscreen --nocursor

开机自启(参考)

~/.bash_profile(tty1 自动起 X):

if [ -z "$SSH_CLIENT" ] && [ "$(tty)" = "/dev/tty1" ]; then
  export FRAMEBUFFER=/dev/fb1
  while :; do startx -- -nocursor vt1; sleep 3; done
fi

~/.config/openbox/autostart 里追加:

~/stock_pi_mobile/start_mobile.sh &

文字输入

  • 股票代码:数字键盘弹窗(含退格/确定)
  • 文本输入(WiFi 密码/SSID、AI 模型、API Key 等):输入框自带触摸键盘 (数字 + 字母 + .-_,⇧ 大小写、空格、退格、清空、取消/保存)
  • 也可接 USB 键盘,或在电脑上改好 stock_mobile.ini 再拷过去

桌面预览(开发用)

python3 mobile_gui.py --size 240x320          # 竖屏预览窗
python3 mobile_gui.py --size 320x240 --tab picks
python3 mobile_gui.py --screenshot /tmp/s.png --shot-delay 5000   # 截图后退出

荐股快照(小内存设备推荐)

Pi Zero/armv6 跑不动三档引擎,用「电脑算、终端看」:

# 电脑上(装了 numpy 的机器,数据库同目录)
python3 make_picks.py --backend ~/stock_predict
# 生成 picks_cache.json(三档全量),拷到终端 stock_pi_mobile/ 下
rsync -a picks_cache.json pi@<树莓派IP>:~/stock_pi_mobile/

终端打开「荐股」会直接秒读快照,右上角标注 快照 时间 · topN; 点档位切换即时显示;点【刷新】重新读快照文件(rsync 后无需重启)。 本机算力足够时(内存 ≥450MB 且有 numpy),长按/强制刷新可直接本地重算。

WiFi / 网络(树莓派)

基于 nmcli(NetworkManager,Raspberry Pi OS Bookworm / Ubuntu 默认自带)。 设置 → 网络 → WiFi 进入:

  • 扫描:列出附近网络(信号/加密/已保存/预设标记),点选即连;加密网络弹密码, 已保存过的网络点一下就自动重连
  • 一键连预设:连接 stock_mobile.ini [wifi] 里预设的 ssid/password(默认空, 在设置里点【预设】行可改,或在 WiFi 页手动连一次后把参数填进 ini)
  • 手动连接:输入 SSID + 密码(适合隐藏网络)
  • 设静态IP / 恢复DHCP:对当前连接的 WiFi 生效;应用时网络会短暂中断
  • 启动时若未连网且预设 SSID 在扫描列表里,会自动连接一次(--no-wifi-auto 关闭)

配置示例(stock_mobile.ini,默认留空):

[wifi]
ssid =
password =
static_ip =
gateway =

注意:WiFi 密码以明文存在 stock_mobile.ini,请勿把该文件分享出去。 SSID 大小写不一致时(如 lan / LAN)连接会自动按扫描结果纠正。 WPA/WPA2 密码至少 8 位;少于 8 位 nmcli 会拒绝。

配置

首次运行自动生成 stock_mobile.ini(自选/键值/AI 参数/荐股参数/WiFi)。 自选默认从后端 stock_gui.ini [watchlist] 继承。

后端查找顺序:--backend DIR > 环境变量 STOCK_BACKEND > 本目录 > ~/stock_predict > ~/ai-quant/scripts/cli;也可在 stock_mobile.ini [backend] dir 固定。

注意

  • 荐股价格/手数沿用三档引擎口径(乘法前复权),与桌面客户端一致。
  • 数据源依赖腾讯/东财等公开接口;盘中需联网,盘后看缓存。
  • 仅统计参考,不构成投资建议。