All Projects → mpquant → MyTT

mpquant / MyTT

Licence: other
MyTT将通达信,同花顺,文华麦语言等指标公式,最简移植到Python中,核心库单个文件,仅百行代码,十几个核心函数,神奇的实现所有常见技术指标算法(不依赖talib库)的纯python实现和转换通达信MACD,RSI,BOLL,ATR,KDJ,CCI,PSY等公式,全部基于pandas函数计算方法封装,简洁且高性能,能非常方便的应用在股票指标公式,股市期货量化框架分析,自动程序化交易,数字货币量化等领域,它是您最精练的股市量化工具。Python library with most stock market indicators.

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to MyTT

Yykline
iOS YYKline:Kline、Chart、Volume、Scroll、Scale、MACD、KDJ、K线图、分时图...
Stars: ✭ 2,318 (+161.04%)
Mutual labels:  stock, rsi, macd, kdj, boll
StockChart
StockChart是一款适用于Android的高扩展性、高性能股票图开发库,轻松完成各种子图的组合,还能灵活的定制自己的子图满足复杂的业务需求。
Stars: ✭ 62 (-93.02%)
Mutual labels:  stock, macd, kdj, boll
Customizable-Crypto-Currency-Dashboard-with-Chart
📺 A Dashboard with the price movements of the selected Cryptocurrencies 💹
Stars: ✭ 79 (-91.1%)
Mutual labels:  btc, indicators, rsi
algorithmic-market-prediction
Implementation of Algorthmic Prediction of Candle Patterns
Stars: ✭ 21 (-97.64%)
Mutual labels:  stock, rsi, macd
HTML-Crypto-Currency-Chart-Snippets
💹 Simple HTML Snippets to create Tickers / Charts of Cryptocurrencies with the TradingView API 💹
Stars: ✭ 89 (-89.98%)
Mutual labels:  btc, indicators, rsi
Akshare
AKShare is an elegant and simple financial data interface library for Python, built for human beings! 开源财经数据接口库
Stars: ✭ 4,334 (+388.06%)
Mutual labels:  stock, quant
Hycharts
柱状图、折/曲线图、K线图(主图、交易量图、辅助图), 图与图可以自由组合, 支持分页加载数据 -----> 低内存、低耗电、滑动缩放顺滑
Stars: ✭ 394 (-55.63%)
Mutual labels:  stock, btc
Rqalpha
A extendable, replaceable Python algorithmic backtest && trading framework supporting multiple securities
Stars: ✭ 4,425 (+398.31%)
Mutual labels:  stock, quant
Abu
阿布量化交易系统(股票,期权,期货,比特币,机器学习) 基于python的开源量化交易,量化投资架构
Stars: ✭ 8,589 (+867.23%)
Mutual labels:  stock, quant
Kschart
k线图/kline/kchart,已经集成MA/EMA/MACD/KDJ/BOLL/RSI/WR/AVG等指标,新增指标及其方便。适用于股票/区块链交易所等种类App。Swift5编写,CPU/内存占用率极低,60FPS稳定运行。示例集成websocket,并接入币安数据(需VPN)。
Stars: ✭ 909 (+2.36%)
Mutual labels:  stock, btc
Pyspider Stock
A project using pyspider to collect data and NLP techs to analyze the correlation among the data
Stars: ✭ 56 (-93.69%)
Mutual labels:  stock, quant
trader
交易模块
Stars: ✭ 20 (-97.75%)
Mutual labels:  stock, quant
Amazingquant
基于Event-driven的量化交易解决方案
Stars: ✭ 128 (-85.59%)
Mutual labels:  stock, quant
Trady
Trady is a handy library for computing technical indicators, and it targets to be an automated trading system that provides stock data feeding, indicator computing, strategy building and automatic trading. It is built based on .NET Standard 2.0.
Stars: ✭ 433 (-51.24%)
Mutual labels:  stock, quant
dipiper
基于nodejs的股票数据爬虫
Stars: ✭ 83 (-90.65%)
Mutual labels:  stock, quant
Fooltrader
quant framework for stock
Stars: ✭ 960 (+8.11%)
Mutual labels:  stock, quant
Zvt
modular quant framework.
Stars: ✭ 1,801 (+102.82%)
Mutual labels:  stock, quant
Friartuck
Live Quant Trading Framework for Robinhood, using IEX Trading and AlphaVantage for Free Prices.
Stars: ✭ 142 (-84.01%)
Mutual labels:  stock, quant
akshare
AKShare is an elegant and simple financial data interface library for Python, built for human beings! 开源财经数据接口库
Stars: ✭ 5,155 (+480.52%)
Mutual labels:  stock, quant
openctp
CTP开放平台提供A股、港股、美股、期货、期权等全品种接入通道,通过提供中泰证券XTP、华鑫证券奇点、东方证券OST、东方财富证券EMT、盈透证券TWS等各通道的CTPAPI接口,CTP程序可以无缝对接各股票柜台。平台也提供了一套基于TTS交易系统的模拟环境,同样提供了CTPAPI兼容接口,可以替代Simnow,为CTP量化交易开发者提供7x24可用的模拟环境。
Stars: ✭ 389 (-56.19%)
Mutual labels:  stock, quant

