8000 GitHub - guidao/emacs-ths · GitHub
[go: up one dir, main page]

Skip to content
guidaoPublic

About

No description, website, or topics provided.

Resources

Stars

7 stars

Watchers

0 watching

Forks

Repository files navigation

THS

在 Emacs 中查看 A 股、场内基金行情和场外基金净值、管理自选,以及浏览分类排行榜。基于 ETAF 构建,支持鼠标操作和快捷键。

THS 行情界面:股票列表、分时与成交量图、五档盘口及成交记录

  • 个股报价、三大指数与五档买卖盘。
  • 分时图、日 K 和成交量副图;图形界面使用 SVG,终端使用字符图。
  • 按名称或代码搜索股票、场内 ETF/LOF 和场外基金,添加、删除并保存自选。
  • 场外基金单位/累计净值走势、日增长率和历史净值;货币基金万份收益/七日年化。
  • A 股、ETF、LOF 分类排行榜,按涨幅或成交额排序,支持键盘选择和分页。
  • 最近成交记录、定时刷新和数据源自动回退。

行情来自腾讯财经、东方财富和新浪财经的公开接口,无需 API Key。THS 提供行情展示,不包含交易功能。

安装

以下配置使用 Emacs 30.1+ 内置 use-package 的 :vc 功能。需要安装 Git 和 curl,并确保 Emacs 能访问 GitHub 及行情服务。

请先安装 ETAF 0.2.1+ 及其依赖,然后将以下 THS 配置加入初始化文件:

