117-TALIB指标策略
由small_q创建,最终由small_q 被浏览 236 用户
简介
本系列文章为大家介绍了技术分析指标,并且介绍了一些常见的使用技术指标构建的策略
量化投资中的技术分析
量化投资是通过数学模型和算法对市场数据进行分析和交易决策的投资方法。技术分析(Technical Analysis)是量化投资中的一个重要分支,旨在通过分析历史价格和交易量数据来预测未来的价格走势。技术分析假设所有市场信息都反映在价格中,价格走势有一定的模式和规律,因此可以通过数学方法进行分析和预测。
技术分析通过多种数学方法和指标对市场数据进行分析,帮助投资者识别市场趋势和交易信号。TA-Lib库提供了丰富的技术分析函数,方便投资者进行量化分析和策略开发。掌握这些技术指标的使用方法及其投资意义,对于量化投资者来说至关重要。
技术分析常用的工具和指标包括移动平均线、相对强弱指数(RSI)、布林带(Bollinger Bands)等。这些工具帮助投资者识别市场趋势、超买超卖状态以及价格波动区间,从而制定相应的交易策略。
TA-Lib库及其函数介绍
TA-Lib(Technical Analysis Library)是一个用于金融数据技术分析的开源库。它包含了许多常用的技术指标计算的Python函数,以下是一些常用函数:
- 简单移动平均:SMA(data, timeperiod):移动平均线用于平滑价格数据,帮助识别长期趋势
- 指数移动平均:EMA(data, timeperiod):加权平均,越近的历史时期权重越大
- 投资意义:移动平均线用于平滑价格数据,帮助识别长期趋势。简单移动平均线(SMA)和指数移动平均线(EMA)是最常用的两种类型
- 相对强弱指数:RSI(data, timeperiod):用于衡量价格变化的速度和幅度,帮助识别超买或超卖状态。一般认为,RSI大于70表示超买,小于30表示超卖
- 布林带:BBANDS(data, timeperiod, nbdevup, nbdevdn, matype):布林带由中间的移动平均线和上下两条标准差线组成,反映了价格的波动范围。价格触及上轨或下轨时,往往预示着市场的逆转或继续趋势
- 平滑异同移动平均线:MACD(data, fastperiod, slowperiod, signalperiod):通过短期和长期移动平均线的差值以及其信号线的关系,帮助识别价格趋势的强弱和逆转信号
- 随机指标:STOCH(high, low, close, fastk_period, slowk_period, slowd_period):随机指标用于衡量收盘价在最近一段时间价格范围内的位置,帮助识别超买和超卖状态。一般认为,指标大于80表示超买,小于20表示超卖
- 平衡交易量:OBV(data)(平衡交易量):结合价格走势用于确认趋势的强弱
DAI平台封装的技术指标算子
BigQuant将常用的TA-Lib技术指标算子移植到了DAI平台,让大家在编写策略的时候可以在“输入特征(DAI SQL)”模块中的“表达式特征”一栏中直接调用算子,计算出技术指标
这些技术指标算子都是以“m_ta”开头的,常见的有:
函数名 | 说明 | 用例 |
---|---|---|
m_ta_2crows | 时间序列上的两只乌鸦 | m_ta_2crows(open, high, low, close) |
m_ta_3black_crows | 时间序列上的三只乌鸦 | m_ta_3black_crows(open, high, low, close) |
m_ta_3red_soldiers | 时间序列上的红三兵 | m_ta_3red_soldiers(open, high, low, close) |
m_ta_ad | 时间序列上的 Chaikin A/D (累积分布) 线 | m_ta_ad(high, low, close, volume) |
m_ta_adx | 时间序列上该窗口内的平均趋向指数 | m_ta_adx(high, low, close, 5) |
m_ta_adxr | 时间序列上该窗口内的平均趋向指数评估 | m_ta_adxr(high, low, close, 5) |
m_ta_aroon | 时间序列上的阿隆 (Aroon) 指标, 返回 list: [aroon_down, aroon_up] | m_ta_aroon(high, low, 14) |
m_ta_aroon_d | 时间序列上的阿隆 (Aroon) 指标中的 aroon_down | m_ta_aroon_d(high, low, 14) |
m_ta_aroon_u | 时间序列上的阿隆 (Aroon) 指标中的 aroon_up | m_ta_aroon_u(high, low, 14) |
m_ta_aroonosc | 时间序列上的阿隆振荡器 (Aroon Oscillator) 指标 | m_ta_aroonosc(high, low, 14) |
m_ta_atr | 时间序列上该窗口内的真实波动幅度均值 | m_ta_atr(high, low, close, 5) |
m_ta_bbands | 时间序列上的布林带, 返回 list: [upper_band, middle_band, lower_band] | m_ta_bbands(close, timeperiod:=5, nbdevup:=2.0, nbdevdn:=2.0, matype:=0) |
m_ta_bbands_l | 时间序列上的布林带中的 lower_band | m_ta_bbands_l(close, timeperiod:=5, nbdevup:=2.0, nbdevdn:=2.0, matype:=0) |
m_ta_bbands_m | 时间序列上的布林带中的 middle_band | m_ta_bbands_m(close, timeperiod:=5, nbdevup:=2.0, nbdevdn:=2.0, matype:=0) |
m_ta_bbands_u | 时间序列上的布林带中的 upper_band | m_ta_bbands_u(close, timeperiod:=5, nbdevup:=2.0, nbdevdn:=2.0, matype:=0) |
m_ta_beta | 时间序列上 x, y 在该窗口内的贝塔系数 | m_ta_beta(open, close, 5) |
m_ta_bias | (close - sma) / sma | m_ta_bias(close, 3) |
m_ta_cci | 时间序列上该窗口内的顺势指标 | m_ta_cci(high, low, close, 5) |
m_ta_dark_cloud_cover | 时间序列上的乌云盖顶 | m_ta_dark_cloud_cover(open, high, low, close, penetration:=0.5) |
m_ta_dema | 时间序列上 arg 在该窗口内的双指数移动平均 | m_ta_dema(open, 5) |
m_ta_ema | 时间序列上 arg 在该窗口内的指数均值 | m_ta_ema(open, 5) |
m_ta_evening_star | 时间序列上的黄昏之星 | m_ta_evening_star(open, high, low, close, penetration:=0.3) |
m_ta_ewm | 时间序列上 arg 在窗口大小为 m 的指数加权移动平均, alpha=n/m, 有 NULL 则发生截断重新开始计算. 对应 bigexpr 中的 ta_sma2(x,M,N) | m_ta_ewm(open, 3, 1) |
m_ta_hammer | 时间序列上的锤 | m_ta_hammer(open, high, low, close) |
m_ta_inverted_hammer | 时间序列上的倒锤 | m_ta_inverted_hammer(open, high, low, close) |
m_ta_kama | 时间序列上 arg 在该窗口内的 Kaufman 自适应移动平均 | m_ta_kama(open, 5) |
m_ta_kdj | 时间序列上的 [K, D, J] 值. slowk_period, slowd_period 做变换 x -> 2x-1 后传入 ta_stoch | m_ta_kdj(high, low, close, fastk_period:=9, slowk_period:=3, slowd_period:=3, slowk_matype:=1, slowd_matype:=1) |
m_ta_kdj_d | 时间序列上 kdj 中的 D 值. slowk_period, slowd_period 做变换 x -> 2x-1 后传入 ta_stoch | m_ta_kdj_d(high, low, close, fastk_period:=9, slowk_period:=3, slowd_period:=3, slowk_matype:=1, slowd_matype:=1) |
m_ta_kdj_j | 时间序列上的 J 值 (= 3K - 2D). slowk_period, slowd_period 做变换 x -> 2x-1 后传入 ta_stoch | m_ta_kdj_j(high, low, close, fastk_period:=9, slowk_period:=3, slowd_period:=3, slowk_matype:=1, slowd_matype:=1) |
m_ta_kdj_k | 时间序列上 kdj 中的 K 值. slowk_period, slowd_period 做变换 x -> 2x-1 后传入 ta_stoch | m_ta_kdj_k(high, low, close, fastk_period:=9, slowk_period:=3, slowd_period:=3, slowk_matype:=1, slowd_matype:=1) |
m_ta_macd | 时间序列上的移动平均收敛/发散指标, 返回 list: [macd, macd_signal, macd_hist] | m_ta_macd(close, fastperiod:=12, slowperiod:=26, signalperiod:=9) |
m_ta_macd_dea | 时间序列上的 macd 指标的第二列: '讯号线' (DEA), DIF 的 9 日移动平均 | m_ta_macd_dea(close, fastperiod:=12, slowperiod:=26, signalperiod:=9) |
m_ta_macd_dif | 时间序列上的 macd 指标的第一列: '差离值' (DIF) | m_ta_macd_dif(close, fastperiod:=12, slowperiod:=26, signalperiod:=9) |
m_ta_macd_hist | 时间序列上的 macd 指标的第三列的 2 倍: 放大后的柱状图 (HIST), (DIF - DEA) * 2 | m_ta_macd_hist(close, fastperiod:=12, slowperiod:=26, signalperiod:=9) |
m_ta_mfi | 时间序列上该窗口内的货币流量指数 | m_ta_mfi(high, low, close, volume, 5) |
m_ta_mom | 时间序列上 arg 在该窗口内的动量 | m_ta_mom(open, 5) |
m_ta_morning_star | 时间序列上的早晨之星 | m_ta_morning_star(open, high, low, close, penetration:=0.3) |
m_ta_obv | 时间序列上的能量潮 | m_ta_obv(open, volume) |
m_ta_roc | 时间序列上 arg 在该窗口内的变化率 | m_ta_roc(open, 5) |
m_ta_rsi | 时间序列上 arg 在该窗口内的相对强弱指数 | m_ta_rsi(open, 5) |
m_ta_sar | 时间序列上的抛物线转向 (SAR) 指标 | m_ta_sar(high, low, acceleration:=0.02, maximum:=0.2) |
m_ta_shooting_star | 时间序列上的流星线 | m_ta_shooting_star(open, high, low, close) |
m_ta_sma | 时间序列上 arg 在该窗口内的简单平均值 | m_ta_sma(open, 5) |
m_ta_stoch | 时间序列上的 K, D 值. slowk_period, slowd_period 做变换 x -> 2x-1 后传入 ta_stoch | m_ta_stoch(high, low, close, fastk_period:=9, slowk_period:=3, slowd_period:=3, slowk_matype:=1, slowd_matype:=1) |
m_ta_sum | 时间序列上 arg 在该窗口内的和 | m_ta_sum(open, 5) |
m_ta_tema | 时间序列上 arg 在该窗口内的三重指数移动平均 | m_ta_tema(open, 5) |
m_ta_trima | 时间序列上 arg 在该窗口内的三角移动平均 | m_ta_trima(open, 5) |
m_ta_trix | 时间序列上 arg 在该窗口内的三重指数平滑平均线 | m_ta_trix(open, 5) |
m_ta_willr | 时间序列上该窗口内的威廉指标 | m_ta_willr(high, low, close, 5) |
m_ta_wma | 时间序列上 arg 在该窗口内的加权均值 | m_ta_wma(open, 5) |
\