MyTT是什么?

MyTT将通达信,同花顺,文华麦语言等指标公式indicators,最简移植到Python中,核心库单个文件,仅百行代码,实现所有常见指标MACD,RSI,BOLL,ATR,KDJ,CCI,PSY等,全部基于numpy和pandas的函数封装,简洁且高性能,能非常方便的应用在各自股票股市技术分析量化等领域

库非常精简,70行核心代码就实现同花顺通达信大部分技术指标公式

功能特点

  • 核心库轻量化: 项目库就一个文件MyTT.py,不用安装,不用设置,随用随走 ( from MyTT import * 即可 )

  • 代码人类化:) 没有什么炫耀的编程花样,初学者也能看懂,自己就能自行增加指标,马上就能用在项目中。

  • 不需要安装ta-lib库,是纯python代码实现的的核心逻辑,很多人都有安装ta-lib库的痛苦经历

  • 和通达信,同花顺的指标写法完全兼容,一个新的指标基本不用做修改,直接拿来即可使用

  • 超高性能,基本不用循环,全是靠numpy,pandas的内置函数实现各种指标

  • 和Talib库一样是多天参数进,多天指标出(序列进,序列出),便于画图和观察趋势

  • MyTT实现的各种指标和通达信,同花顺,雪球等软件的技术指标一致到小数点后2位

先看一个最简单的例子


#数字货币行情获取和指标计算演示
from  hb_hq_api import *         #数字货币行情库
from  MyTT import *              #myTT麦语言工具函数指标库#获取btc.usdt交易对120日的数据
df=get_price('btc.usdt',count=120,frequency='1d');     # ‘4h’是4小时#-----------df结果如下表(股市也基本一样)-------------------------------------------
open close high low vol
2021-05-16 48983.62 47738.24 49800.00 46500.0 1.333333e+09
2021-05-17 47738.24 43342.50 48098.66 42118.0 3.353662e+09
2021-05-18 43342.50 44093.24 45781.52 42106.0 1.793267e+09

#-------有数据了,下面开始正题 -------------
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) )

MyTT库中的部分工具函数

  • n天前的数据:REF
REF(CLOSE, 1)              # 截止到昨天收盘价 序列
  • 从序列中取倒数第N个数据(单个):RET
RET(CLOSE, 1)             # 最近一天的收盘价,单个数据
  • 从序列中所有元素四舍五入:RD
RD(CLOSE)                    # 默认返回3位小数
  • 移动平均线计算:MA
MA(CLOSE, 5)             # 取得收盘价5日平均线
  • 加权移动平均计算:EMA
EMA(CLOSE, 5)            # 为了精度 ,  EMA至少需要120周期
  • 中国式的SMA计算:SMA
SMA(CLOSE, 5)            # 为了精度 ,  SMA至少需要120周期
  • 返回序列标准差:STD
STD(CLOSE, 5)             # 返回收盘价5日内标准差
  • 平均绝对偏差:AVEDEV
AVEDEV(CLOSE, 5)    # 序列与其平均值的绝对差的平均值
  • 金叉判断:CROSS
CROSS(MA(CLOSE, 5), MA(CLOSE, 10))    # 5日均线上穿10日均线
  • 两个序列取最大值,最小值:MAX MIN
MAX(OPEN, CLOSE )                       # K线实体的最高价
  • n天内满足条件的天数:COUNT
COUNT(CLOSE > OPEN, 10)           # 最近10天收阳线的天数
  • n天内全部满足条件的天数:EVERY
EVERY(CLOSE >OPEN, 5)           # 最近5天都是收阳线
  • n天内是否至少满足条件一次:EXIST
EXIST(CLOSE >OPEN, 5)           # 最近5天是否有一天收阳线
  • n天内最大值:HHV
HHV(MAX(OPEN, CLOSE), 20)        # 最近20天K线实体的最高价
  • n天内最小值:LLV
LLV(MIN(OPEN, CLOSE), 60)          # 最近60天K线实体的最低价
  • 求和n日数据 SUM
SUM(CLOSE, 10)                            # 求和10天的收盘价
  • 条件 IF
IF(OPEN > CLOSE, OPEN, CLOSE)        #如果 开盘>收盘  返回OPEN ,否则返回CLOSE

具体指标的实现,全部基于MyTT库中的工具函数 (更多指标可以自行添加)