MyTT (My麦语言 T通达信 T同花顺)

MyTT是您量化工具箱里的瑞士军刀,精炼而高效,它将通达信,同花顺,文华麦语言等指标公式indicators,最简移植到Python中,核心库单个文件,仅百行代码,实现和转换同花顺通达信所有常见指标MACD,RSI,BOLL,ATR,KDJ,CCI,PSY等,全部基于numpy和pandas的函数封装,简洁且高性能,能非常方便的应用在各自股票股市技术分析,股票自动程序化交易,数字货币BTC等量化等领域.Mini Python library with most stock market indicators.

license

功能特点

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

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

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

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

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

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

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

  • MyTT高级进阶版本,收录了高级复杂用法的函数和实验验证函数 MyTT_plus

  • MyTT也能在python2的老版本pandas中使用,请用此python2版本 MyTT_python2

先看一个最简单的例子

#数字货币行情获取和指标计算演示
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小时

#-----------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             #例如 CLOSE=list(df.close) 都是一样

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.py到你的项目下 from MyTT import * 即可调用文件中的所有函数

  • 传统标准库安装 pip install MyTT

from  MyTT import *                 #声明调用MyTT, 请注意大小写
S=np.random.randint(1,99,[10])      #生成1-99内的10个数序列 
EMA(S,6)                            #对这个序列S进行6周期EMA指数平均计算

教程和案例应用

MyTT库中的部分工具函数

  • n天前的数据:REF
REF(CLOSE, 1)              # 截止到昨天收盘价 序列
  • 移动平均线计算: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天都是收阳线
  • 从前A日到前B日一直满足条件 :LAST
LAST(CLOSE>OPEN,5,3)                    #5天前到3天前是否都收阳线
  • n天内是否至少满足条件一次:EXIST
EXIST(CLOSE>OPEN, 5)                   #最近5天是否有一天收阳线
  • 上一次条件成立到当前的周期:BARSLAST
BARSLAST(CLOSE/REF(CLOSE)>=1.1)         #上一次涨停到今天的天数
  • 返回序列的线性回归斜率:SLOPE
SLOPE(MA(CLOSE,10),5)                   #得到10日平均线最近5天的斜率(其实就是MA均线的方向)
  • 取回线性回归后的预测值:FORCAST
FORCAST(CLOSE,20)                       #根据最近20日的走势预测明天的收盘价
  • n天内最大值:HHV
HHV(MAX(OPEN, CLOSE), 20)               #最近20天K线实体的最高价
  • n天内最小值:LLV
LLV(MIN(OPEN, CLOSE), 60)              #最近60天K线实体的最低价
  • 条件 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)*2
    return 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)) * 100
    K = EMA(RSV, (M1*2-1));    D = EMA(K,(M2*2-1));        J=K*3-D*2
    return K, D, J
def RSI(CLOSE, N=24):                     #RSI指标
    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)) * 100
    WR1 = (HHV(HIGH, N1) - CLOSE) / (HHV(HIGH, N1) - LLV(LOW, N1)) * 100
    return RD(WR), RD(WR1)
def BIAS(CLOSE,L1=6, L2=12, L3=24):      #BIAS乖离率
    BIAS1 = (CLOSE - MA(CLOSE, L1)) / MA(CLOSE, L1) * 100
    BIAS2 = (CLOSE - MA(CLOSE, L2)) / MA(CLOSE, L2) * 100
    BIAS3 = (CLOSE - MA(CLOSE, L3)) / MA(CLOSE, L3) * 100
    return RD(BIAS1), RD(BIAS2), RD(BIAS3)
def BOLL(CLOSE,N=20, P=2):                #BOLL布林带    
    MID = MA(CLOSE, N); 
    UPPER = MID + STD(CLOSE, N) * P
    LOWER = MID - STD(CLOSE, N) * P
    return RD(UPPER), RD(MID), RD(LOWER)    
def PSY(CLOSE,N=12, M=6):                 #PSY心理线指标
    PSY=COUNT(CLOSE>REF(CLOSE,1),N)/N*100
    PSYMA=MA(PSY,M)
    return RD(PSY),RD(PSYMA)
