快速开始
默认以 Desktop Shell + Web UI 启动(主界面、托盘与悬浮窗)。默认配置即可使用,无需先改设置。按下面步骤操作:
- 启动同花顺官方最新版客户端,保持至少一个窗口打开(默认内存读码不支持第三方客户端)。
- 启动同花顺助手(本软件)。
- 在顶部导航打开「监控」页,从左侧选中同花顺安装路径;在右侧勾选「监听」「发送」和/或「买卖条」。
- 点击窗口底部状态栏「启动」(运行中可点「重新启动」)。
初始化状态:首次启动且暂未检测到同花顺实例时,界面会给出联动引导。
软件内可随时点击「检查环境」、设置页「快速上手」,或托盘菜单复查步骤是否就绪。
我想…
按目标查找操作位置,仅在需要时修改对应设置。
| 我想… | 怎么做 |
|---|---|
| 在软件里看到当前选中的股票 | 「监控」→ 勾选「监听」→ 状态栏点「启动」。默认即可,无需改设置。 |
| 从本软件向同花顺发送股票代码 | 勾选「发送」→ 在「监控」页填写代码并发送;或启用 WebSocket 后由外部程序调用(见 WebSocket)。 |
| 让外部程序接收股票变化 / 跳转个股 | 「设置 → 实时推送」勾选「启用实时推送」→ 点「启动」→ 见 WebSocket 说明。未配置 http_api_key 时可无 token 连接;配置后见 接口鉴权。 |
| 读写自选股、调用 HTTP 接口 | 「设置 → HTTP 接口」勾选启用 →(可选)配置 http_api_key(见 鉴权)→ 见 HTTP 说明。写入自选股在实例「自选股」页配置云端账号。Pro 功能。 |
| 查询板块 / 热点主题 / 匹配个股所属板块 | 「订阅」激活 Pro 后,选中实例打开「板块」标签:可刷新缓存、导出 JSON、查看「匹配板块」。也可经 HTTP / WebSocket 查询(见 板块接口)。完整字段见仓库 docs/同花顺板块列表接口.md、docs/同花顺热点主题接口.md。 |
| 向自定义板块添加成分股 | 先在同花顺客户端新建自定义板块(至少含 1 只股票),再在「板块」标签点「添加成分股…」,或调用 HTTP / WS add_stocks。仅支持已有板块追加/覆盖成分,不支持新建 / 删除 / 重命名。写入后请在同花顺中刷新或重启后再查看。 |
| 与通达信自定义板块双向同步 | 「板块」→「通达信同步」:填写通达信目录、配置名称映射后整表覆盖同步板块;亦支持「我的自选」与通达信自选股双向整表同步。亦可调用 通达信板块接口。 |
| 显示买卖悬浮条 / 下单窗 | 实例勾选「买卖条」,或托盘「显示买卖条」。买入/卖出打开独立置顶悬浮窗,主窗在托盘时仍可下单。详见 托盘与悬浮窗。 |
| 查看交易日历 | 顶部导航「日历」页;亦可经 HTTP /calendar/month、/calendar/day 查询。 |
| 导出短线精灵配置 | 选中实例 →「配置管理」标签 → 导出 Excel 或 JSON。也可经 HTTP /short-genius/* 或 WebSocket short_genius 只读查询。 |
| 查询 A 股静态股票列表 | 启用 HTTP / WebSocket 后调用 /ths-stock-list 或 ths_stock_list(无需单独板块授权)。详见 docs/同花顺股票列表接口.md。 |
| 调整股票读取速度 / 方式 | 「设置 → 基本配置」或实例「股票代码获取」:间隔默认 0.3 秒;连接类型默认「内存」,可改「日志」。 |
| 修改 WebSocket / HTTP 端口 | 「设置 → 实时推送 / HTTP 接口」→ 启用后修改端口并复制链接地址。 |
| 配置自选股云端写入账号 | 「监控」选中实例 →「自选股」→ 填写账号或 Cookie 并探测;依赖缺失时到「设置 → 自选股依赖」安装。 |
| 设置风控关闭密码 | 「设置 → 风控密码」。 |
| 开机自动打开本软件 | 「设置 → 基本配置」→ 勾选开机自启。 |
| 激活 Pro(HTTP / 交易 / 板块等) | 「订阅」页输入激活码或 Mock 购买。WebSocket 股票推送/改码在源码侧为免费能力,仍须在设置中启用并启动。 |
| 同目录开了多个同花顺窗口,代码一样? | 见 多实例说明。默认内存方式按窗口独立读码;日志方式按安装目录共享。 |
| 内存方式读不到当前股票? | 仅支持官方最新版同花顺。请升级客户端;按界面「偏移恢复」引导重找指针链;或改为「日志」方式。 |
监控页
顶部导航「监控」用于选择同花顺实例、控制监听/发送/买卖条,并在底部状态栏启动联动服务。另有「设置」「订阅」「日历」页。
| 区域 / 操作 | 说明 |
|---|---|
| 左侧路径列表 | 本机检测到的同花顺安装目录;选中后右侧显示该实例详情与标签页。 |
| 监听 | 勾选后读取当前股票并在界面显示;所属目录的变化可经 WebSocket 推送(需已启用实时推送)。 |
| 发送 | 勾选后,本软件或 WebSocket target: "all" 可向该实例跳转股票。 |
| 买卖条 | 勾选后显示买卖悬浮条(账户与当前股票、买入/卖出入口);托盘亦可「显示买卖条」。 |
| 状态栏「启动」/「停止」 | 启动后开始读取当前股票(默认内存,可改为日志)。若已在设置中启用 WebSocket / HTTP,会一并启动对应服务。运行中可「重新启动」。 |
| 发送股票代码 | 测试区:填写代码后发送到全部「发送」实例或当前选中实例(需已启用 WebSocket 并启动)。 |
| 「交易」标签 | 刷新账户、复制 JSON、买入 / 卖出、配置实例级风控(需 Pro;下单经 easyths / xiadan)。风控设置含「风控规则」「买卖提示」两个标签;风控拦截时弹出独立告警悬浮窗。 |
| 「自选股」标签 | 查看与编辑本地/云端自选股:单只添加 / 删除、整表替换、整表恢复、复制列表 / 复制 JSON(写入需 Pro + 云端认证 + ths-favorite)。 |
| 「股票代码获取」标签 | 全局读码方式(内存 / 日志)与间隔;可打开实例目录或日志目录。 |
| 「配置管理」标签 | 导出短线精灵配置为 Excel / JSON(只读)。 |
| 「板块」标签 / 匹配板块 | Pro:刷新本地缓存、按类型导出 JSON、向已有自定义板块「添加成分股」、与通达信板块 / 自选双向同步。匹配结果在实例详情顶部「匹配板块」展示;导出 / 匹配类型可单独勾选(含「热点主题」)。 |
监控页:左侧选同花顺实例,顶部控制监听 / 发送 / 买卖条,「交易」标签查账户与持仓。
交易风控设置对话框(「交易」标签 → 编辑规则):含「风控规则」与「买卖提示」两个标签。
板块标签:本地板块按类型统计、导出 / 匹配个股勾选,以及与通达信的板块、自选双向同步。
自选股标签:云端账号配置、单只添加、整表替换与整表恢复,列表可复制。
交易日历页(顶部导航「日历」):标注交易日、休市与出金日。
托盘与悬浮窗
关闭主窗口默认进入系统托盘,进程继续运行。托盘右键菜单:
- 打开主界面 — 恢复主窗口
- 设置 — 打开设置页
- 检查环境 — 进入设置并触发环境检查
- 检查更新 — 手动检查新版本并立即安装(见「软件升级」)
- 显示买卖条 — 打开买卖悬浮条
- 退出 — 真正退出进程(主窗关闭≠退出)
以下为独立于主窗口的置顶悬浮窗(可拖拽、位置可记忆),主窗在托盘时仍可用:
| 悬浮窗 | 用途 |
|---|---|
| 买卖条 | 账户摘要与当前股票;买入/卖出入口 |
| 委托窗 | 买入/卖出限价委托表单 |
| 风控告警 | 展示风控拦截/确认信息,尽量不把主程序拉到前台 |
软件升级
本软件支持在线自动升级:检测到新版本后自动下载并完成安装替换,无需重新安装、无需手动解压覆盖。安装包通过 sha256 完整性校验后才会应用;升级过程会自动重启软件以完成替换。
升级方式
- 自动检查 — 启动后约 4 秒在后台静默检查一次;发现新版本会弹出提示,确认后自动下载、安装并重启。可在配置中关闭(见下)。
- 手动检查 — 托盘右键菜单 →「检查更新」,立即检查并提示结果。
升级流程
- 按序探测多个更新源(GitHub Pages 清单、GitHub Releases API,以及你自行配置的镜像源),任一源不可达或内容无效会自动跳过并尝试下一个;在可用源中取版本号最高的版本。
- 流式下载新安装包,校验
sha256与发布清单一致后落盘(完整性校验;数字签名暂未启用)。 - 软件自动退出并自替换:用新安装包覆盖自身路径后按原方式重新启动,全程无需安装器。
- 若升级中断(如关机、断电),下次启动时会自动恢复并完成安装。
配置更新源(可选)
默认配置开箱即用。如需自建国内镜像或调整顺序,编辑用户目录 ~/.ths-linker/linker_config.json 的 update 段:
{
"update": {
"sources": [
{
"name": "mirror",
"kind": "generic",
"latest_url": "https://mirror.example.com/ths-linker/latest.json",
"enabled": true
},
{
"name": "github-pages",
"kind": "generic",
"latest_url": "https://awamwang.github.io/ths-linker-releases/latest.json",
"enabled": true
},
{
"name": "github-api",
"kind": "github",
"latest_url": "https://api.github.com/repos/awamwang/ths-linker-releases/releases/latest",
"enabled": true
}
],
"check_on_startup": true,
"check_timeout": 6
}
}
sources— 按数组顺序探测;kind为generic(解析latest.json清单)或github(解析 GitHub Releases API);enabled: false可临时停用某源。配置非法或缺项时整体回退到内置默认源。check_on_startup— 启动时是否静默检查(默认true)。check_timeout— 单个源探测超时秒数(默认 6)。
update check 命令行检查,不执行自替换安装;只有正式发布版支持一键升级。
设置项说明
在「设置」页按左侧分类修改;点「应用并保存」后立即生效并持久化到用户目录 ~/.ths-linker/linker_config.json。首次使用可保持默认,按 「我想…」 按需调整。
| 分类 / 项 | 说明 |
|---|---|
| 快速上手 | 首次引导步骤与「检查环境」;可随时复查是否就绪。 |
| 基本配置(监听与发送) | 监听轮询与连接方式:读取间隔(默认 0.3 秒)、连接类型(默认「内存」读 hexin.exe,可改「日志」轮询 HexinHttp)、按键精灵买卖按键与输入间隔、开机自启。内存偏移保存在 ~/.ths-linker/memory_offset.json。 |
| 实时推送(WebSocket) | 勾选「启用实时推送」后显示端口与链接,默认 ws://127.0.0.1:8765。监听模式:本机 / 局域网 / 自定义 IP(与 HTTP 共用)。 |
| HTTP 接口 | 勾选「启用 HTTP 接口」后显示端口与地址,默认 http://127.0.0.1:8766(Pro)。http_api_key 可选;未配置时第三方可无 token 调用(见 接口鉴权)。 |
| 风控密码 | 关闭或放宽实例级风控时需要的全局密码。 |
| 自选股依赖 | 查看 / 安装 ths-favorite(写入「我的自选」所需)。 |
| 本机路径与环境 | 检查环境;打开文档、配置文件、偏移文件等本地路径。 |
设置 → 实时推送:WebSocket 开关、端口、监听模式与链接地址。
设置 → 本机路径与环境:逐项检查运行环境,标红项为未通过。
接口鉴权
集成密钥 http_api_key 不是必须的:界面未配置时,启动服务后第三方可无 token 连接 WebSocket / 调用业务 HTTP。若在设置中写入了密钥,则对外对接须带凭证。Web UI 的 Control Plane(设置 / 运行时等)仍使用进程级会话令牌,与对外集成密钥相互独立。
| 项 | 说明 |
|---|---|
| 公开路径 | GET /health 与静态文档/Web UI 资源免鉴权。 |
会话令牌 session_token |
进程内存生成,经 Shell Bridge 注入 Web UI,保护 Control Plane(/settings、/runtime 等)。外部无法稳定获取;不单独用来锁死对外业务 HTTP / WebSocket。 |
集成密钥 http_api_key(可选) |
在设置或 ~/.ths-linker/linker_config.json 写入后生效。配置后:业务 HTTP 用 Authorization: Bearer <http_api_key>;WebSocket 用 ?token= 或 Bearer。HTTP 业务接口另需 Pro(FEATURE_HTTP_API)。 |
| WebSocket / 业务 HTTP | 未配置 http_api_key:可无 token 连接与调用。已配置:握手/请求须带凭证(session 或集成密钥均可)。集成密钥握手不额外强制 Pro;各消息仍按功能授权门控。 |
| 失败响应 | HTTP 401:{"ok":false,"error":"…","auth_required":true};集成密钥缺 Pro 时可能另含 license_required:true。 |
# 未配置 http_api_key 时可直接调用 curl http://127.0.0.1:8766/stock-code/get ws://127.0.0.1:8765 # 配置了 http_api_key 后须带凭证 curl -H "Authorization: Bearer YOUR_HTTP_API_KEY" http://127.0.0.1:8766/stock-code/get ws://127.0.0.1:8765/?token=YOUR_HTTP_API_KEY
license_required。WebSocket 说明与地址
使用前:「设置 → 实时推送」勾选「启用实时推送」→ 状态栏点击「启动」。默认地址:
ws://127.0.0.1:8765
未配置 http_api_key 时可直接连接 ws://127.0.0.1:8765;已配置时请使用 ws://127.0.0.1:8765/?token=YOUR_KEY 或握手携带 Authorization: Bearer …(见 接口鉴权)。
消息均为 JSON 文本帧。连接成功后服务端会先推送 stock_code(action: get),再推送各安装目录缓存的 stock_code(action: push,若有),若该实例已有本地持仓缓存则再推送 trade(action: push)。运行中若同花顺实例身份变化(PID / 窗口标题 / 安装路径),会额外推送 instances(action: push)。
端口与地址可在「设置 → 实时推送」中查看、修改并复制。股票推送/改码在源码侧为免费能力;交易、自选写入、板块等仍按 Pro 门控。
推送消息(服务端 → 客户端)
stock_code(action: push)— 股票变化推送
{
"type": "stock_code",
"action": "push",
"ths_dir": "C:\\同花顺",
"code": "600519",
"market_id": "17",
"symbol": "600519.SH",
"instances": [
{
"id": "12345",
"pid": 12345,
"hwnd": 67890,
"title": "同花顺",
"ths_dir": "C:\\同花顺",
"listen": true,
"send": true
}
]
}
| 字段 | 说明 |
|---|---|
ths_dir | 产生该日志的安装目录(已 normalize)。 |
code / market_id / symbol | 当前股票。 |
instances | 该目录下关联的同花顺实例列表;同目录多开时共享同一套代码。每项可含 listen / send。 |
instances(action: push)— 实例变化推送
默认约每 10 秒扫描一次同花顺实例;在启动/重新启动、环境检查、发送、交易等关键节点也会立即刷新。仅当实例身份真实变化(PID、窗口标题、安装路径增删改)时主动推送;仅 hwnd 变化或界面「监听/发送」勾选变更不会推送本事件。
{
"type": "instances",
"action": "push",
"instances": [
{
"id": "12345",
"pid": 12345,
"hwnd": 67890,
"title": "同花顺",
"ths_dir": "C:\\同花顺",
"listen": true,
"send": true
}
]
}
| 字段 | 说明 |
|---|---|
instances | 当前运行中的同花顺实例完整列表(含 listen / send)。 |
trade(action: push)— 仓位变化推送
WebSocket 运行后,按实例轮询本地持仓快照文件(trading_snapshots),默认每 10 秒比对 snapshot 内容(忽略仅 refreshed_at 变化、持仓行顺序变化)。内容真正变化时主动推送;新连接也会推送当前已缓存的持仓。
{
"type": "trade",
"action": "push",
"ths_dir": "C:\\同花顺",
"refreshed_at": "2026-08-24 10:00:00",
"holdings": [
{
"code": "600519",
"name": "贵州茅台",
"shares": 100,
"available_shares": 100,
"cost": 1400.0,
"price": 1800.0,
"pnl": 40000.0,
"market_value": 180000.0
}
],
"snapshot": {
"equity": 1000000.0,
"available": 200000.0,
"stock_market_value": 180000.0,
"holdings": []
},
"instances": [
{
"id": "12345",
"pid": 12345,
"hwnd": 67890,
"title": "同花顺",
"ths_dir": "C:\\同花顺"
}
]
}
| 字段 | 说明 |
|---|---|
ths_dir | 对应同花顺安装目录(已 normalize)。 |
holdings | 当前持仓列表,与 snapshot.holdings 一致。 |
snapshot | 账户资金与持仓标准 JSON;文件删除后可能为 null。 |
refreshed_at | 本地缓存写入时间(若有)。 |
instances | 该目录下关联的同花顺实例。 |
stock_code(action: get)— 实例快照
在连接时推送;也可由客户端 stock_code action: get 主动请求。实例身份变化请监听 instances action: push。
{
"type": "stock_code",
"action": "get",
"instances": [
{
"id": "12345",
"pid": 12345,
"hwnd": 67890,
"title": "同花顺",
"ths_dir": "C:\\同花顺",
"listen": true,
"send": true
}
],
"stocks": {
"C:\\同花顺": {
"code": "600519",
"market_id": "17",
"symbol": "600519.SH"
}
}
}
| 字段 | 说明 |
|---|---|
listen | 界面是否勾选「监听」;未监听的目录变化不会推送 push。 |
send | 界面是否勾选「发送」;影响 post 的 target: "all"。 |
stock_code_result — 查询/跳转结果
{
"type": "stock_code_result",
"action": "post",
"ok": true,
"code": "600519",
"targets": [
{ "id": "12345", "ok": true, "method": "message" }
]
}
action: get 时含 instances、stocks;action: post 时含 code、targets。失败时可能带顶层 error,或在 targets[].error 中说明单个实例失败原因。
self_stock_result — 自选股操作结果
响应 self_stock 指令;字段与 HTTP 自选股 API 一致,并额外包含 type、action。
{
"type": "self_stock_result",
"action": "list",
"ok": true,
"count": 1,
"items": [
{
"code": "600519",
"market_id": "17",
"symbol": "600519.SH",
"price": 1800.5,
"added_at": "20260819"
}
]
}
trade_result — 交易操作结果
响应 trade 指令;字段与 HTTP 交易 API 一致,并额外包含 type、action。
{
"type": "trade_result",
"action": "probe",
"ok": true,
"xiadan_path": "C:\\同花顺\\xiadan.exe",
"server_host": "127.0.0.1",
"server_port": 7648,
"server_reachable": true,
"server_message": "ok"
}
action: snapshot 时额外含 snapshot(账户资金与持仓标准 JSON);funds / holdings 含对应字段;buy / sell 含 code、price、quantity、result。服务端主动推送仓位变化时为 type: trade + action: push(见上方推送消息),不是 trade_result。
risk_control_result — 风控配置结果
响应 risk_control 指令;字段与 HTTP 风控 API 一致,并额外包含 type、action。
{
"type": "risk_control_result",
"action": "get",
"ok": true,
"settings": {
"version": 1,
"enabled": true,
"total_position_limit_pct": 20.0,
"single_stock_limit_pct": 5.0,
"market_prompts": ["市场谨慎"],
"stock_buy_prompts": ["勿追高"],
"sell_prompts": ["按计划止盈"],
"sell_block_prompts": [],
"stock_sell_prompts": {},
"stock_sell_block_prompts": {},
"watch_enabled": true,
"watch_interval_sec": 10.0,
"xiadan_risk_unrestricted": false,
"xiadan_block_order_popups": false,
"global_no_buy": false,
"global_no_buy_reason": "",
"global_no_buy_meta": {},
"buy_tips": [],
"sell_tips": [],
"trade_tips_enabled": true
},
"path": "C:\\Users\\...\\risk_control\\abc123.json",
"ths_dir": "C:\\同花顺",
"title": "同花顺(普通)"
}
ths_block_result — 板块操作结果
响应 ths_block 指令;字段与 HTTP 板块 API 一致,并额外包含 type、action。
{
"type": "ths_block_result",
"action": "list",
"ok": true,
"kind": "custom",
"kind_label": "自定义板块",
"count": 1,
"blocks": {
"278": {
"name": "ABF",
"custom_type": "static",
"stock_ids": ["603186"]
}
}
}
action: tree 时含层级 tree;action: add_stocks 时含 block_id、before_count / after_count、stock_ids、skipped_codes 等。热点主题对应 ths_theme_result;A 股列表对应 ths_stock_list_result。
客户端指令(客户端 → 服务端)
stock_code — 股票代码联动
与 HTTP /stock-code/* 一一对应。获取当前股票代码用 get,跳转用 post。
// 刷新实例与当前股票
{ "type": "stock_code", "action": "get" }
// 全部「发送」勾选实例
{ "type": "stock_code", "action": "post", "code": "600519", "target": "all" }
// 指定实例(id 为 pid 字符串,不受发送勾选拦截)
{ "type": "stock_code", "action": "post", "code": "000001", "target": "12345" }
| 字段 | 必填 | 说明 |
|---|---|---|
action | 是 | get / post |
code | post 时 | 股票代码,支持 600519 / SH600519 / 600519.SH。 |
target | 否 | all(默认,仅勾选「发送」的实例)或实例 id(pid)。 |
服务端回复 stock_code_result;post 在后台线程执行。
self_stock — 自选股读写
与 HTTP 自选股 API 等价;读本地 SelfStockInfo.json,写经 ths-favorite。字段与 HTTP 请求体相同,通过 action 区分操作。
// 列出「我的自选」
{ "type": "self_stock", "action": "list" }
// 指定安装目录或 JSON 路径(可选)
{ "type": "self_stock", "action": "list", "ths_dir": "C:\\同花顺" }
{ "type": "self_stock", "action": "list", "path": "D:\\data\\SelfStockInfo.json" }
// 添加 / 删除
{ "type": "self_stock", "action": "add", "code": "600519" }
{ "type": "self_stock", "action": "remove", "code": "300750" }
// 整表覆盖(空数组表示清空)
{ "type": "self_stock", "action": "replace", "codes": ["600519", "000001"] }
| 字段 | 必填 | 说明 |
|---|---|---|
action | 是 | list / add / remove / replace |
code | add/remove 时 | 6 位股票代码;可选 market_id |
codes | replace 时 | 代码数组;可选 market_ids |
ths_dir / path | 否 | 读取时指定目录或 JSON 路径 |
username / password / cookies | 否 | 写入时的云端认证;可覆盖 GUI 配置 |
服务端回复 self_stock_result;写入在后台线程执行,不会阻塞其他消息。
ths_block — 板块查询与成分写入
与 HTTP /ths-block/* 等价。读取本地板块映射 / 层级树;可向已有自定义板块追加或覆盖成分股。需 Pro(板块能力)。
// 列出自定义板块
{ "type": "ths_block", "action": "list", "kind": "custom" }
// 概念层级树(仅 conception / industry / region)
{ "type": "ths_block", "action": "tree", "kind": "conception" }
// 向已有自定义板块追加成分(默认去重追加)
{
"type": "ths_block",
"action": "add_stocks",
"block_name": "ABF",
"items": [
{ "kind": "hit", "code": "600519" },
{ "kind": "hit", "code": "000001" }
]
}
// 覆盖模式(清空后写入)
{
"type": "ths_block",
"action": "add_stocks",
"block_name": "ABF",
"overwrite": true,
"items": [{ "kind": "hit", "code": "600519" }]
}
| 字段 | 必填 | 说明 |
|---|---|---|
action | 是 | list / tree / add_stocks(别名 add-stocks) |
kind | list/tree 时 | custom / conception / industry / region / daily(及中文别名);tree 仅前三者中的概念/行业/地域 |
block_name | add_stocks 时 | 自定义板块显示名(完全匹配);板块须已在同花顺客户端创建 |
items | add_stocks 时 | hit-list:kind:"hit" + code;兼容旧字段 stocks;仅 A 股,无法映射的进入 skipped_codes |
overwrite | 否 | true 覆盖成分,默认 false 追加去重 |
ths_dir | 否 | 同花顺安装目录;省略时用服务配置或运行中的 hexin |
服务端回复 ths_block_result。写入后请在同花顺客户端刷新或重启再查看。不支持新建 / 删除 / 重命名板块。
以下指令与 HTTP 对应;完整字段见仓库 docs/同花顺热点主题接口.md、docs/同花顺股票列表接口.md。
ths_theme — 热点主题(Pro)
{ "type": "ths_theme", "action": "list" }
{ "type": "ths_theme", "action": "full", "theme_key": "光模块/CPO" }
{ "type": "ths_theme", "action": "stocks", "theme_key": "光模块/CPO", "block_code": "B097" }
action:list / tree / stocks / full。回复 ths_theme_result。
ths_stock_list — A 股静态列表
{ "type": "ths_stock_list", "action": "list", "ths_dir": "C:\\同花顺" }
回复 ths_stock_list_result(WS 侧免费)。
short_genius — 短线精灵配置(只读)
{ "type": "short_genius", "action": "config" }
{ "type": "short_genius", "action": "accounts" }
{ "type": "short_genius", "action": "excel" }
回复 short_genius_result。
trade — 交易查询与下单
经 easyths 服务操作 xiadan.exe。需 Pro 与本机交易依赖(easyths / xiadan 已登录)。除 probe 外,其余操作通常需指定 ths_dir(同花顺安装目录)。
// 探测 xiadan 路径与 easyths 连通性
{ "type": "trade", "action": "probe" }
// 账户快照(资金 + 持仓 + 账户元信息)
{ "type": "trade", "action": "snapshot", "ths_dir": "C:\\同花顺" }
// 仅查资金 / 持仓
{ "type": "trade", "action": "funds", "ths_dir": "C:\\同花顺" }
{ "type": "trade", "action": "holdings", "ths_dir": "C:\\同花顺" }
// 剪贴板读写自检(持仓查询依赖 Ctrl+C 复制)
{ "type": "trade", "action": "clipboard_check", "ths_dir": "C:\\同花顺" }
// 限价买入 / 卖出
{
"type": "trade",
"action": "buy",
"ths_dir": "C:\\同花顺",
"code": "600519",
"price": 1800.0,
"quantity": 100
}
| 字段 | 必填 | 说明 |
|---|---|---|
action | 是 | probe / snapshot / funds / holdings / clipboard_check / buy / sell |
ths_dir | 除 probe 外通常必填 | 同花顺安装目录,用于定位 xiadan |
code / price / quantity | buy/sell 时 | 6 位代码、限价、股数(须 > 0) |
host / port / api_key / timeout | 否 | 覆盖全局 easyths 连接参数;port 也可按实例 trade_port 解析 |
pid / hwnd / xiadan_path | 否 | 精确定位交易窗口或 xiadan 可执行文件 |
服务端回复 trade_result;查询与下单在后台线程执行。持仓查询通过 Ctrl+C 复制表格,若失败请检查 Quicker 等工具是否拦截快捷键,并确认 xiadan 在「查询→资金股票/资金股份」或「双向委托→持仓」页面且窗口在前台。
risk_control — 风控配置读写
读写实例级风控配置(仓位上限、提示词、文件监听等),与「监控 → 交易」页风控设置共用配置文件。按 ths_dir + 可选 title / pid 定位实例;关闭风控、以及放宽风控(上调总仓 / 单票上限、取消「限制同花顺下单」、取消「屏蔽同花顺买卖弹框」、关闭「全局禁止买入」)均需提供「设置 → 风控密码」中配置的全局 password。
// 读取当前配置
{ "type": "risk_control", "action": "get", "ths_dir": "C:\\同花顺", "title": "同花顺(普通)" }
// 部分更新(未传字段保持原值)
{
"type": "risk_control",
"action": "update",
"ths_dir": "C:\\同花顺",
"total_position_limit_pct": 25.0,
"stock_buy_prompts": ["勿追高", "禁止梭哈"]
}
// 开启风控(无需密码)
{ "type": "risk_control", "action": "enable", "ths_dir": "C:\\同花顺" }
// 关闭风控(需 password)
{ "type": "risk_control", "action": "disable", "ths_dir": "C:\\同花顺", "password": "你的关闭密码" }
| 字段 | 必填 | 说明 |
|---|---|---|
action | 是 | get / update / enable / disable |
ths_dir | 通常必填 | 同花顺安装目录,用于定位实例级配置 |
title / pid | 否 | 同目录多实例时区分配置;未指定时按保存的实例列表首条匹配 |
enabled | update 时可选 | 设为 false 时须同时提供 password |
password | disable 或放宽 / 关闭时 | 全局风控关闭密码(在「设置 → 风控密码」配置);关闭风控或放宽风控时须提供 |
total_position_limit_pct / single_stock_limit_pct | 否 | 总仓 / 单票仓位上限(0–100,百分比) |
market_prompts / stock_buy_prompts / sell_prompts | 否 | 提示词数组;买入拦截时展示市场 + 单票提示,卖出时在结果中带卖出提示 |
sell_block_prompts / stock_sell_prompts / stock_sell_block_prompts | 否 | 卖出相关:全局卖出禁止(拦截)、单票卖出提示(不拦截)、单票卖出禁止(拦截);单票格式 代码: 提示1,提示2 |
xiadan_risk_unrestricted | 否 | 本实例不拦截 / 提示同花顺 xiadan 买卖面板;对应界面「风控限制同花顺下单」,取消勾选即置 true |
xiadan_block_order_popups | 否 | 屏蔽同花顺买卖浮层弹框(检测到买卖浮层立即关闭,默认关) |
buy_tips / sell_tips | 否 | 原生买卖前逐条确认的提示(条目 {text, enabled},可空);受 trade_tips_enabled 总开关控制 |
trade_tips_enabled | 否 | 买卖提示总开关,独立于风控规则开关 |
global_no_buy | 否 | 全局禁止买入;开启后拦截全部买入,优先级高于仓位上限与买入提示词 |
global_no_buy_reason | 否 | 命中全局禁买时优先展示的原因;为空时默认「全局禁止买入」 |
global_no_buy_meta | 否 | object 额外信息;拦截时出现在交易结果 risk.meta |
watch_enabled / watch_interval_sec | 否 | 是否监听配置文件变更及轮询周期(秒,≥1) |
服务端回复 risk_control_result;写操作在后台线程执行。成功时含 settings、配置文件 path。
多实例说明
- 界面:「监控」左侧为安装路径,选中后在右侧配置监听、发送、买卖条及详情标签。
- 监听:勾选后该实例显示当前股票,且所属目录的变化可推送 WebSocket;未勾选时不推送。
- 发送:
stock_codeaction: post且target: "all"时只写入勾选了「发送」的实例;也可在消息中指定实例id(pid)定向跳转。 - 读码粒度:默认内存方式按进程读取,同一安装目录下各窗口可显示各自选中的股票。改为日志后按安装目录共享读码,同目录多窗口会显示相同代码。
- 内存方式限制:仅支持官方最新版同花顺客户端,不支持第三方客户端。读码失败请升级官方客户端、按引导做偏移恢复,或改为日志方式。
- 日志方式限制:无法区分同目录各窗口各自选中的股票;若你开了多个同花顺窗口且代码总一样,属正常现象。
HTTP 说明与地址
使用前:「设置 → HTTP 接口」勾选启用 →(可选)配置 http_api_key(见鉴权)→ 状态栏点击「启动」。默认地址:
http://127.0.0.1:8766
默认绑定本机 127.0.0.1;可在设置中改为局域网(绑定 0.0.0.0)或自定义 IPv4。响应均为 JSON,字段含 ok;失败时带 error(可能含 license_required / auth_required)。支持 CORS。未配置 http_api_key 时业务接口可无 token 调用;已配置时须带 Authorization: Bearer <http_api_key>(见 接口鉴权)。
- 自选股读取:本地
SelfStockInfo.json。 - 自选股写入:经云端 API;在实例「自选股」页配置账号或 Cookie。
- 板块:查询自定义 / 概念 / 行业 / 地域 / 每日动态;可向已有自定义板块写入成分股(Pro)。
- 通达信板块:列出通达信自定义板块,并与同花顺自定义板块双向整表同步(Pro)。
- 热点主题 / A 股列表 / 短线精灵:只读查询(主题与板块同 Pro;股票列表与短线精灵见各接口)。
- 交易:经 easyths 操作 xiadan(需 Pro 与本机交易依赖)。
- 风控:读写实例级交易风控配置,与界面风控设置共用文件。
启服 HTTP 需 Pro。WebSocket 股票联动在源码侧免费,但界面仍须勾选启用。接口调试可使用本文底部 接口测试(若已配置 API Key 请填写)。
HTTP 接口一览
下列为对外集成常用路由。未配置 http_api_key 时可直接调用;已配置时须带 Authorization: Bearer <http_api_key>。Web UI 另使用 Control Plane 路由(/settings、/runtime、/license、/instances、/shell、/calendar、/offset-recovery、/risk-password 等),一般不必由外部脚本直接调用。
| 方法 | 路径 | 说明 |
|---|---|---|
GET | /health | 健康检查(免鉴权);features 含 stock_code / ths_block / tdx_block / ths_theme / ths_stock_list / short_genius / self_stock / trade / risk_control 等 |
GET | /stock-code、/stock-code/get | 获取实例列表与各目录当前股票(对应 WS stock_code action: get) |
POST | /stock-code、/stock-code/post | 跳转股票代码;body: {"code":"600519","target":"all"} |
GET | /self-stock、/self-stock/list | 列出「我的自选」;可选查询参数 ths_dir、path |
GET / POST | /self-stock/probe | 探测云端自选认证 |
POST | /self-stock/add | 添加单只;body: {"code":"600519"} |
POST | /self-stock/remove | 删除单只;body 同上 |
POST | /self-stock/replace | 整表覆盖;body: {"codes":["600519","000001"]}(空数组表示清空) |
GET | /self-stock/history | 自选股历史版本列表(供整表恢复) |
POST | /self-stock/restore | 整表恢复为指定历史版本;body: {"id":"…"} |
GET | /ths-block、/ths-block/list | 扁平板块映射;查询参数 kind(必填)、可选 ths_dir |
GET | /ths-block/tree | 概念 / 行业 / 地域层级树 |
GET / POST | /ths-block/export、/ths-block/refresh、/ths-block/status、/ths-block/match | 导出(可选类型含「热点主题」)、刷新缓存、状态、个股匹配板块 |
POST | /ths-block/add-stocks | 向已有自定义板块追加/覆盖成分;body 见 板块接口 |
GET | /tdx-block、/tdx-block/list | 列出通达信自定义板块;见 通达信板块 |
POST | /tdx-block/sync-to-ths、/tdx-block/sync-to-tdx | 通达信 ↔ 同花顺自定义板块整表同步 |
GET / POST | /tdx-block/self-stock-status | 通达信自选股同步状态(计数) |
POST | /tdx-block/sync-self-to-tdx | 同花顺「我的自选」整表覆盖写入通达信自选股(zxg.blk) |
POST | /tdx-block/sync-self-from-tdx(别名 /sync-self-to-ths) | 通达信自选股整表覆盖写入同花顺「我的自选」(需云端账号) |
GET | /ths-theme、/ths-theme/list、/ths-theme/tree、/ths-theme/stocks、/ths-theme/full | 热点主题只读查询(Pro);详见 docs/同花顺热点主题接口.md |
GET | /ths-stock-list、/ths-stock-list/list | A 股静态代码/名称列表;详见 docs/同花顺股票列表接口.md |
GET | /short-genius、/short-genius/config、/short-genius/accounts、/short-genius/excel | 短线精灵配置只读 |
GET | /trade/probe | 探测 xiadan 与 easyths 连通性 |
GET | /trade/snapshot、/trade/funds、/trade/holdings、/trade/clipboard-check | 账户快照 / 资金 / 持仓 / 剪贴板自检;通常需 ths_dir |
GET / POST | /trade/prepare、/trade/ensure、/trade/recover | 交易准备、确保服务、端口恢复 |
POST | /trade/buy、/trade/sell | 限价买入/卖出;body 含 ths_dir、code、price、quantity |
GET | /risk-control、/risk-control/get | 读取风控配置;查询参数 ths_dir、可选 title / pid |
POST | /risk-control/update、/enable、/disable | 更新 / 开启 / 关闭风控;关闭须 password |
GET | /calendar/month、/calendar/day | 交易日历(月视图 / 日详情) |
Content-Type 须为 application/json。写入还可附带可选 market_id、username、password、cookies。
列表示例响应
{
"ok": true,
"count": 1,
"items": [
{
"code": "600519",
"market_id": "17",
"symbol": "600519.SH",
"price": 1800.5,
"added_at": "20260819"
}
]
}
HTTP 板块接口
与 WebSocket ths_block 共用实现。需已启用 HTTP API,且具备 Pro 板块授权。完整字段与示例见仓库 docs/同花顺板块列表接口.md。
查询 list / tree
GET /ths-block/list?kind=custom GET /ths-block/tree?kind=conception
| 参数 | 说明 |
|---|---|
kind | 必填。custom / conception / industry / region / daily(支持中文别名)。tree 仅支持概念 / 行业 / 地域 |
ths_dir | 可选;同花顺安装根目录 |
list 返回 blocks(ID → 名称 / stock_ids 等);自定义板块还可含 custom_type、颜色字段。tree 返回递归 tree 节点。
写入成分 add-stocks
仅更新已有自定义板块文件中的成分列表;板块须先在同花顺客户端创建(至少含 1 只股票)。不支持新建 / 删除 / 重命名。
POST /ths-block/add-stocks
Content-Type: application/json
{
"block_name": "ABF",
"overwrite": false,
"items": [
{ "kind": "hit", "code": "600519" },
{ "kind": "hit", "code": "000001" }
]
}
| 字段 | 说明 |
|---|---|
block_name | 自定义板块显示名(完全匹配) |
items | hit-list:写入 kind:"hit" 项的 code;标题行等跳过。兼容旧字段 stocks |
overwrite | 默认 false 追加去重;true 清空后覆盖 |
ths_dir | 可选 |
成功响应含 block_id、before_count / after_count、added_count、stock_ids、skipped_codes 等。写入后请在同花顺中刷新或重启后再查看。
HTTP 通达信板块接口
列出通达信自定义板块,并按名称映射与同花顺自定义板块做整表覆盖同步(Pro);另支持与同花顺自选股双向整表覆盖同步。同步前请先在同花顺侧创建目标自定义板块(自选同步写入同花顺侧时需已配置云端账号)。
GET /tdx-block/list?tdx_dir=D:\new_tdx
POST /tdx-block/sync-to-ths
Content-Type: application/json
{
"tdx_dir": "D:\\new_tdx",
"ths_dir": "C:\\同花顺",
"mappings": [
{ "tdx_name": "我的板块", "ths_name": "ABF" }
]
}
POST /tdx-block/sync-to-tdx
Content-Type: application/json
{
"tdx_dir": "D:\\new_tdx",
"ths_dir": "C:\\同花顺",
"mappings": [
{ "tdx_name": "我的板块", "ths_name": "ABF" }
]
}
| 字段 | 说明 |
|---|---|
tdx_dir | 通达信安装根目录(含 T0002/blocknew 等) |
ths_dir | 同花顺安装根目录 |
mappings | 名称映射数组;亦可省略而使用已保存的配置映射 |
自选股同步
同花顺「我的自选」与通达信自选股(zxg.blk)可双向整表覆盖同步;写入同花顺侧需已配置云端账号。
GET /tdx-block/self-stock-status?ths_dir=C:\同花顺
POST /tdx-block/sync-self-to-tdx
Content-Type: application/json
{
"tdx_dir": "D:\\new_tdx",
"ths_dir": "C:\\同花顺"
}
POST /tdx-block/sync-self-from-tdx
Content-Type: application/json
{
"tdx_dir": "D:\\new_tdx",
"ths_dir": "C:\\同花顺"
}
HTTP 交易接口
与 WebSocket trade 指令共用 trading/api.py。GET 接口通过查询参数传参;POST 买入/卖出使用 JSON body。
公共可选参数
| 参数 | 说明 |
|---|---|
ths_dir | 同花顺安装目录(snapshot / funds / holdings / 买卖必填) |
host / port / api_key / timeout | 覆盖 GUI 全局 easyths 连接;未指定 port 时按实例 trade_port 解析 |
pid / hwnd / xiadan_path | 精确定位 hexin / xiadan 窗口或可执行文件 |
账户快照 snapshot
标准 snapshot 字段示例:
{
"broker": "某某证券",
"account_name": "资金账号",
"account_display": "资金账号",
"equity": 1000000.0,
"cash_balance": 500000.0,
"available": 480000.0,
"withdrawable": 480000.0,
"frozen": 0.0,
"stock_market_value": 500000.0,
"position_pnl": 12000.0,
"daily_pnl": 800.0,
"daily_pnl_pct": 0.08,
"holdings": [
{
"code": "600519",
"name": "贵州茅台",
"shares": 100,
"available_shares": 100,
"cost": 1700.0,
"price": 1800.0,
"pnl": 10000.0,
"market_value": 180000.0
}
]
}
探测响应 probe
{
"ok": true,
"action": "probe",
"xiadan_path": "C:\\同花顺\\xiadan.exe",
"server_host": "127.0.0.1",
"server_port": 7648,
"server_reachable": true,
"server_message": "ok",
"hexin": { "id": "12345", "pid": 12345, "hwnd": 67890, "title": "同花顺", "ths_dir": "C:\\同花顺" },
"xiadan": { "pid": 23456, "hwnd": 78901, "path": "C:\\同花顺\\xiadan.exe" }
}
自动交易服务不可达。HTTP 风控接口
与 WebSocket risk_control 指令共用 trading/risk_api.py。读取用 GET 查询参数;更新 / 开启 / 关闭用 POST JSON body。
配置字段 settings
| 字段 | 说明 |
|---|---|
enabled | 是否启用风控 |
total_position_limit_pct | 总仓位上限(占账户权益百分比,0–100) |
single_stock_limit_pct | 单票仓位上限(百分比) |
market_prompts | 市场风控提示词(买入被拦截时展示) |
stock_buy_prompts | 单票买入拦截提示词 |
sell_prompts | 卖出提示词(全局,不拦截;出现在卖出 API 结果 risk_prompts) |
sell_block_prompts | 卖出禁止提示词(全局,拦截且不可跳过) |
stock_sell_prompts | 单票卖出提示词(不拦截);格式 代码: 提示1,提示2 |
stock_sell_block_prompts | 单票卖出禁止提示词(拦截) |
xiadan_risk_unrestricted | 本实例不拦截 / 提示同花顺 xiadan 买卖面板(界面「风控限制同花顺下单」的取反) |
xiadan_block_order_popups | 屏蔽同花顺买卖浮层弹框(检测到立即关闭,默认关) |
buy_tips / sell_tips | 原生买卖前逐条确认的提示({text, enabled});受 trade_tips_enabled 控制 |
trade_tips_enabled | 买卖提示总开关,独立于风控规则开关 |
global_no_buy | 全局禁止买入开关;开启后拦截全部买入,优先于仓位上限与买入提示词 |
global_no_buy_reason | 命中全局禁买时优先展示的原因;为空时默认「全局禁止买入」 |
global_no_buy_meta | object 额外信息(如来源、分数);买入被拦截时出现在 risk.meta |
watch_enabled / watch_interval_sec | 配置文件热加载开关与轮询间隔 |
读取示例
GET /risk-control?ths_dir=C:\同花顺&title=同花顺(普通)
更新示例
POST /risk-control/update
Content-Type: application/json
{
"ths_dir": "C:\\同花顺",
"title": "同花顺(普通)",
"total_position_limit_pct": 20.0,
"single_stock_limit_pct": 5.0,
"market_prompts": ["情绪低迷"],
"stock_buy_prompts": ["勿追高"],
"sell_prompts": ["按计划止盈"],
"global_no_buy": true,
"global_no_buy_reason": "指数大跌暂停买入",
"global_no_buy_meta": {"source": "strategy", "level": 2}
}
enabled: false 或 /risk-control/disable)须先在「设置 → 风控密码」配置全局关闭密码,并在请求中提供 password。放宽风控(上调总仓 / 单票上限、取消「限制同花顺下单」、取消「屏蔽同花顺买卖弹框」、关闭「全局禁止买入」)同样需要 password。接口测试
在软件已启动且对应服务已在「设置」中启用时,可直接在本页发起请求验证接口。HTTP 默认 http://127.0.0.1:8766,WebSocket 默认 ws://127.0.0.1:8765。仅当软件中配置了 http_api_key 时才需填写下方 API Key;未配置时可留空。
HTTP 测试
WebSocket 测试
未连接
trade snapshot / ths_block add_stocks 预设中的路径与板块名请按本机修改。板块须已在同花顺客户端创建。若返回 401,请填写正确的 API Key。