MyTT-精炼且高效的量化工具箱


这个仓库名为 MyTT,它是一个精炼且高效的量化工具箱,可将通达信、同花顺、文华麦语言等指标公式最简移植到 Python 中。以下是对该仓库的详细介绍:

功能特点

  1. 核心库轻量化:项目核心库仅一个文件 MyTT.py,无需安装设置,可自由裁剪,使用时只需 from MyTT import * 即可。
  2. 代码易读:代码逻辑简单易懂,即使是初学者也能轻松理解,还可自行添加指标并应用到项目中。
  3. 无需安装 ta - lib 库:采用纯 Python 代码实现核心逻辑,避免了安装 ta - lib 库可能遇到的问题。
  4. 指标写法兼容:与通达信、同花顺的指标写法完全兼容,新指标基本无需修改即可直接使用。
  5. 高性能:主要依靠 numpy 和 pandas 的内置函数实现各种指标,基本不用循环,性能卓越。
  6. 多参数输出:和 Talib 库一样,支持多天参数输入,多天指标输出(序列进,序列出),便于画图和观察趋势。
  7. 指标一致性:实现的各种指标与通达信、同花顺、雪球等软件的技术指标在小数点后 2 位保持一致。
  8. 高级进阶版本:仓库中包含 MyTT_plus.py 文件,收录了高级复杂用法的函数和实验验证函数。
  9. Python2 兼容性:提供 MyTT_python2.py 文件,可在 Python2 的老版本 pandas 中使用。

安装方法

  • 直接拷贝:将 MyTT.py 拷贝到项目目录下,使用 from MyTT import * 即可调用文件中的所有函数。
  • 传统标准库安装:使用 pip install MyTT 进行安装。

示例代码

以下是一个数字货币行情获取和指标计算的演示代码:

# 数字货币行情获取和指标计算演示
from  hb_hq_api import *         # 数字货币行情库
from  MyTT import *              # myTT 麦语言工具函数指标库

# 获取 btc.usdt 交易对 120 日的数据
df = get_price('btc.usdt', count=120, frequency='1d')  # '1d' 是 1 天, '4h' 是 4 小时

# 基础数据定义,只要传入的是序列都可以
CLOSE = df.close.values
OPEN = df.open.values
HIGH = df.high.values
LOW = df.low.values

MA5 = MA(CLOSE, 5)  # 获取 5 日均线序列
MA10 = MA(CLOSE, 10)  # 获取 10 日均线序列

print('BTC5 日均线', MA5[-1])  # 只取最后一个数
print('BTC10 日均线', RET(MA10))  # RET(MA10) == MA10[-1]
print('今天 5 日线是否上穿 10 日线', RET(CROSS(MA5, MA10)))
print('最近 5 天收盘价全都大于 10 日线吗?', EVERY(CLOSE > MA10, 5))

教程和案例应用

仓库提供了多个教程和案例应用链接,涵盖了通达信公式转 Python、指标公式整合、计算精度验证、在聚宽研究环境中建立库文件、编写 Python 版通达信指标以及 EMA 指数平均公式推导等内容。

部分工具函数

  • n 天前的数据REF
REF(CLOSE, 1)  # 截止到昨天收盘价 序列
  • 移动平均线计算MA
MA(CLOSE, 5)  # 取得收盘价 5 日平均线
  • 加权移动平均计算EMA
EMA(CLOSE, 5)  # 为了精度 , EMA 至少需要 120 周期

文件结构

.gitignore
MyTT.py
MyTT_plus.py
MyTT_python2.py
README.md
example1.py
hb_hq_api.py
img/
  boll.png
  taq.jpg
.vscode/
  settings.json

这些文件和文件夹包含了核心库文件、高级进阶版本文件、Python2 兼容版本文件、示例代码、行情获取代码以及相关图片和配置文件等。

github