Bootstrap

[量化指标]Ta-Lib指标详解与应用

Table of Content

Overlaps Functions

MIDPOINT - MidPoint over period

M i d P o i n t = h i g h + l o w 2 MidPoint= \frac{high+low}{2} MidPoint=2high+low

SMA - Simple Moving Average

特征:资金的涌入价格的提升,资金的流出带来价格的下降,Moving average实际上是人们的仓位的体现,因为建仓有时延,lag其实有时候是必要的特征,并不是zero lag就会更好。

移动平均线一定要小心Lag,要清楚的知道当前计算的参数的lag是多少,否则会不知道这个参数应该有多少的时间领先。
例如:

  • SMA的lag是(N-1)/2
  • WMA: (N-1)/3
  • EMA: (1-alpha)/ alpha ,如果alpha等于2/(N+1),那么他的lag就会和SMA一致,这也是ta-lib中的取值

WMA - Weighted Moving Average

加权平均,按照线性赋予权重,越近的权重越大

TRIMA - Triangular Moving Average

等边三角形权重加权,周期中间的日期权重最大。

MAVP - Moving average with variable period

real = MAVP(close, periods, minperiod=2, maxperiod=30, matype=0)

其中,close和periods应该是要求等长度的,等于对于每一个点上取的不同period的sma对应的该点数值。
当periods=[2, 3, 4]时候,那么前三个数字就是[SMA(close, timepeirod=2)[0], SMA(close, timepeirod=3)[1], SMA(close, timepeirod=4)[2]]。通过minperiod和maxperiod对于periods进行cap和floor,不是很清楚它的实际意义,感觉很容易过拟合。

BBANDS - Bollinger Bands

布林线,通常SMA的周期选20,F系数通常选2。当布林线变窄的时候则说明volatility比较小。
T P ( t y p i c a l p r i c e ) = h i g h + l o w + c l o s e 3 M i d B a n d = S M A ( T P ) U p p e r B a n d = M i d B a n d + F × σ ( T P ) L o w e r B a n d = M i d B a n d − F × σ ( T P ) TP(typical price) = \frac{high+low+close}{3} \\ MidBand = SMA(TP) \\ UpperBand = MidBand+F \times \sigma(TP) \\ LowerBand = MidBand - F\times \sigma(TP) TP(typicalprice)=3high+low+closeMidBand=SMA(TP)UpperBand=MidBand+F×σ(TP)LowerBand=MidBandF×σ(TP)
应用:Momentum,应用规则是这样的:当一只股票在一段时间内股价波幅很小,反映在布林线上表现为,股价波幅带长期收窄,而在某个交易日,股价在较大交易量的配合下收盘价突破布林线的阻力线,而此时布林线由收口明显转为开口,此时投资者应该果断买入(从当日的K线图就可明显看出),这是因为,该股票由弱转强,短期上冲的动力不会仅仅一天,短线必然会有新高出现,因此可以果断介入。

EMA - Exponential Moving Average

Exponential Moving Average
其中的2是为了考虑tail effect
α = 2 n + 1 \alpha=\frac{2}{n+1} α=n+12
E M A t = α × x t + ( 1 − α ) × E M A t − 1 EMA_{t} = \alpha \times x_t + (1-\alpha) \times EMA_{t-1} EMAt=α×xt+(1α)×EMAt1

How to understand the lag and halflife?

H a l f L i f e = l o g [ 1 / 2 ] l o g ( 1 − α ) HalfLife = \frac{log[1/2]}{log(1-\alpha)} HalfLife=log(1α)log[1/2]
L a g = 1 α − 1 Lag = \frac{1}{\alpha} - 1 Lag=α11
When Halflife is large, lag is about 1.4 HalfLife

DEMA - Double Exponential Moving Average

相比于EMA,它更加的平滑且延迟更小,相当于用EMA减去一个更慢的波来过滤。虽然这个指标对于理想脉冲的lag是零,但是还是会存在实际上的延迟。
实际过程中DEMA更多的是一种趋势信号,很难及时反馈出反转。
D E M A t = 2 × E M A t − E M A ( E M A t ) DEMA_t = 2\times EMA_t - EMA(EMA_t) DEMAt=2×EMAtEMA(EMAt)