def MACD(CLOSE,SHORT=12,LONG=26,M=9):    # EMA的关系,CLOSE取120日,结果能精确到雪球小数点2位DIF = EMA(CLOSE,SHORT)-EMA(CLOSE,LONG);  DEA = EMA(DIF,M);      MACD=(DIF-DEA)*2return RD(DIF),RD(DEA),RD(MACD)
def KDJ(CLOSE,HIGH,LOW, N=9,M1=3,M2=3):   RSV = (CLOSE - LLV(LOW, N)) / (HHV(HIGH, N) - LLV(LOW, N)) * 100K = EMA(RSV, (M1*2-1));    D = EMA(K,(M2*2-1));        J=K*3-D*2return K, D, J
def RSI(CLOSE, N=24):      DIF = CLOSE-REF(CLOSE,1) return RD(SMA(MAX(DIF,0), N) / SMA(ABS(DIF), N) * 100)
def WR(CLOSE, HIGH, LOW, N=10, N1=6):            #W&R 威廉指标WR = (HHV(HIGH, N) - CLOSE) / (HHV(HIGH, N) - LLV(LOW, N)) * 100WR1 = (HHV(HIGH, N1) - CLOSE) / (HHV(HIGH, N1) - LLV(LOW, N1)) * 100return RD(WR), RD(WR1)
def BIAS(CLOSE,L1=6, L2=12, L3=24):  # BIAS乖离率BIAS1 = (CLOSE - MA(CLOSE, L1)) / MA(CLOSE, L1) * 100BIAS2 = (CLOSE - MA(CLOSE, L2)) / MA(CLOSE, L2) * 100BIAS3 = (CLOSE - MA(CLOSE, L3)) / MA(CLOSE, L3) * 100return RD(BIAS1), RD(BIAS2), RD(BIAS3)
def BOLL(CLOSE,N=20, P=2):            #BOLL布林带    MID = MA(CLOSE, N); UPPER = MID + STD(CLOSE, N) * PLOWER = MID - STD(CLOSE, N) * Preturn RD(UPPER), RD(MID), RD(LOWER)
def PSY(CLOSE,N=12, M=6):  PSY=COUNT(CLOSE>REF(CLOSE,1),N)/N*100PSYMA=MA(PSY,M)return RD(PSY),RD(PSYMA)
def CCI(CLOSE,HIGH,LOW,N=14):  TP=(HIGH+LOW+CLOSE)/3return (TP-MA(TP,N))/(0.015*AVEDEV(TP,N))
def ATR(CLOSE,HIGH,LOW, N=20):   #真实波动N日平均值TR = MAX(MAX((HIGH - LOW), ABS(REF(CLOSE, 1) - HIGH)), ABS(REF(CLOSE, 1) - LOW))return MA(TR, N)

因为语法的问题,条件与是& ,条件或是|


# 收盘价在10日均线上 且10日均线在20日均线上
(C > MA(C, 10)) & (MA(C, 10) > MA(C, 20))# 收阳线 或 收盘价大于昨收
(C > O) | (C > REF(C, 1))

自定义指标示例

对于 DMI 这个指标,你会发现 TALib 算出来的结果,和同花顺等软件的结果不一样,是因为同花顺的公式和 TALib 的计算公式不一样,对于这种情况,只要把同花顺的公式搬过来,就可以算出和同花顺一样的结果。

M1, M2 = 14, 6
TR = SUM(MAX(MAX(HIGH - LOW, ABS(HIGH - REF(CLOSE, 1))), ABS(LOW - REF(CLOSE, 1))), M1)
HD = HIGH - REF(HIGH, 1)
LD = REF(LOW, 1) - LOWDMP = SUM(IF((HD > 0) & (HD > LD), HD, 0), M1)
DMM = SUM(IF((LD > 0) & (LD > HD), LD, 0), M1)
DI1 = DMP * 100 / TR
DI2 = DMM * 100 / TR
ADX = MA(ABS(DI2 - DI1) / (DI1 + DI2) * 100, M2)
ADXR = (ADX + REF(ADX, M2)) / 2print(DI1, DI2, ADX, ADXR)

BOLL带指标数据获取和做图演示 (上证综指)

up,mid,lower=BOLL(CLOSE)                                        #获取布林带数据 plt.figure(figsize=(15,8))
plt.plot(CLOSE,label='上证');    plt.plot(up,label='up');        #画图显示
plt.plot(mid,label='mid');      plt.plot(lower,label='lower');

需安装第三方库(无需ta-lib库,所有指标实现仅需要安装pandas既可)

  • pandas

目前项目已经开源:

https://github.com/mpquant/MyTT

