Table of Content
- Overlaps Functions
- MIDPOINT - MidPoint over period
- SMA - Simple Moving Average
- WMA - Weighted Moving Average
- TRIMA - Triangular Moving Average
- MAVP - Moving average with variable period
- BBANDS - Bollinger Bands
- EMA - Exponential Moving Average
- DEMA - Double Exponential Moving Average
- TEMA - Triple Exponential Moving Average
- KAMA - Kaufman Adaptive Moving Average
- T3: Triple exponential Moving Average T3:
- TRIX - 1-day Rate-Of-Change (ROC) of a Triple Smooth EMA
- MAMA - MESA Adaptive Moving Average
- HT_TRENDLINE - Hilbert Transform - Instantaneous Trendline
- SAR - Parabolic Stop and Reveres
- Momentum Indicator
- Momentum
- ROC - Rate of change : ((price/prevPrice)-1)*100
- DX - Directional Index
- ADX - Average Directional Movement Index
- ADXR - Average Directional Movement Index Rating
- PPO - Percentage Price Oscillator
- APO - Absolute Price Oscillator
- MACD - Moving Average Convergence/Divergence
- MFI - Money Flow Index
- RSI - Relative Strength Index
- CMO - Chande Momentum Oscillator
- AROON - Aroon
- BOP - Balance Of Power
- CCI - Commodity Channel Index
- Oscillator
- Volume Indicator Function
- Cycle Indicator Functions
- Other
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=MidBand−F×σ(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−α)×EMAt−1
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=α1−1
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×EMAt−EMA(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×EMAt−3×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=xt−xt−nVolatility=t−n+1∑tabs(xi−xi−1)ER(EffectiveRatio)=volatilitydirectionfast=FastPeriod+12,slow=SlowPeriod+12SC(SmoothingConstant)=[ER×(fast−slow)+slow]2KAMAt=KAMAt−1+SC×(closet−KAMAt−1)
应用:(参考)[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=SARt−1+AFt−1∗[EPt−1−SARt−1]EPt=long?max(EPt−1,hight):min(EPt−1,lowt)AF=EPt−1!=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(Hight−1,Hight,EPt−1)
- 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(Lowt−1,Lowt,EPt−1)
应用: 这个指标假设始终在场内有仓位,当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=pricet−pricet−N
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=Ct−NCloset−Closet−N
应用
- 当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((Hight−Hight1)×1(Ht−Ht−1>Lt−1−Lt),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((Lt−1−Lt)×1(Lt−1+Ht−1>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=nADXt−1×(n−1)+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=2ADXt−ADXt−N
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=FastMASlowMA−FastMA
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×shortemat−1longema=0.075×price+0.925×longemat−1MACD=shortema−longemamacdsignal=EMA(MACD)macdhist=2×(MACD−macdsignal)
- 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=PositiveFlowt−1+TypicalPrice∗amount∗1(TPt>TPt−1)NegativeFlowt=NegativeFlowt−1+TypicalPrice∗amount∗1(TPt<TPt−1)BuyFlow=t∑TPositiveFlowtSellFlow=t∑TNegativeFlowtFlowRatio=100∗Buy+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,Closet−Closet−1)down=max(0,Closet−1−Closet)upavg=nupavgt−1(n−1)+updownavg=ndownavgt−1(n−1)+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,Closet−Closet−1)down=max(0,Closet−1−Closet)ups=∑updowns=∑downCMO=100×sums−downssums−downs
应用
- 当绝对值大于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×(nn−TimeSinceHighest)AroonDown=100×(nn−TimesSinceLowest)AroonOscilator=AroonUp−AroonDown
应用
- 单个很高:当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=(Close−Open)/(High−low)
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×MDTP−ATPTP=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×HighestHigh−LowestLowHighestHigh−Close
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×HighestHighn−LowestLownClose−LowestLownFastD=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(close−truelow,n1)×n1a2=SMA(close−truelow,n2)×n2a3=SMA(close−truelow,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)=high−low2∗close−high−lowADt=ADt−1+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=0∑N−1∣ΔCt−i−Cˉ∣
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,Ct−1)−min(Lt,Ct−1)