TEMA - Triple Exponential Moving Average

T E M A t = 3 × E M A t − 3 × E M A ( E M A t ) + E M A ( E M A ( E M A t ) ) TEMA_{t} = 3 \times EMA_t - 3\times EMA(EMA_t) + EMA(EMA(EMA_t)) TEMAt=3×EMAt3×EMA(EMAt)+EMA(EMA(EMAt))

KAMA - Kaufman Adaptive Moving Average

特征:KAMA能够在相对震荡的时候保持指标的稳定,在单边方向运行的时候能够及时响应,是一个趋势跟踪信号。
因为它反应速度快,也容易具有一些噪音

定义
ER来表示这一段时间的变化站总的波动的多少,如果单方向上行,那么就是1,如果完全的横盘那就是0。
D i r e c t i o n = x t − x t − n V o l a t i l i t y = ∑ t − n + 1 t a b s ( x i − x i − 1 ) E R ( E f f e c t i v e R a t i o ) = d i r e c t i o n v o l a t i l i t y f a s t = 2 F a s t P e r i o d + 1 , s l o w = 2 S l o w P e r i o d + 1 S C ( S m o o t h i n g C o n s t a n t ) = [ E R × ( f a s t − s l o w ) + s l o w ] 2 K A M A t = K A M A t − 1 + S C × ( c l o s e t − K A M A t − 1 ) Direction = x_t-x_{t-n} \\ Volatility = \sum_{t-n+1}^t abs (x_i - x_i-1) \\ ER(EffectiveRatio) = \frac{direction}{volatility} \\ fast = \frac{2}{FastPeriod + 1}, slow = \frac{2}{SlowPeriod + 1} \\ SC(SmoothingConstant)=[ER\times (fast-slow)+slow]^2 \\ KAMA_t = KAMA_{t-1} + SC \times (close_t - KAMA_{t-1}) Direction=xtxtnVolatility=tn+1tabs(xixi1)ER(EffectiveRatio)=volatilitydirectionfast=FastPeriod+12,slow=SlowPeriod+12SC(SmoothingConstant)=[ER×(fastslow)+slow]2KAMAt=KAMAt1+SC×(closetKAMAt1)
应用:(参考)[http://blog.sina.com.cn/s/blog_62d0bbc701010p7d.html]包括一个策略的参考

T3: Triple exponential Moving Average T3:

特征
这个函数相具备了六阶EMA,相比于EMA和DEMA会更加responsive,应用也更加广泛。
定义

  • GD: Generalized DEMA。
  • 如果vfactor等于1的话GD就是单纯的DEMA,如果是0,则退化成EMA
    G D ( x ) = E M A ( x ) × ( 1 + v f a c t o r ) − E M A ( E M A ( x ) ) × v f a c t o r T 3 = G D ( G D ( G D ( x ) ) ) GD(x) = EMA(x) \times (1+vfactor) - EMA(EMA(x)) \times vfactor \\ T3 = GD(GD(GD(x))) GD(x)=EMA(x)×(1+vfactor)EMA(EMA(x))×vfactorT3=GD(GD(GD(x)))

TRIX - 1-day Rate-Of-Change (ROC) of a Triple Smooth EMA

性质
把triple ema求return。

MAMA - MESA Adaptive Moving Average

目前对于紧跟数据的moving average感觉它的效果是最好的,但是还不清楚具体怎么算的。
它使用了Hilbert Transform,值得研究

mama, fama = MAMA(close, fastlimit=0, slowlimit=0)

应用

  • 这个参数用的人不多,且crossover效果目前看起来不错

HT_TRENDLINE - Hilbert Transform - Instantaneous Trendline

Hilbert transformation for discret.
目前来看应该是对于sin和cos的相位进行前后移动半个周期,具体还不清楚是怎么算的,利用1/t函数和原函数进行convolution

SAR - Parabolic Stop and Reveres

real = SAR(high, low, acceleration=0, maximum=0)

特征:抛物线转向(SAR)也称停损点转向,其全称叫“Stop and Reveres”,缩写“SAR”,是由美国技术分析大师威尔斯·威尔德(Wells Wilder)所创造的,是一种简单易学、比较准确的中短期技术分析工具。由于SAR指标简单易懂、操作方便、稳重可靠等优势,因此,SAR指标又称为“傻瓜”指标,被广大投资者特别是中小散户普遍运用。
定义:
S A R t = S A R t − 1 + A F t − 1 ∗ [ E P t − 1 − S A R t − 1 ] E P t = l o n g ? m a x ( E P t − 1 , h i g h t ) : m i n ( E P t − 1 , l o w t ) A F = E P t − 1 ! = E P t ? m i n ( A F + a c c e l e r a t i o n , m a x i m u m ) : A F SAR_t=SAR_{t-1}+AF_{t-1}*[EP_{t-1}-SAR_{t-1}] \\ EP_t = long?max(EP_{t-1}, high_t):min(EP_{t-1},low_t) \\ AF = EP_{t-1}!=EP_{t}?min(AF+acceleration, maximum):AF SARt=SARt1+AFt1[EPt1SARt1]EPt=long?max(EPt1,hight):min(EPt1,lowt)AF=EPt1!=EPt?min(AF+acceleration,maximum):AF
其中long和short被定义为当前仓位,反转被定义为:

  • Long的时候, L o w t < S A R Low_{t} < SAR Lowt<SAR也就是向下突破,此时 S A R t = m a x ( H i g h t − 1 , H i g h t , E P t − 1 ) SAR_t = max(High_{t-1}, High_{t}, EP_{t-1}) SARt=max(Hight1,Hight,EPt1)
  • Short的时候, H i g h t > S A R High_{t} > SAR Hight>SAR 也就是向下突破,此时 S A R t = m i n ( L o w t − 1 , L o w t , E P t − 1 ) SAR_t = min(Low_{t-1}, Low_{t}, EP_{t-1}) SARt=min(Lowt1,Lowt,EPt1)
    应用: 这个指标假设始终在场内有仓位,当Long的时候如果出现向下突破,也就是当日价格低于SAR,那么就要清仓(或者反向做空);如果做空(或者空仓)的时候当日价格向上突破SAR,那么就做多。

Momentum Indicator

写在前面:所有的momentum都可以被当成reversal信号,当一个信号不再强的时候,就可以当作reverse进场,当一个信号足够强的时候,就可以当作趋势进场,取决于每个人的投资哲学。

momentum其实就是当前的减去过去的,并认为未来和过去将会保持原有一样的趋势

Momentum

M o m e n t u m = p r i c e t − p r i c e t − N Momentum = price_{t} - price_{t-N} Momentum=pricetpricetN

ROC - Rate of change : ((price/prevPrice)-1)*100

代表当前收盘价比之前的收盘价高百分比多少
定义
R O C t = C l o s e t − C l o s e t − N C t − N ROC_{t} = \frac{Close_t - Close_{t-N}}{C_{t-N}} ROCt=CtNClosetClosetN
应用

  • 当N-day ROC 是正的时候,买入
  • 当ROC是负的时候,卖出

DX - Directional Index

定义

首先定义DM (Directional movement)
+ D M t = max ⁡ ( ( H i g h t − H i g h t 1 ) × 1 ( H t − H t − 1 > L t − 1 − L t ) , 0 ) +DM_t = \max( (High_t-High_{t_1}) \times \mathbb{1}(H_t-H_{t-1} > L_{t-1} - L_{t}), 0) +DMt=max((HightHight1)×1(HtHt1>Lt1Lt),0)
+DM等于今日最高减去昨日最高,当且仅当今天的中间价格大于昨天的中间价格,且今日最高大于昨日最高。
− D M t = max ⁡ ( ( L t − 1 − L t ) × 1 ( L t − 1 + H t − 1 > L t + H t ) , 0 ) -DM_t = \max( (L_{t-1}-L_{t})\times \mathbb{1}(L_{t-1}+H_{t-1} > L_{t}+H_{t}), 0) DMt=max((Lt1Lt)×1(Lt1+Ht1>Lt+Ht),0)
-DM等于昨日最低减去今日最低,当且仅当今日最低更小且今日的中间价格更小,是一个很强意味的向下信号。

此时我们再定义Directional indicator,DI
+ D I t = E M A ( + D M t / A T R t ) − D I t = E M A ( − D M t / A T R t ) +DI_t = EMA(+DM_t/ATR_t) \\ -DI_t = EMA(-DM_t/ATR_t) +DIt=EMA(+DMt/ATRt)DIt=EMA(DMt/ATRt)
则,DX也就是directional index被定义为
D X t = ∣ + D I t − ( − D I t ) ∣ + D I t + ( − D I t ) × 100 DX_t = \frac{|+DI_t - (-DI_t)|}{+DI_t + (-DI_t)} \times 100 DXt=+DIt+(DIt)+DIt(DIt)×100

DX应该衡量了一个趋势的强弱,而下面的ADX对它进行了EMA操作,使得趋势更加的明显,减少噪音。

ADX - Average Directional Movement Index

real = ADX(high, low, close, timeperiod=14)
  • 这个数值是从0到100,但是其实很少超过60。
  • 如果ADX小于20,当前的走势大多是箱体震荡(range-bound)或者弱趋势。
  • 当ADX大于30,趋势就比较强烈了
  • 虽然ADX并不会衡量趋势方向,而是衡量了趋势的强弱,而事实上趋势方向通过比较正负DI的大小就可以得到。
    A D X t = A D X t − 1 × ( n − 1 ) + D X n = E M A ( D X t ) ADX_t = \frac{ADX_{t-1} \times (n-1) + DX}{n} = EMA(DX_t) ADXt=nADXt1×(n1)+DX=EMA(DXt)

ADXR - Average Directional Movement Index Rating

这个smoothing的操作虽然使得ADX响应更慢了,但是能够filter掉一些极端的大价格而形成的假趋势。
A D X R = A D X t − A D X t − N 2 ADXR = \frac{ADX_t - ADX_{t-N}}{2} ADXR=2ADXtADXtN

PPO - Percentage Price Oscillator

性质
用以描述两个MA的差值,同时因为分母多了一个FastMA因此具有一定的数值意义。
P P O = S l o w M A − F a s t M A F a s t M A PPO = \frac{SlowMA-FastMA}{FastMA} PPO=FastMASlowMAFastMA

APO - Absolute Price Oscillator

性质
本质和MACD没有什么区别,可以选择matype,ema或者simple啥的,如果按照momentum的想法,当slow超过fast时候是金叉买入。也就是APO大于零的时候买入。

real = APO(close, fastperiod=12, slowperiod=26, matype=0)

A P O = S l o w M A ( c l o s e ) − F a s t M A ( c l o s e ) APO = SlowMA(close) - FastMA(close) APO=SlowMA(close)FastMA(close)

MACD - Moving Average Convergence/Divergence

macd, macdsignal, macdhist = MACD(close, fastperiod=12, slowperiod=26, signalperiod=9)

这里的定义,慢ema采用了0.075,快ema采用了0.15,对应的fastperiod和slowperiod分别是25.66667和12.3333。 Reminder: α = 2 2 + n \alpha = \frac{2}{2+n} α=2+n2
s h o r t e m a = 0.15 × p r i c e + 0.85 × s h o r t e m a t − 1 l o n g e m a = 0.075 × p r i c e + 0.925 × l o n g e m a t − 1 M A C D = s h o r t e m a − l o n g e m a m a c d s i g n a l = E M A ( M A C D ) m a c d h i s t = 2 × ( M A C D − m a c d s i g n a l ) shortema = 0.15 \times price + 0.85 \times shortema_{t-1} \\ longema = 0.075 \times price + 0.925 \times longema_{t-1} \\ MACD = shortema - longema \\ macdsignal = EMA(MACD) \\ macdhist = 2\times (MACD - macdsignal) shortema=0.15×price+0.85×shortemat1longema=0.075×price+0.925×longemat1MACD=shortemalongemamacdsignal=EMA(MACD)macdhist=2×(MACDmacdsignal)

  • MACD 能够捕捉趋势和表示新的趋势方向
  • MACD大代表超买,小的数值代表超卖
  • 当MACD与price方向diverge的时候意味着趋势即将结束,从数学上表现为快速均线和慢速均线逐渐靠近,原来的趋势逐渐变弱。通俗来讲就是涨的更慢了,跌的也更慢了
  • 如果MACD向上超过signal line,那么就应该买入,如果向下穿过就应该卖出;同时为了confirm买入信号,MACD应该是正的;same for sell。

MFI - Money Flow Index

real = MFI(high, low, close, volume, timeperiod=14)

性质
介于0到100,当大于80或者小于20的时候代表市场见顶或者见底。

定义
T y p i c a l P r i c e = h i g h + l o w + c l o s e 3 P o s i t i v e F l o w t = P o s i t i v e F l o w t − 1 + T y p i c a l P r i c e ∗ a m o u n t ∗ 1 ( T P t > T P t − 1 ) N e g a t i v e F l o w t = N e g a t i v e F l o w t − 1 + T y p i c a l P r i c e ∗ a m o u n t ∗ 1 ( T P t < T P t − 1 ) B u y F l o w = ∑ t T P o s i t i v e F l o w t S e l l F l o w = ∑ t T N e g a t i v e F l o w t F l o w R a t i o = 100 ∗ B u y B u y + S e l l TypicalPrice = \frac{high+low+close}{3} \\ PositiveFlow_t = PositiveFlow_{t-1} + TypicalPrice * amount *\mathbb{1} (TP_t > TP_{t-1}) \\ NegativeFlow_t = NegativeFlow_{t-1} + TypicalPrice * amount *\mathbb{1} (TP_t < TP_{t-1}) \\ BuyFlow = \sum_t^T PositiveFlow_t \\ SellFlow = \sum_t^T NegativeFlow_t \\ FlowRatio = 100*\frac{Buy}{Buy+Sell} TypicalPrice=3high+low+closePositiveFlowt=PositiveFlowt1+TypicalPriceamount1(TPt>TPt1)NegativeFlowt=NegativeFlowt1+TypicalPriceamount1(TPt<TPt1)BuyFlow=tTPositiveFlowtSellFlow=tTNegativeFlowtFlowRatio=100Buy+SellBuy

应用

  • 如果出现flow和价格的背离,那么就有可能出现reverse信号。
  • 如果价格出现新高,但是flow并没有出现新高,则有可能是一个弱的趋势,同时有可能会出现reverse。
  • 对于intraday的交易5min bar甚至也会有效果(XINFENG Zhou)

RSI - Relative Strength Index

性质
RSI表征一个trend的强弱,自从1978年以后,daily RSI以前n=14已经不足以快速反应美国市场,因此有人开始建议使用RIS(4)。这个数值介于0到100之间。

定义
u p = max ⁡ ( 0 , C l o s e t − C l o s e t − 1 ) d o w n = max ⁡ ( 0 , C l o s e t − 1 − C l o s e t ) u p a v g = u p a v g t − 1 ( n − 1 ) + u p n d o w n a v g = d o w n a v g t − 1 ( n − 1 ) + d o w n n R S I = 100 × u p a v g u p a v g + d o w n a v g up = \max(0, Close_t - Close_{t-1}) \\ down = \max(0, Close_{t-1}- Close_t) \\ upavg = \frac{upavg_{t-1}(n-1)+up}{n} \\ downavg = \frac{downavg_{t-1}(n-1)+down}{n} \\ RSI = 100 \times \frac{upavg}{upavg+downavg} up=max(0,ClosetCloset1)down=max(0,Closet1Closet)upavg=nupavgt1(n1)+updownavg=ndownavgt1(n1)+downRSI=100×upavg+downavgupavg
应用
如果RIS(timeperiod=14),超过70则买超,当低于30则卖超;当RSI(timeperiod=4),则超过75是超买,低于25时超卖。如果出现市场新高,但是RSI出现背离,那么就是一个reversal signal。

CMO - Chande Momentum Oscillator

real = CMO(close, timeperiod=14)

性质

  • 相当于一个RSI变形,类似于平时的flow思路,考虑把up作为买入flow,down作为卖出,一段时间的求和来凸显趋势。
  • 注意!:经过测试,talib里面的CMO和RSI完全一致,原本CMO应该对up/down的计算采用SMA但是实际上采用了RSI的EMA。
    定义
    u p = max ⁡ ( 0 , C l o s e t − C l o s e t − 1 ) d o w n = max ⁡ ( 0 , C l o s e t − 1 − C l o s e t ) u p s = ∑ u p d o w n s = ∑ d o w n C M O = 100 × s u m s − d o w n s s u m s − d o w n s up = \max(0, Close_t - Close_{t-1}) \\ down = \max(0, Close_{t-1}- Close_t) \\ ups = \sum up \\ downs = \sum down \\ CMO = 100 \times \frac{sums - downs }{sums - downs} up=max(0,ClosetCloset1)down=max(0,Closet1Closet)ups=updowns=downCMO=100×sumsdownssumsdowns

应用

  • 当绝对值大于50代表趋势
  • 如果CMO和CMO的crossover向上则代表买入信号,向下代表向下趋势产生,卖出信号。
  • 注意使用的时候很有可能和rsi具有较大的correlation

AROON - Aroon

aroondown, aroonup = AROON(high, low, timeperiod=14)
\\
real = AROONOSC(high, low, timeperiod=14)

性质
玄幻的命名,在梵语里面代表黎明前的曙光。用来描述在这一段时间内,过了新高和新低有多长时间。
A r o o n U p = 100 × ( n − T i m e S i n c e H i g h e s t n ) A r o o n D o w n = 100 × ( n − T i m e s S i n c e L o w e s t n ) A r o o n O s c i l a t o r = A r o o n U p − A r o o n D o w n AroonUp = 100 \times (\frac{n-TimeSinceHighest}{n}) \\ AroonDown = 100 \times (\frac{n-TimesSinceLowest}{n}) \\ AroonOscilator = AroonUp - AroonDown AroonUp=100×(nnTimeSinceHighest)AroonDown=100×(nnTimesSinceLowest)AroonOscilator=AroonUpAroonDown
应用

  • 单个很高:当Aroon信号超过70到100的时候就说明可能存在一个对应方向的趋势
  • 一高一低:其中一个大于70,另一个小于30,则代表一个强的单向趋势
  • 交叉: 当Down插上Up的曲线,则代表向上的趋势很弱了

BOP - Balance Of Power

real = BOP(open, high, low, close)

性质
用来描述一天的买卖双方的力量,本质就是收盘和开盘的差距与最高最低的差值之间的比例,如果很接近1,则代表买方很有力量。应用方面,往往也会对他进行MA操作进而消除部分噪音。
r e a l = ( C l o s e − O p e n ) / ( H i g h − l o w ) real = (Close-Open)/(High-low) real=(CloseOpen)/(Highlow)

CCI - Commodity Channel Index

real = CCI(high, low, close, timeperiod=14)

性质
自身带有一个crossover的属性,此刻因为除以了std,因此不仅符号有意义,信号本身的数值也有意义了。

正常情况下这个数字在正负100之间波动。
C C I = T P − A T P 0.015 × M D T P = T y p i c a l P i r c e A T P = S M A ( T P , n ) M D = M o v i n g D e v i a t i o n ( T P , n ) CCI= \frac{TP-ATP}{0.015\times MD} \\ TP= Typical Pirce \\ ATP=SMA(TP, n) \\ MD=Moving Deviation(TP, n) CCI=0.015×MDTPATPTP=TypicalPirceATP=SMA(TP,n)MD=MovingDeviation(TP,n)
应用
可以尝试将它作为一个持仓信号进行交易。

Oscillator

WILLR - Williams’ %R

real = WILLR(high, low, close, timeperiod=14)

性质
与STOCHF无异,等于100-STOCH。 注意:talib的实现,willr直接就是fastk-100。

定义
R = 100 × H i g h e s t H i g h − C l o s e H i g h e s t H i g h − L o w e s t L o w R = 100\times \frac{HighestHigh - Close}{HighestHigh-LowestLow} R=100×HighestHighLowestLowHighestHighClose

STOCHF - Stochastic Fast

fastk, fastd = STOCHF(high, low, close, fastk_period=5, fastd_period=3, fastd_matype=0)

性质
这个信号描述了当前价格位于最近n天的一个平均水平,在Xinfeng的书里面fastk一般取14天,D取3天
定义
F a s t K = 100 × C l o s e − L o w e s t L o w n H i g h e s t H i g h n − L o w e s t L o w n F a s t D = S M A ( F a s t K , 3 ) FastK = 100 \times \frac{Close - LowestLow_n}{HighestHigh_n - LowestLow_n} \\ FastD = SMA(FastK,3) FastK=100×HighestHighnLowestLownCloseLowestLownFastD=SMA(FastK,3)
应用

  • 如果FastK大于80则overbough,小于20则oversold
  • 如果FastK从下向上超过20,且穿过FastD,则可以产生一个reversal性质买的信号

STOC - Stochastic

slowk, slowd = STOCH(high, low, close, fastk_period=5, slowk_period=3, slowk_matype=0, slowd_period=3, slowd_matype=0)
性质
因为fast stoch对于变化过于敏感,以至于经常产生错误信号(intraday不一定,因为intraday信号就是很快的),因此slowK和SlowD分别再一次做了sma,在talib里面给提供了其他的ma type
定义
S l o w K = S M A ( F a s t K , s l o w K p e r i o d = 3 ) S l o w D = S M A ( S l o w K , s l o w D p e r i o d = 3 ) SlowK = SMA(FastK, slowK_period=3) \\ SlowD = SMA(SlowK,slowD_period=3) SlowK=SMA(FastK,slowKperiod=3)SlowD=SMA(SlowK,slowDperiod=3)
应用

  • 应用与fast stoch类似,只是它相对更佳robust,但是也产生了更大的延迟。

STOCHRSI - Stochastic Relative Strength Index

fastk, fastd = STOCHRSI(close, timeperiod=14, fastk_period=5, fastd_period=3, fastd_matype=0)

性质
相比于RSI,这个indicator对于趋势更加敏感,数值定义于0到1
定义
s t o c h r s i = S T O C H F ( R S I ) stochrsi = STOCHF(RSI) stochrsi=STOCHF(RSI)

  • Overbought:信号冲上0.80,OverSold:信号冲下0.20
  • Buy Signal:当数值从小于0.2时冲上了0.5;Sell:从0.8冲下了0.5

ULTOSC - Ultimate Oscillator

性质

  • 反应当前价格在历史中的位置,在短期,中期和长期均衡后的位置。
  • 通常的参数是7, 14, 28
  • 实测下来对于相对高频的信号捕捉能力一般,而且noise挺多的。
    定义
    a 1 = S M A ( c l o s e − t r u e l o w , n 1 ) × n 1 a 2 = S M A ( c l o s e − t r u e l o w , n 2 ) × n 2 a 3 = S M A ( c l o s e − t r u e l o w , n 3 ) × n 3 b 1 = S M A ( T r u e R a n g e , n 1 ) × n 1 b 2 = S M A ( T r u e R a n g e , n 2 ) × n 2 b 3 = S M A ( T r u e R a n g e , n 3 ) × n 3 U l t i m a t e O s c = a 1 b 1 × 4 + a 2 b 2 × 2 + a 3 b 3 7 a1 = SMA(close-truelow, n1) \times n1 \\ a2 = SMA(close-truelow, n2) \times n2 \\ a3 = SMA(close-truelow, n3) \times n3 \\ b1 = SMA(TrueRange, n1)\times n1 \\ b2 = SMA(TrueRange, n2)\times n2 \\ b3 = SMA(TrueRange, n3)\times n3 \\ UltimateOsc = \frac{\frac{a1}{b1}\times 4 + \frac{a2}{b2} \times 2 + \frac{a3}{b3}}{7} a1=SMA(closetruelow,n1)×n1a2=SMA(closetruelow,n2)×n2a3=SMA(closetruelow,n3)×n3b1=SMA(TrueRange,n1)×n1b2=SMA(TrueRange,n2)×n2b3=SMA(TrueRange,n3)×n3UltimateOsc=7b1a1×4+b2a2×2+b3a3
    应用
  • 超过70/低于30 代表overbought/oversold
  • 趋势与价格的相近或者分歧代表一个trend或者trend的结束。

Volume Indicator Function

OBV

性质
OBV通常是用来确认趋势的,当价格上涨且OBV上涨,则确认趋势;如果在张的趋势上出现OBV下降,那么有可能是反转。Divergence=reversal;Convergence=trend。
定义
KaTeX parse error: Undefined control sequence: \sign at position 22: … = OBV_{t-1} + \̲s̲i̲g̲n̲ ̲(Close_{t-1} = …

AD Chaikin A/D - Line Accumulation/Distribution Line

性质
类似于OBV,但是在累加的时候用一个系数对volume做了叠加放缩,如果AD Line在上涨,价格有可能也会上涨;如果AD Line开始平了但是价格还在涨,可能会出现反转或者横盘。
定义
C L V ( C l o s e L o c a t i o n V a l u e ) = 2 ∗ c l o s e − h i g h − l o w h i g h − l o w A D t = A D t − 1 + C L V × V o l u m e CLV(CloseLocationValue) = \frac{2*close-high-low}{high-low} \\ AD_t = AD_{t-1} + CLV \times Volume CLV(CloseLocationValue)=highlow2closehighlowADt=ADt1+CLV×Volume

ADOSC - Chaikin A/D Oscillator

性质
由于暂时没有找到documentation,个人认为它是一个把AD重新做了fastMA-slowMA的操作,将信号拉回0的附近,增加信号的敏感度。

Cycle Indicator Functions

HT_DCPERIOD - Hilbert Transform - Dominant Cycle Period

This API returns the Hilbert transform, dominant cycle phase (HT_DCPHASE) values.

HT_DCPHASE - Hilbert Transform - Dominant Cycle Phase

HT_PHASOR - Hilbert Transform - Phasor Components

HT_SINE - Hilbert Transform - SineWave

HT_TRENDMODE - Hilbert Transform - Trend vs Cycle Mode

Other

Volatility measurement

STD of delta close

N天收盘价变动的标准差
σ t , N = Δ C \sigma_{t,N} = \sqrt{\Delta C} σt,N=ΔC

Mean absolute deviation

D t , N = 1 N ∑ i = 0 N − 1 ∣ Δ C t − i − C ˉ ∣ D_{t, N} = \frac{1}{N}\sum_{i=0}^{N-1}|\Delta C_{t-i} - \bar{C}| Dt,N=N1i=0N1∣ΔCtiCˉ

ATR - Average True Range

A T R t , N = E M A t ( T R ) ATR_{t, N} = EMA_t(TR) ATRt,N=EMAt(TR)
True Range被定义为 昨天收盘价和今天的最高的最大值 减去 今天最低和昨天收盘的最小值,其实这定义了,在考虑集合竞价时候出现价格变动的情况下,今天可能的最高减去最低到一个值。
T R t = m a x ( H t , C t − 1 ) − m i n ( L t , C t − 1 ) TR_t = max(H_t, C_{t-1}) - min(L_t, C_{t-1}) TRt=max(Ht,Ct1)min(Lt,Ct1)

;