基于 NumPy 的通达信、同花顺和文华财经公式函数库
Project description
MyTT_plus
MyTT_plus 是一个基于 NumPy 的通达信、同花顺和文华财经技术分析公式函数库。 它提供常用指标、序列计算、条件判断、统计、日期时间和字符串函数,适合公式迁移、 行情研究、量化回测和策略原型开发。
项目不依赖 TA-Lib 和 pandas,支持 Python 3.12 及以上版本。
PyPI 发行包名是
MyTT_plus,安装后的 Python 导入名仍为MyTT。 保留原导入名是为了兼容已有代码。
安装
python -m pip install MyTT_plus
升级到最新版本:
python -m pip install --upgrade MyTT_plus
确认安装结果:
import MyTT
print(MyTT.__version__)
快速开始
import numpy as np
import MyTT
close = np.array([10.0, 10.5, 11.0, 10.8, 11.4, 11.9])
high = close + 0.3
low = close - 0.3
# 常用指标
dif, dea, macd = MyTT.MACD(close)
k, d, j = MyTT.KDJ(close, high, low)
# 通达信式序列公式
ma5 = MyTT.MA(close, 5)
signal = MyTT.CROSS(ma5, MyTT.MA(close, 10))
# 动态引用周期
previous = MyTT.REF(close, [0, 1, 1, 2, 2, 3])
# N=0 表示从第一个有效值累计
history_high = MyTT.HHV(close, 0)
API 约定
- 输入一般是一维 list、tuple 或
numpy.ndarray。 - 序列函数返回与输入等长的
numpy.ndarray。 - 窗口历史不足时返回
nan,不会把不完整窗口误当成有效结果。 - 除数为零时返回
nan,不会生成无限值。 - 函数不会原地修改输入数组。
- 非法周期、长度不一致或无效平滑参数会抛出明确的
TypeError或ValueError。 OPEN、HIGH、LOW、CLOSE、VOL等行情数据需要调用者显式传入。
主要能力
基础序列和条件函数
包括 MA、EMA、SMA、WMA、DMA、REF、SUM、HHV、LLV、
COUNT、EVERY、EXIST、FILTER、CROSS、LONGCROSS、BARSLAST、
VALUEWHEN、BETWEEN 等。
常用技术指标
包括 MACD、KDJ、RSI、BOLL、CCI、ATR、DMI、TRIX、MFI、
OBV、ASI、BIAS、WR、PSY、BBI、VR、CR、EMV、ROC、
SAR、TDX_SAR 等。
通达信兼容扩展
4.1.0 新增 77 个可独立计算的通达信函数,主要包括:
- 数学与逻辑:
ACOS、ASIN、ATAN、EXP、LOG、CEILING、FLOOR、INTPART、FRACPART、ROUND、ROUND2、SIGN、MOD、MAX6、MIN6、REVERSE、RANGE、IFF、IFN、NOT、ISVALID。 - 窗口与定位:
BARSCOUNT、CURRBARSCOUNT、TOTALBARSCOUNT、BARSTATUS、BARSSINCE、BARSLASTS、MULAR、FILTERX、SUMBARS、SUMBARSX、HOD、LOD、HHVLLV、FINDHIGH、FINDLOW及其位置函数。 - 条件与趋势:
UPDOWN、UPNDAY、DOWNNDAY、NDAY、EXISTR。 - 均线与统计:
TMA、MEMA、AMA、EXPMEMA、TR、DEVSQ、STDP、STDDEV、VAR、VARP、COVAR、RELATE、BETAEX。 - 日期和字符串:
DATETODAY、DAYTODATE、TIMETOSEC、SECTOTIME、CON2STR、VAR2STR、STR2CON、STRCAT、VARCAT、SUBSTR、FINDSTR等。
当前公开 152 个公式和指标名称,其中 119 个名称与通达信官网函数表直接对应。
4.1.0 改动说明
新增函数
- 新增独立的通达信兼容层
MyTT.tdx,并从MyTT顶层统一导出。 - 增加数学、统计、周期定位、条件、日期时间和字符串共 77 个函数。
- 增加
BACKSET、BARSNEXT、REFX三个显式未来函数,便于迁移和核对旧公式。 EXPMA(X, N)现在可作为通达信EMA(X, N)的别名使用。EXPMA(X)仍返回 MyTT 传统的 12/50 双线指标,保持旧代码兼容。
兼容性修复
REF(X, N)支持动态周期数组,并支持N=0返回当前值。HHV、LLV、HHVBARS、LLVBARS支持N=0的历史累计语义。STD按通达信定义修正为样本标准差。BETWEEN修正为包含上下边界的闭区间判断。SUMBARS和SUMBARSX分别实现累计不足时返回已有周期数和无效值的语义。- 增加输入长度、周期、平滑参数、除零和缺失数据检查。
工程化改进
- 使用
src/包布局和pyproject.toml构建。 - 提供类型标记,支持 mypy 检查。
- 使用 Ruff 统一代码检查和格式。
- 测试覆盖基础函数、条件、指标、状态函数和兼容扩展,分支覆盖率超过 90%。
- 可同时构建 wheel 和 sdist 安装包。
未来函数警告
BACKSET、BARSNEXT 和 REFX 会使用当前周期之后才能确定的数据。
它们只应用于公式迁移、图形复现或离线研究,不得用于历史回测中的可交易信号,
更不能直接用于实盘决策。
尚不能由本库独立实现的功能
以下能力依赖通达信客户端、外部数据库或专有算法,不能只靠 OHLCV 数组等价实现:
DYNAINFO(*)、FINANCE(*)、Level-2 和实时盘口数据。- 行业、概念、地域、自定义板块及横向统计。
- 跨品种、跨周期、其他公式输出和云公式引用。
COST、WINNER等筹码分布模型及除权除息数据库。DRAWKLINE、DRAWTEXT、STICKLINE等客户端绘图指令。- 账户、下单、撤单、DLL 和客户端交易状态机。
- 部分算法细节未公开的未来函数,如
ZIG、PEAK、TROUGH。
详细审计结果见 通达信函数覆盖审计。
开发和测试
git clone https://github.com/dbx192/MyTT.git
cd MyTT
python -m pip install -e '.[dev]'
pytest
ruff check src tests
ruff format --check src tests
mypy src
python -m build
许可证
本项目采用 GPL-3.0-or-later 许可证。
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file mytt_plus-4.1.0.tar.gz.
File metadata
- Download URL: mytt_plus-4.1.0.tar.gz
- Upload date:
- Size: 112.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4595dddc2c4254c540d8b91d2143571e04a49a8050d22d78dcfaf3a6c1cb2960
|
|
| MD5 |
9920687b0f5c1b26ca54a4be248443b6
|
|
| BLAKE2b-256 |
a684e850ee4492011b296dd0446c6fa4b83a2459c31d8bd6b683fe8775de6f71
|
File details
Details for the file mytt_plus-4.1.0-py3-none-any.whl.
File metadata
- Download URL: mytt_plus-4.1.0-py3-none-any.whl
- Upload date:
- Size: 16.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1e930a6b46b0081d1eeecc609f43f58feb709b29e8ab9db616b79bc94dfef08b
|
|
| MD5 |
24d3f9a726d7b5cacbb5ac4c410879d0
|
|
| BLAKE2b-256 |
ea9fd46ccf4a99b271933103df4923471c2bcae5641b28a0fd5bf6ed76551cae
|