Files
zhiwei 9b9c37002a Initial: MoFin 持仓分析与策略管理系统
核心模块:
- 策略生命周期管理 (strategy_lifecycle.py)
- 技术分析引擎 (technical_analysis.py)
- 双维度策略评估 (strategy_evaluator.py)
- 实时行情获取 (get_realtime_prices.py)
- Web Dashboard (server.py, :8899)

提示词版本管理:
- prompt_manager 模块 — 统一管理所有知微提示词
- 8个提示词共24个版本已录入
- 策略→提示词版本关联追踪
- Dashboard「提示词」Tab

数据源增强:
- 服务端 POST /api/update/realtime 端点已就绪
- clients/tdx-relay/ — 小小莫在Windows上开发的通达信中继
- 解决港股15分钟延迟问题
2026-06-12 22:54:51 +08:00

5.0 KiB
Raw Permalink Blame History

通达信行情中继 — 开发指南

写给小小莫。在 Windows 上用 Python 直连招商证券的通达信行情主站,获取实时港股行情,推送到知微的 MoFin Dashboard。


一、背景

知微的 MoFin 系统目前用腾讯免费 API 获取行情。A 股是实时的,但港股有 15 分钟延迟

你在 Windows 上的招商证券客户端(通达信内核)是买了港股实时数据的。我们可以通过 Python 直连招商证券的行情主站,拿到真正实时的港股行情,然后推送到知微的 Dashboard。

二、技术方案

招商证券客户端 (通信设置里的IP:7709)
        │
        ▼
   opentdx (Python库)
        │
        ▼
   tdx_relay.py (你写)
        │  POST /api/update/realtime
        ▼
   MoFin Dashboard (192.168.1.246:8899)

推荐用 opentdxpytdx 的升级版):

pip install opentdx requests

三、第一步:拿行情主站IP

打开招商证券 PC 客户端:

  1. 菜单 → 选项 → 通信设置
  2. 你会看到一列行情主站,类似:招商证券深圳主站 113.105.73.88:7709
  3. 记下来,填到 src/relay/config.py

或者在命令行找:

tasklist | findstr "zhsh"       # 找招商证券进程PID
netstat -ano | findstr "7709"   # 看连接的IP

四、CLI 验证连通性

装好 opentdx 后,先用命令行测试:

# 测试 A 股
opentdx quote "SZ 000001"

# 测试港股(用你的服务器IP替换)
opentdx g-quote "HK_MAIN_BOARD 00700" --server 113.105.73.88:7709

opentdx 的完整命令列表:opentdx doc(交互式文档)

五、Python 代码示例

连接 + 获取港股行情

from opentdx.tdxClient import TdxClient
from opentdx.const import EX_MARKET

# 方式一:自动选最快服务器
with TdxClient() as client:
    # A股
    a_quotes = client.stock_quotes([(0, '000001')])

    # 港股 ⭐
    hk_quotes = client.goods_quotes([
        (EX_MARKET.HK_MAIN_BOARD, '00700'),  # 腾讯
        (EX_MARKET.HK_MAIN_BOARD, '09988'),  # 阿里
    ])
    for q in hk_quotes:
        print(f"{q['code']}: {q['price']} {q['change_pct']}%")

⚠️ opentdx 的具体 API 以 opentdx doc 为准。 GitHub: https://github.com/acb6104/opentdx

推送到 MoFin

用现成的工具类:

from relay.pusher import MoFinPusher

pusher = MoFinPusher("http://192.168.1.246:8899")
result = pusher.push([
    {
        "code": "00700",
        "name": "腾讯控股",
        "price": 463.6,
        "change_pct": 1.55,
        "high": 468.0,
        "low": 460.2,
        "open": 462.0,
        "volume": 25000000,
        "timestamp": "2026-06-12 14:30:00"
    }
])
print(result)  # {"status": "ok", "updated": 1}

六、你的任务清单

阶段一:环境 + 连通性

  • 装 Python 3.10+(如果没有的话)
  • pip install opentdx requests
  • 运行 opentdx doc 看看接口
  • 从招商证券通信设置拿到行情主站IP
  • 用 CLI 测试港股:opentdx g-quote "HK_MAIN_BOARD 00700" --server <IP>:7709

阶段二:港股行情获取

  • 实现 tdx_client.py 的连接和港股查询
  • 验证单只港股(腾讯00700)数据正确
  • 验证批量港股(持仓列表)
  • ⚠️ 对比招商证券客户端价格,确认数据准确(红线)

阶段三:数据推送

  • 实现 run_relay.py 主循环
  • 测试推送一条数据到 MoFin Dashboard
  • 全量推送所有持仓港股

阶段四:自动化

  • 设置 Windows 定时任务(每15~30秒运行一次)

七、注意事项

数据准确性(⚠️红线)

# 从通达信拿到的价格 和 招商证券客户端显示的现价
# 两者必须一致!
tdx_price = 463.6
assert abs(tdx_price - 招商证券_显示价格) < 0.01

A股不要动

A 股继续走腾讯 API,已经是实时的。本项目只解决港股延迟。

字段映射

含义 腾讯API索引 通达信字段
当前价 fields[3] price
昨收 fields[4] last_close
今开 fields[5] open
最高 fields[33] high
最低 fields[34] low
涨跌幅 fields[32] change_pct

回退方案

通达信连不上时自动回退腾讯 API(当前方案),不中断行情更新。

try:
    data = tdx_client.get_quotes(codes)
except Exception:
    data = tencent_api.get_quotes(codes)  # 回退

连接稳定性

opentdx 内置心跳,但网络不稳时需要重连:

def safe_get(client, codes, retries=3):
    for i in range(retries):
        try:
            return client.goods_quotes(codes)
        except (ConnectionError, TimeoutError):
            client.disconnect()
            time.sleep(2)
            client.connect(ip, port)
    return None  # 回退腾讯API

八、参考

资源 地址
opentdx GitHub https://github.com/acb6104/opentdx
opentdx PyPI pip install opentdx
MoFin Dashboard http://192.168.1.246:8899
架构文档 见本目录上级 docs/