70行代码实现同花顺,通达信,麦语言大部分技术指标公式相关推荐

  1. 麦语言和python区别_funcat: Funcat 将同花顺、通达信、文华财经麦语言等的公式写法移植到了 Python 中。...

    Funcat Funcat 将同花顺.通达信.文华财经等的公式移植到了 Python 中. 同花顺.通达信.文华财经麦语言等公式的表达十分简洁,适合做技术分析. 苦于 Python 缺乏这种领域特定语 ...

  2. 麦语言转换python_funcat: Funcat 将同花顺、通达信、文华财经麦语言等的公式写法移植到了 Python 中。...

    Funcat Funcat 将同花顺.通达信.文华财经等的公式移植到了 Python 中. 同花顺.通达信.文华财经麦语言等公式的表达十分简洁,适合做技术分析. 苦于 Python 缺乏这种领域特定语 ...

  3. 麦语言和python区别_GitHub - cedricporter/funcat: Funcat 将同花顺、通达信、文华财经麦语言等的公式写法移植到了 Python 中。...

    Funcat Funcat 将同花顺.通达信.文华财经等的公式移植到了 Python 中. 同花顺.通达信.文华财经麦语言等公式的表达十分简洁,适合做技术分析. 苦于 Python 缺乏这种领域特定语 ...

  4. 麦语言和python区别_GitHub - bankwang/funcat: Funcat 将同花顺、通达信、文华财经麦语言等的公式写法移植到了 Python 中。...

    Funcat Funcat 将同花顺.通达信.文华财经等的公式移植到了 Python 中. 同花顺.通达信.文华财经麦语言等公式的表达十分简洁,适合做技术分析. 苦于 Python 缺乏这种领域特定语 ...

  5. 用70行代码实现日志分析程序​

    python又一力作,感受python的强大.用70行代码实现日志分析程序 功能介绍:可直接对文本日至进行分组和排序功能,完了输出结果粘贴到excel里就可以直接生成图表,对于排查一些生产环境问题有很 ...

  6. obv代码matlab,通达信精进终极obv指标公式,通达信obv指标公式源码

    内容导航: Q1:求通达信OBV股票选股公式,谢谢! VA:=IF(CLOSE>REF(CLOSE,1),VOL,-VOL); OBV:=SUM(IF(CLOSE=REF(CLOSE,1),0, ...

  7. 爬取微信文章,用70行代码爬取了搜狗上666篇文章

    因为再看崔庆才的教程,刚好看到爬取微信文章,所以就想着自己试试.打开搜狗发现,搜狗的微信文章页面网页布局有了变化(准确来说是简单了一点). 所以分析了一下,用了70行代码实现了爬取上面['搞笑', ' ...

  8. 70行代码撸一个桌面自动翻译神器(采用Markdown格式编写)

    70行代码撸一个桌面自动翻译神器 前言 工作上经常需要与外国友人邮件沟通,奈何工作电脑没有安装有道词典一类的翻译软件,结合自己的需要,自己撸一个桌面翻译神器. 基本思路:基于PySimpleGUI开发 ...

  9. 通达信波段主图指标公式,源码简洁原理却不简单

    通达信波段主图指标公式的核心语句也就4句,后面的语句都是为了画图的.公式看起来比较简单,原理也比较巧妙,但是理解起来有些困难. 直接上源码: HH:=HHV(H,5); LL:=LLV(L,5); T ...

最新文章

  1. 绝对是最实用 PostMan测试进阶操作 token校验 参数传递 存为环境变量 避免重复copy
  2. 利用SQL中的递归返回多行数据的连接
  3. 部署基于tomcat 8 的solrCloud 5.5集群
  4. mysql中lead_SqlServer2012中LEAD函数简单分析_MySQL
  5. 根据语句自动生成正则表达式
  6. thinkphp 视图(一)
  7. linux 多窗口查看多命令的操作结果
  8. http协议(九)响应首部字段
  9. (2)二进制文件方式部署Kubernetes高可用集群----------部署环境准备
  10. 浅谈WebView利用localStore websql和IndexDB 来存储数据
  11. 音视频即时通讯开发功能介绍
  12. 南大计算机系2014保研,【公示】2013年南京大学计算机系保研名单公示(院系初步推免)...
  13. 置换检验 配对秩和检验
  14. 2017-2018 Petrozavodsk Winter Training Camp, Saratov SU Contest C.Cover the Paths 贪心+DFS
  15. 16083001(古墓丽影GPA)
  16. 华为p10有java功能吗_华为P10最强悍的特色功能 很多人都不知道
  17. (诛仙剑C-SKY)2-开发
  18. android 联想云盘,附文:联想云盘安装_联想 小新Air 12 LTE版_笔记本评测-中关村在线...
  19. Problem 2128 最长子串(kmp+strstr好题经典)
  20. ulr实现web资源下载

热门文章

  1. 顶点着色器和片段着色器的区别
  2. sql server 里面的主要数据文件和次要数据文件有什么区别呢
  3. Deep Face Recognition读书笔记
  4. AP AUTOSAR 6——Execution Management
  5. 变量four赋值数字python_第2节:初识python
  6. 什么是招标?招标的组织形式有哪些?
  7. 堆是先进先出,栈是先进后出
  8. Flask SQLAlchemy 操作数据库已有数据表
  9. Chrome:您的连接不是私密连接解决办法
  10. RC并联电路常见应用总结