爱意满满的作品展示区。
handsomejustin80

easy-tdx:接手停更的 pytdx,加了 CLI 和 30 个技术指标

  •  
  •   handsomejustin80 ·
    handsomejustin · 1 day ago · 550 views
    做量化或 A 股相关开发的人大概都知道 pytdx ,通达信 TCP 行情协议的 Python 客户端,用了好多年了。问题是这个项目已经很久没人维护了,issue 堆着没人回,最后几次提交还是几年前的事。

    我自己平时要用,就 fork 过来接着改。改着改着加了不少东西,干脆换了名字叫 easy-tdx ,重新发到 PyPI 上。目前版本 1.4.0 。

    加了个 CLI 工具,装好就有 easy-tdx 命令,默认输出 JSON 。这个设计是给 AI Agent 用的,Claude Code 、OpenClaw 、Hermes 这类工具可以直接调 CLI 拿行情数据,不用写 Python:

    easy-tdx kline SZ 000001 --count 30 --table
    easy-tdx quote "SZ 000001,SH 600519"
    easy-tdx indicator MACD,KDJ,RSI -m SH -c 600519 --table

    内置了 30 个技术指标,MACD 、KDJ 、RSI 、BOLL 、DMI 、ATR 这些常用的都有。直接拿 K 线数据算好返回 DataFrame ,不用自己再写一遍指标计算。底层用的是 MyTT (麦语言指标库),可以一次算多个:

    from easy_tdx import MacClient, Market

    with MacClient.from_best_host() as c:
    df = c.get_stock_kline_with_indicators(
    Market.SH, "600519",
    indicators=["MACD", "KDJ", "RSI", "BOLL"],
    count=30
    )

    技术指标
    easy-tdx indicator-list --table # 列出所有可用指标
    easy-tdx indicator MACD -m SH -c 600519 --table # MACD
    easy-tdx indicator KDJ -m SZ -c 000001 --table # KDJ
    easy-tdx indicator RSI -m SH -c 600519 --table # RSI
    easy-tdx indicator BOLL -m SH -c 600519 --table # BOLL 布林带
    easy-tdx indicator DMI -m SH -c 600519 --table # DMI 动向指标
    easy-tdx indicator ATR -m SH -c 600519 --table # ATR 真实波幅
    easy-tdx indicator WR -m SH -c 600519 --table # WR 威廉指标
    easy-tdx indicator CCI -m SH -c 600519 --table # CCI 顺势指标
    easy-tdx indicator BIAS -m SZ -c 000001 --table # BIAS 乖离率
    easy-tdx indicator OBV -m SZ -c 000001 --table # OBV 能量潮

    # 多指标同时计算
    easy-tdx indicator MACD,KDJ,RSI,BOLL -m SH -c 600519 --count 10 --table

    # 自定义参数
    easy-tdx indicator MACD -m SH -c 600519 --params SHORT=10,LONG=22

    # 分钟线指标
    easy-tdx indicator MACD -m SH -c 600519 --period 5MIN --count 50

    # 仅输出指标值(不含 OHLCV )
    easy-tdx indicator RSI -m SZ -c 000001 --no-ohlcv
    支持 30 个指标:MACD, KDJ, RSI, BOLL, DMI, ATR, WR, CCI, BIAS, OBV, VR, EMV, MFI, BRAR, ASI, TRIX, DPO, MTM, ROC, EXPMA, BBI, PSY, DFMA, CR, KTN, XSII, MASS, TAQ 。


    其他新增的接口:板块汇总、板块排行、资金流向、集合竞价、市场异动、全市场涨跌统计、F10 公司信息、历史资金流向,还有港股美股期货的扩展行情。这些 pytdx 原来基本没有。

    板块
    easy-tdx board-list --type GN --table
    easy-tdx board-list --type HY --count 200
    easy-tdx board-members 881001 --table
    easy-tdx belong-board SZ 000001 --table
    easy-tdx board-summary 881001 --table # 板块汇总(成交额/主力净流入/涨跌家数)
    easy-tdx board-summary 881001 --members --table # 含成分股明细
    easy-tdx board-ranking --type HY --top 10 --table # 行业板块排行
    easy-tdx board-ranking --type GN --sort-by amount # 概念板块按成交额排行

    技术方面做了几件事:同步 + asyncio 双接口,strict mypy 类型检查全覆盖,协议编解码层每条命令都有离线 fixture 测试。不依赖通达信客户端,直连行情服务器。

    安装:

    pip install easy-tdx

    GitHub: https://github.com/handsomejustin/easy_tdx

    有问题欢迎提 issue 。
    handsomejustin80
        1
    handsomejustin80  
    OP
       1 day ago
    更新了一个自创的技术指标,具体如下:
    # 捉妖大师 (ZHUOYAO) 技术指标

    ## 指标定义

    多周期涨幅共振指标,通过 20/60/120 日涨幅百分比及指数平滑,判断短中长线趋势是否同向。

    ```
    长线 1 = (C / REF(C,120) - 1) × 100 # 120 日涨幅(%)
    长线 = EXPMA(长线 1, 10) # 长线的 10 日指数平滑
    中线 = (C / REF(C,60) - 1) × 100 # 60 日涨幅(%)
    短线 = (C / REF(C,20) - 1) × 100 # 20 日涨幅(%)
    趋势 = EXPMA(中线, 10) # 中线的 10 日指数平滑
    ```

    返回 `(长线, 中线, 短线, 趋势)` 四条线,均以零轴为多空分界。

    ## 调用方式

    ```python
    from easy_tdx.MyTT import ZHUOYAO

    # close: numpy 数组,至少 120+ 个数据点
    LONG, MID, SHORT, TREND = ZHUOYAO(close)

    # 自定义周期
    LONG, MID, SHORT, TREND = ZHUOYAO(close, N1=120, N2=60, N3=20, M=10)
    ```

    参数说明:

    | 参数 | 默认值 | 含义 |
    |------|--------|------|
    | N1 | 120 | 长线回望周期 |
    | N2 | 60 | 中线回望周期 |
    | N3 | 20 | 短线回望周期 |
    | M | 10 | EXPMA 平滑周期 |

    ## 核心逻辑

    本质是 **多时间框架 ROC (Rate of Change) 共振系统**:

    - **短线** = ROC(20):捕捉 20 日内的短期动量方向
    - **中线** = ROC(60):反映季度级别的中期趋势强度
    - **长线** = EMA(ROC(120), 10):半年级别的长线趋势,经过平滑降噪
    - **趋势** = EMA(ROC(60), 10):中线的平滑版本,用于过滤中线噪音

    零轴是所有线的多空分界线:正值 = 该周期内上涨,负值 = 该周期内下跌。

    ## 交易信号

    ### 1. 多线共振(核心信号)

    | 状态 | 条件 | 含义 |
    |------|------|------|
    | 全线多头 | 四线 > 0 ,且 短线 > 中线 > 长线 | 短中长趋势完全一致向上,强势股特征 |
    | 全线空头 | 四线 < 0 ,且 短线 < 中线 < 长线 | 各周期同步下跌,应回避 |
    | 多空分歧 | 线的方向不一致 | 趋势不明,等待收敛 |

    ### 2. 穿越信号

    - **短线穿越零轴**:20 日动量反转,短线进场或离场信号
    - **中线穿越趋势**:ROC(60) 与其平滑线金叉/死叉,中期趋势转向确认
    - **长线拐头**:长线从下降转为上升,大级别底部信号

    ### 3. "捉妖"条件(强势股筛选)

    同时满足以下条件时,可能是趋势刚启动的强势股:

    1. 短线 > 0 (短期动量向上)
    2. 中线 > 0 (中期趋势向上)
    3. 长线从负转正或即将转正(长线趋势刚反转)
    4. 短线 > 中线 > 趋势(动量加速,不是减速)

    ### 4. 风险信号

    - 短线远高于中线(乖离过大):短期过热,有回调风险
    - 中线 > 0 但趋势 < 0:中期反弹但平滑趋势未确认,可能是假突破
    - 四线同时从高位回落:多周期共振见顶

    ## 注意事项

    - 前置数据不足时(< N1=120 根 K 线),长线值为 NaN ,属于正常现象
    - 指标是价格幅度的度量,不直接产生买卖信号,需结合成交量、K 线形态综合判断
    - "妖股"往往波动剧烈,共振信号出现后也可能快速消失,不宜单独作为唯一依据
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   929 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 19:24 · PVG 03:24 · LAX 12:24 · JFK 15:24
    ♥ Do have faith in what you're doing.