(use-package ths
  :ensure nil
  :vc (:url "https://github.com/guidao/emacs-ths.git"
       :lisp-dir "."
       :main-file "ths.el"
       :rev :newest)
  :commands ths
  :init
  (setq ths-refresh-interval 30
        ths-data-ranking-providers '(eastmoney sina)))

THS 本身要求 Emacs 29.1+,上面的安装方式要求支持 :vc 的 use-package。

执行 M-x ths 打开界面,行情会在后台加载。使用 M-x package-vc-upgrade-all 更新通过 VC 安装的包,更新后重启 Emacs。

使用

第一行切换行情、自选股和排行榜,第二行是可点击的快捷按钮,例如“刷新 r”“搜索 /”。点击按钮与按对应快捷键执行相同操作。

按键 操作
j / k 下一只/上一只股票;排行榜中移动选中行
TAB / S-TAB 移动控件焦点
RET 激活控件;在自选股列表中打开分时图,在排行榜中打开股票详情
a 搜索并添加自选股
d 删除当前自选股
f 切换当前股票的自选状态
/ 按代码、名称或本地行业标签筛选行情列表;留空清除
s 行情列表切换涨幅排序;排行榜切换涨幅/成交额
u 排行榜循环切换 A 股/ETF/LOF
1 / 2 分时图/日 K;场外基金切换单位/累计净值,货币基金切换万份收益/七日年化
0 / 3 / 4 行情页/排行榜/自选股列表
C 配置自选股表头的列顺序、标题和宽度
n / p 下一页/上一页
r 刷新当前页面
T 切换亮色/暗色主题
g 重新适配窗口
q 退出当前窗口,保留会话和自动刷新

关闭 THS 缓冲区会停止定时刷新并取消请求。

启用 Meow 时,进入 THS 会自动切换到 meow-motion 状态,使用 THS 自身的快捷键。

窄窗口(不足 136 字符宽)一次显示一个行情区域,默认是个股详情。可通过 ths-default-section 设置默认区域:

(setq ths-default-section 'list)

可选值为 list(行情列表)、detail(个股详情,默认)、book(五档盘口)和 trades(成交记录)。打开 THS 或按 0 返回行情页时使用该默认值;修改配置后按 0 即可生效。从列表打开股票仍进入详情,宽窗口仍显示多栏布局。

默认使用暗色主题。按 T 或点击第二行的“主题 T”切换亮色,行情、排行榜、盘口及图表会一起更新,不影响当前选择和数据。窄窗口按钮显示为“主 T”。如需默认亮色,在配置中加入:

(setq ths-theme 'light)

自选股

按 4 打开独立的自选股列表,使用 j / k 选择股票,RET 打开分时图,n / p 翻页。列表中不显示图表或盘口;添加股票后仍停留在列表。

按 a 输入股票名称或部分代码,例如“茅台”“银行”“6005”。停顿后自动获取候选,按方向键选择、RET 添加。支持 Vertico,也可使用 Emacs 原生补全。

也可以直接输入六位股票代码,或带市场前缀的代码,例如 sh600519、sz000001、bj920001。在线搜索失败时仍可输入完整代码。

场内基金也通过 a 添加,例如 510300(沪市 ETF)、159915(深市 ETF)、501018(沪市 LOF)、161725(深市 LOF)。支持分时、日 K、成交量、五档盘口和最近成交记录;基金价格显示三位小数,接口缺失的数据显示为不可用。这里使用场内交易价格。

场外基金同样按 a 搜索名称或代码,选择标注“场外基金”的候选;也可以直接输入 of005827。of 前缀区分场外基金与同代码股票,例如 of000001 和 sz000001 可同时自选,六位代码直接输入仍按场内证券识别。

场外基金使用天天基金公布数据,显示四位小数、净值日期及最近 120 期走势;右侧显示基金信息和历史净值。按 1/2 切换单位/累计净值,货币基金则切换万份收益/七日年化。日增长率采用接口公布值,不根据分红前后净值简单相除。场外基金没有分时、日 K、盘口或成交量;数据是每日公布值,不是盘中估值,QDII 等基金的公布日期可能滞后。自动刷新每 15 分钟检查一次场外数据,r 可立即刷新,失败时保留上次数据。

自选默认保存在 user-emacs-directory 下的 ths-watchlist.json,每次增删立即保存。删除自选不会从当前会话的“全部”列表中移除股票。

配置表头

按 C 或点击“表头 C”打开 ths-watchlist-columns 的 Customize 页面,可增删列、调整顺序、修改标题和宽度;“应用”立即更新界面,“应用并保存”可保留配置。也可以在 THS 加载后使用:

(setopt ths-watchlist-columns
        '((:code "代码" 8)
          (:name "名称" 10)
          (:price "最新" 9)
          (:change "涨跌幅" 9)
          (:volume "成交量" 12)
          (:float-cap "流通市值" 13)))

每列为 (字段 标题 宽度),宽度按字符格计算,含一格间隔。支持 :code、:name、:price、:change、:volume、:float-cap、:amount、:turnover、:open、:high、:low、:close、:time。窗口放不下时,从右侧隐藏列并提示隐藏数量;可把重要列前移、缩小列宽或加宽窗口。

成交量统一显示为手,流通市值显示为万/亿元。腾讯和东方财富报价提供这两个字段;新浪报价提供成交量,不提供流通市值,缺失时显示 --。场外基金不具有这些交易数据。

排行榜

按 3 打开排行榜,点击第三行的「A股」「ETF」「LOF」或按 u 切换类别,按 s 切换涨幅榜和成交额榜。第二行保留快捷按钮。切换类别时保留排序方式,每个类别和排序组合会记住页码、可见段及选中项;回车打开对应股票或基金的行情。

类别筛选和排序由数据源服务端完成,与自选和行情列表筛选无关。三类榜单独立缓存,不混合股票、基金或指数。

表格按窗口宽度展示最新价、涨跌幅、成交量、成交额、流通市值、60 日涨跌幅和换手率。基金价格保留三位小数;基金窄屏优先展示价格和当前排序字段。接口每页 20 条;窗口较矮时分段显示,n / p 和 j / k 可以连续翻页,无需滚动。

默认先请求东方财富,失败后尝试备用节点和新浪。异常空榜也会触发回退。页面显示实际数据源;新浪暂不提供 60 日涨跌幅,该列显示 --。

图表与布局

分时图和日 K 下方均显示成交量,与价格共用时间轴。日 K 使用不复权价格;分时图的黄色线为分钟价格的累计算术平均,不是成交量加权均价。

建议使用图形版 Emacs 并启用 SVG 支持。窗口达到 136 列时展示股票列表、图表和盘口三栏;较窄窗口默认显示个股详情。高度充足时,盘口下方显示最近成交记录。界面随窗口和文字缩放调整,最低需要 44 列、20 行。

配置

在 use-package ths 的 :init 中设置选项,例如:

(setq ths-data-providers '(tencent eastmoney sina)
      ths-data-ranking-providers '(sina eastmoney)
      ths-data-symbols '("sh600519" "sz000001" "sz300750")
      ths-refresh-interval 30
      ths-data-timeout 10)
变量 默认值 说明
ths-data-providers (tencent eastmoney sina) 个股报价来源顺序;图表跳过新浪
ths-data-ranking-providers (eastmoney sina) 排行榜来源顺序,独立于个股报价
ths-data-symbols 内置 8 支股票 初始行情列表,代码必须包含 sh、sz 或 bj 前缀
ths-refresh-interval 30 自动刷新间隔,单位秒,最短 5 秒;nil 关闭自动刷新
ths-data-timeout 10 每次 HTTP 请求的超时秒数
ths-auto-fetch t 是否自动获取数据;nil 时仍可按 r 刷新
ths-data-curl-program "curl" curl 命令名或绝对路径
ths-watchlist-file user-emacs-directory 下的 ths-watchlist.json 自选保存位置;nil 表示仅保留在当前会话

更改来源顺序后按 r 生效。更改初始股票、自动刷新或自选文件设置后,关闭 THS 缓冲区并重新执行 M-x ths。

数据来源

数据 来源 说明
股票、场内基金、指数报价与五档盘口 腾讯、东方财富、新浪 按配置顺序回退
分时与日 K 腾讯、东方财富 包含成交量;日 K 不复权
分类排行 东方财富、新浪 A 股/ETF/LOF,按涨幅或成交额降序
最近成交记录 东方财富 最近最多 12 条快照,不累计完整成交历史
自选搜索 东方财富 按名称或代码检索沪深京 A 股及场内 ETF、LOF

价格和成交额统一为元,成交量统一为手(股票 100 股、基金 100 份),流通市值按万/亿元展示。缺失字段显示 --;请求失败时保留同一证券或同类别榜单的上次成功数据并标记错误,不生成替代行情。

公开接口可能限流或变更。非交易时段可能返回上一交易日数据,“采集时间”表示接收数据的时间。成交记录属于分时成交快照,不是完整的 Level-2 逐笔流。

接口字段参考 AKShare 和 efinance 的公开实现。

开发

确认 ETAF 及其依赖已安装,再检出 THS 源码:

git clone https://github.com/guidao/emacs-ths.git
cd emacs-ths
make check

以上源码检出用于开发和测试;日常安装使用前面的 use-package :vc 配置。

命令 作用
make check 严格字节编译和离线 ERT 测试
make run 从当前源码启动干净的 Emacs 并打开 THS
make live-check 检查真实行情接口,需要网络;任一检查失败返回非零状态

仓库不附带依赖源码。Makefile 通过 package-initialize 加载用户已安装的依赖,不读取用户的初始化文件,也不自动安装依赖;THS 使用当前检出的源码。可通过 EMACS 指定 Emacs 可执行文件,通过 LOAD 覆盖加载参数。离线测试使用独立样本和临时自选文件,不读取或修改个人自选。

图形布局测试位于 tests/ths-gui-tests.el:在图形版 Emacs 中加载该文件,再执行 M-x ert RET ths-gui-chart-geometry RET。

主要模块:

文件 职责
ths.el 界面、状态与交互
ths-data.el 数据源、异步请求、解析与失败回退
ths-chart.el SVG 与字符图表
ths-watchlist.el 自选股持久化
ths-search.el 异步搜索与补全

欢迎提交 Issue 和 Pull Request。报告问题时请附 Emacs 版本、图形/终端环境、复现步骤,以及页面显示的错误;界面问题可附截图和窗口尺寸。

许可证

GPL-3.0-or-later。

About

No description, website, or topics provided.

Resources

Stars

7 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

0