Python量化交易学习——Part3:Talib金融库常用技术指标1
Talib的中文翻译为技术分析库,是一种以python为基础的广泛用于量化交易的分析函数库。
从本节开始,我们针对常用的函数进行使用讲解。
talib.MA
函数名:MA
名称: 移动平均线
简介:移动平均线,Moving Average,简称MA,原本的意思是移动平均,由于我们将其制作成线形,所以一般称之为移动平均线,简称均线。它是将某一段时间的收盘价之和除以该周期。 比如日线MA5指5天内的收盘价除以5 。
real = MA(close, timeperiod=30, matype=0)
| 参数 | 类型 | 说明 |
|---|---|---|
| close | list | 收盘价 |
| timeperiod | int | 时间周期 |
| matype | int | 采用不一样的加权方式对数据进行处理 |
close和timeperiod这两个参数指标很容易理解,Talib MA_Type这个参数我单独列出来讲解一下:
import talib
from talib import MA_Type
MA_Type: 0=SMA, 1=EMA, 2=WMA, 3=DEMA, 4=TEMA, 5=TRIMA, 6=KAMA, 7=MAMA, 8=T3 (Default=SMA)
常用MA均线主要有:
| 名称 | 含义 |
|---|---|
| 简单移动平均(英语:simple moving average,SMA) | 是某变数之前n个数值的未作加权算术平均。例如,收市价的10日简单移动平均指之前10日收市价的平均数。 |
| 指数移动平均(英语:exponential moving average,EMA或EWMA) | 是以指数式递减加权的移动平均。各数值的加权影响力随时间而指数式递减,越近期的数据加权影响力越重,但较旧的数据也给予一定的加权值 |
| 加权移动平均(英语:weighted moving average,WMA) | 指计算平均值时将个别数据乘以不同数值,在技术分析中,n日WMA的最近期一个数值乘以n、次近的乘以n-1,如此类推,一直到0: |
| 双指数移动平均(英语:double exponential moving average,DEMA) | |
| 三重指数移动平均(英语:trible exponential moving average,DEMA) | |
| 三角移动平均(英语:Triangular Moving Average) | |
| 考夫曼自适应移动平均(Kaufman Adaptive Moving Average,简称 KAMA) | KAMA = KAMA(1)(ABS(Price-Price(1))(2/(Time Period+1))+KAMA(1)*(1-2/(Time Period+1))) 其中,KAMA(1)表示上一周期的KAMA值,Price表示当前价格,Price(1)表示上一周期的价格,Time Period表示KAMA指标的时间周期。 |
| 自适应移动平均(MESA Adaptive Moving Average,MAMA) | |
| 3是三重移动平均线,全称是Triple Exponential Moving Average。 | T3 = 3 * EMA(close, n - (3 * EMA(EMA(close, n), n)) + EMA(EMA(EMA(close, n), n), n))其中,EMA表示指数移动平均线,close表示收盘价,n表示计算周期。 |
T3指标和TEMA指标的区别:
T3指标(Triple Exponential Moving Average)和TEMA指标(Triple Exponential Moving Average)都是基于指数移动平均线的技术指标,但它们之间有一些区别。
计算方法:T3指标使用三次指数移动平均线的计算方法,而TEMA指标使用了三次指数移动平均线和双重指数移动平均线的计算方法。
平滑性:T3指标相对于TEMA指标更加平滑,因为它使用了三次指数移动平均线的计算,使得指标对市场波动的反应相对较慢。
延迟性:由于T3指标的平滑性,它可能会产生较大的滞后,导致在市场趋势发生变化时,进出场信号的延迟。而TEMA指标相对于T3指标具有更快的响应速度,更容易捕捉到市场的变化。
适用性:T3指标适用于较长时间周期的市场,可以用于识别和跟踪长期趋势。而TEMA指标适用于各种市场和时间周期,因为它的计算方法结合了多个指数移动平均线,可以更好地适应不同的市场环境。
MA均线应用实例
from gm.api import *
import talib
import numpy as np
# 与数据库进行通信,将账号密码加密后发送给服务器
set_token("你自己的token")
# 获取历史交易数据,海康威视近100工作日交易数据的收盘价)
data = history_n(symbol="SZSE.002415",frequency="3600s",count=100,end_time="2024-05-31",fields="close",fill_missing="last",adjust=ADJUST_PREV,df=True)
# 从字典中提取收盘价到数组中
close = np.asarray(data["close"].values)
# 对获取数据进行处理,得到3日SMA均线
SMA3 = talib.MA(close,timeperiod = 3,matype = 0)
# 将前方NAN值置为0,防止后续数据处理出错
SMA3 = np.nan_to_num(SMA3)
# 打印数据
print(SMA3)
EMA均线应用实例
前面我们说到过,可以采用将matype值置为1的形式获取EMA均线,但还有一种更简单的方案,talib库中提供了talib.EMA() 函数,可以直接获取数据地EMA均线。
import talib
import numpy as np
#MA_Type: 0=SMA, 1=EMA, 2=WMA, 3=DEMA, 4=TEMA, 5=TRIMA, 6=KAMA, 7=MAMA, 8=T3 (Default=SMA)
# 与数据库进行通信,将账号密码加密后发送给服务器
set_token("你自己的token")
# 获取历史交易数据,海康威视近100工作日交易数据的收盘价)
data = history_n(symbol="SZSE.002415",frequency="3600s",count=100,end_time="2024-05-31",fields="close",fill_missing="last",adjust=ADJUST_PREV,df=True)
# 从字典中提取收盘价到数组中
close = np.asarray(data["close"].values)
# 方法1,选择matype=1,得到3日EMA均线
SMA3 = talib.MA(close,timeperiod = 3,matype = 1)
SMA3 = np.nan_to_num(SMA3)
print(SMA3)
# 方法2,采用talib.EMA函数,得到3日EMA均线
EMA3= talib.EMA(close,timeperiod = 3)
EMA3 = np.nan_to_num(EMA3)
print(EMA)
大家可以对比一下以上两种方法得到的结果,可以发现是一模一样的。
初次之外,talib库中还提供可很多技术分析指标,我这里仅罗列出来,后面会一一的进行讲解。
其他技术分析指标
Talib库中提供的技术分析技术指标有:
(在talib金融库中成为Overlap Studies)
BBANDS Bollinger Bands #布林带
DEMA Double Exponential Moving Average #双指数移动平均线
EMA Exponential Moving Average #指数滑动平均
HT_TRENDLINE Hilbert Transform - Instantaneous Trendline #希尔伯特变换瞬时趋势
KAMA Kaufman Adaptive Moving Average #卡玛考夫曼自适应移动平均
MA Moving average #均线
MAMA MESA Adaptive Moving Average #自适应移动平均
MAVP Moving average with variable period #变周期移动平均
MIDPOINT MidPoint over period #在周期的中点
MIDPRICE Midpoint Price over period #中间时段价格
SAR Parabolic SAR #抛物线转向指标
SAREXT Parabolic SAR - Extended #抛物线转向指标 - 扩展
SMA Simple Moving Average# 简单移动平均线
T3 Triple Exponential Moving Average (T3)
TEMA Triple Exponential Moving Average#三次指数移动平均
TRIMA Triangular Moving Average# 三角形移动平均
WMA Weighted Moving Average#加权移动平均线
转载请注明出处:雪中嬉戏的柴犬