def CCI(CLOSE,HIGH,LOW,N=14):            #CCI顺势指标
    TP=(HIGH+LOW+CLOSE)/3
    return (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)
def BBI(CLOSE,M1=3,M2=6,M3=12,M4=20):    #BBI多空指标   
    return (MA(CLOSE,M1)+MA(CLOSE,M2)+MA(CLOSE,M3)+MA(CLOSE,M4))/4  
def TAQ(HIGH,LOW,N):                         #唐安奇通道(海龟)交易指标,大道至简,能穿越牛熊
    UP=HHV(HIGH,N);    DOWN=LLV(LOW,N);    MID=(UP+DOWN)/2
    return UP,MID,DOWN
def KTN(CLOSE,HIGH,LOW,N=20,M=10):           #肯特纳交易通道, N选20日,ATR选10日
    MID=EMA((HIGH+LOW+CLOSE)/3,N)
    ATRN=ATR(CLOSE,HIGH,LOW,M)
    UPPER=MID+2*ATRN;   LOWER=MID-2*ATRN
    return UPPER,MID,LOWER   
def TRIX(CLOSE,M1=12, M2=20):                #三重指数平滑平均线
    TR = EMA(EMA(EMA(CLOSE, M1), M1), M1)
    TRIX = (TR - REF(TR, 1)) / REF(TR, 1) * 100
    TRMA = MA(TRIX, M2)
    return TRIX, TRMA
def BRAR(OPEN,CLOSE,HIGH,LOW,M1=26):         #BRAR-ARBR 情绪指标  
    AR = SUM(HIGH - OPEN, M1) / SUM(OPEN - LOW, M1) * 100
    BR = SUM(MAX(0, HIGH - REF(CLOSE, 1)), M1) / SUM(MAX(0, REF(CLOSE, 1) - LOW), M1) * 100
    return AR, BR
def MTM(CLOSE,N=12,M=6):                    #动量指标
    MTM=CLOSE-REF(CLOSE,N);         MTMMA=MA(MTM,M)
    return MTM,MTMMA
def ROC(CLOSE,N=12,M=6):                     #变动率指标
    ROC=100*(CLOSE-REF(CLOSE,N))/REF(CLOSE,N);    MAROC=MA(ROC,M)
    return ROC,MAROC
def EXPMA(CLOSE,N1=12,N2=50):                #EMA指数平均数指标
    return EMA(CLOSE,N1),EMA(CLOSE,N2);
def OBV(CLOSE,VOL):                          #能量潮指标
    return SUM(IF(CLOSE>REF(CLOSE,1),VOL,IF(CLOSE<REF(CLOSE,1),-VOL,0)),0)/10000
def MFI(CLOSE,HIGH,LOW,VOL,N=14):            #MFI指标是成交量的RSI指标
    TYP = (HIGH + LOW + CLOSE)/3
    V1=SUM(IF(TYP>REF(TYP,1),TYP*VOL,0),N)/SUM(IF(TYP<REF(TYP,1),TYP*VOL,0),N)  
    return 100-(100/(1+V1))    

因为语法的问题 =: 是不能用了,python就是=号 ,条件与是& ,条件或是|

#通达信函数 VAR1:=(C>REF(C,1) AND C>REF(C,2));
 python写法: VAR1=( (CLOSE>REF(CLOSE,1)) & (CLOSE>REF(CLOSE,2)) );

# 收盘价在10日均线上 且10日均线在20日均线上
python写法: (C > MA(C, 10)) & (MA(C, 10) > MA(C, 20))

# 收阳线 或 收盘价大于昨收
python写法: (CLOSE > O) | (CLOSE > REF(CLOSE, 1))

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');
Boll线

唐安奇交易通道指标计算和做图演示 (沪深300指数)

up,mid,down=TAQ(HIGH,LOW,20)                                    #获取唐安奇交易通道数据,大道至简,能穿越牛熊
plt.figure(figsize=(15,8))  
plt.plot(CLOSE,label='沪深300指数')                                  
plt.plot(up,label='唐安奇-上轨');     plt.plot(mid,label='唐安奇-中轨');      plt.plot(down,label='唐安奇-下轨')
taq

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

  • pandas

代码贡献者Contributors

火焰,jqz1226, stanene, bcq

团队其他开源项目 - 如果本项目能帮助到您,请右上角帮我们点亮 ★star 以示鼓励!


加入群聊

股市程序化交易大群,数字货币量化交易探讨, 圈内大咖量化策略分享

全是干货,无闲聊 ,物以类聚,人以群分,一起感受思维碰撞的力量!

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].