波动率指标(Volatility)就是用来衡量金融市场或某个资产价格变动幅度和不稳定性的指标。这个东西通常被用来评估市场有多冒险。波动率越高,代表资产价格波动越大,但是兄弟,风险也相对高啊!下面是一些相关术语和解释:
历史波动率(Historical Volatility):过去某段时间内资产价格的实际波动率。这个玩意儿是通过计算历史数据来衡量的。
隐含波动率(Implied Volatility):根据期权市场价格反推出的波动率,用于衡量市场对未来价格波动的预期。
VIX指数(Volatility Index):通常被称为“恐慌指数”,用于预测未来30天内美国股票市场的波动率。这是全球金融市场中最出名的波动率指标之一。
波动率指标对于投资者和交易员非常重要,因为它们可以帮助他们了解市场有多不稳定和冒险,从而做出更明智的投资决策。
BTCUSDT.P行情来自TradingView
今天我要介绍一个自己私藏多年的波动率指标,它可以用颜色来判断暴涨暴跌!当然,如果你够聪明,看趋势也能预判一些潜在的暴涨暴跌哦!
在金融领域中,波动率指标(Volatility)是衡量不同资产价格变动幅度和不稳定性的指标。它通常用来评估市场的风险水平。波动率越高,代表资产价格波动较大,风险也相对较高。历史波动率(Historical Volatility)是指过去某段时间内资产价格的实际波动率,可以通过计算历史数据来衡量;而隐含波动率(Implied Volatility)则是根据期权市场价格反推出的波动率,用于衡量市场对未来价格波动的预期。另外, VIX 指数(Volatility Index)通常被称为“恐慌指数”,用于预测未来30天内美国股票市场的波动率,是全球金融市场中最出名的波动率指标之一。
波动率指标对于投资者和交易员非常重要,因为它们可以帮助他们了解市场的不确定性和风险,从而做出更明智的投资决策。而今天要介绍的 L1 Dynamic Volatility Indicator 就是一种可以衡量波动率的指标,同时还可以通过颜色来判断暴涨暴跌!
这个指标是将 Dynamic Volatility(简称 DV)和 ATR 两个技术指标融合,结合颜色显示,预警暴涨暴跌的技术指标。DV 反应慢但是比较平滑,而 ATR 反应速度快但是纹波较多。利用它们互补的特性,可以构建一个类似 MACD 快慢线结构。当然,要实现 DV 和 ATR 的快慢线,第一就是要统一它们的坐标轴,需要做归一化处理。然后,每当 ATR 黄色大于 DV 的紫色线,并且两个曲线均快速向上突破 0.2 这个阈值时,暴涨暴跌就要来了。
不过要注意,仅依靠这两条线的高低和走势方向还不足以判断暴涨暴跌的方向哦!因为它们只负责判断波动率的趋势,并不能够判断牛熊!不过也没关系,我也早有考虑到这个问题,加上了神奇的渐变色带,当色带颜色逐渐变为暖色时,预示着暴涨;反之,当色带颜色趋于冷色则预示着暴跌!当然,进入横盘整理的区域是看不到色带的,这就避免了你参与一些毫无必要的交易,那样只会白白浪费你的资金!这个指标真的很实用,有了它你就能更好地判断市场的风险和机会了!
我将这个指标开源发布在了TradingView社区,感兴趣的朋友可以去围观:
[blackcat] L1 Dynamic Volatility Indicator
https://www.tradingview.com/script/Fx2iHrVV/
为了方便,我还是贴下源代码:
1//@version=5
2indicator(title='[blackcat] L1 Dynamic Volatility Indicator', shorttitle='DVI', overlay=false)
3
4// Input parameters
5length = input(14, title='Length')
6mult = input(1.5, title='Multiplier')
7
8// Calculate True Range (TR)
9trh = high - low
10trl = math.abs(high - close[1])
11trc = math.abs(low - close[1])
12_tr = math.max(trh, trl)
13trueRange = math.max(_tr, trc)
14
15// Calculate Average True Range (ATR)
16atrSummation(n) =>
17 sumTrueRange = 0.0
18 for i = 0 to n - 1 by 1
19 sumTrueRange += trueRange[i]
20 sumTrueRange
21 sumTrueRange
22
23atrValue = atrSummation(length) / length
24
25//Normalized func
26normalize(src,lenn) =>
27 norm_value = (src - ta.lowest(src, lenn)) / (ta.highest(src, lenn) - ta.lowest(src, lenn))
28 norm_value
29//PLOT courtesy of @animecummer
30var grad = array.new_color(na)
31if barstate.isfirst
32 array.push(grad, color.gray)
33 array.push(grad, #2d0aff)
34 array.push(grad, #0038ff)
35 array.push(grad, #0050ff)
36 array.push(grad, #0062ff)
37 array.push(grad, #0071ff)
38 array.push(grad, #007eff)
39 array.push(grad, #0089ff)
40 array.push(grad, #0093ff)
41 array.push(grad, #009dff)
42 array.push(grad, #00a5ff)
43 array.push(grad, #00adff)
44 array.push(grad, #00b5ff)
45 array.push(grad, #00bcff)
46 array.push(grad, #00c2ff)
47 array.push(grad, #00c9ff)
48 array.push(grad, #00cfee)
49 array.push(grad, #00d6d9)
50 array.push(grad, #00dcc4)
51 array.push(grad, #00e2ae)
52 array.push(grad, #00e898)
53 array.push(grad, #00ed82)
54 array.push(grad, #00f26b)
55 array.push(grad, #00f753)
56 array.push(grad, #00fb38)
57 array.push(grad, #0ffe09)
58 array.push(grad, #1bf20a)
59 array.push(grad, #33f203)
60 array.push(grad, #43f300)
61 array.push(grad, #50f300)
62 array.push(grad, #5bf400)
63 array.push(grad, #64f400)
64 array.push(grad, #6df500)
65 array.push(grad, #76f500)
66 array.push(grad, #7df500)
67 array.push(grad, #85f600)
68 array.push(grad, #8cf600)
69 array.push(grad, #93f700)
70 array.push(grad, #99f700)
71 array.push(grad, #9ff700)
72 array.push(grad, #a5f800)
73 array.push(grad, #abf800)
74 array.push(grad, #b1f800)
75 array.push(grad, #b7f800)
76 array.push(grad, #bcf900)
77 array.push(grad, #c2f900)
78 array.push(grad, #c7f900)
79 array.push(grad, #ccf900)
80 array.push(grad, #d1fa00)
81 array.push(grad, #d6fa02)
82 array.push(grad, #dbfa09)
83 array.push(grad, #f6ff0d)
84 array.push(grad, #f9f700)
85 array.push(grad, #fbf000)
86 array.push(grad, #fde800)
87 array.push(grad, #ffe000)
88 array.push(grad, #ffd900)
89 array.push(grad, #ffd100)
90 array.push(grad, #ffc900)
91 array.push(grad, #ffc100)
92 array.push(grad, #ffb900)
93 array.push(grad, #ffb100)
94 array.push(grad, #ffa800)
95 array.push(grad, #ffa000)
96 array.push(grad, #ff9800)
97 array.push(grad, #ff8f00)
98 array.push(grad, #ff8600)
99 array.push(grad, #ff7d00)
100 array.push(grad, #ff7400)
101 array.push(grad, #ff6a00)
102 array.push(grad, #ff6000)
103 array.push(grad, #ff5600)
104 array.push(grad, #ff4a00)
105 array.push(grad, #ff3e00)
106 array.push(grad, #fc2f00)
107 array.push(grad, #fa1a09)
108 array.push(grad, #ff1e0d)
109 array.push(grad, #ff071b)
110 array.push(grad, #ff0025)
111 array.push(grad, #ff002f)
112 array.push(grad, #ff0038)
113 array.push(grad, #ff0041)
114 array.push(grad, #ff0049)
115 array.push(grad, #ff0052)
116 array.push(grad, #ff005b)
117 array.push(grad, #ff0064)
118 array.push(grad, #ff006e)
119 array.push(grad, #ff0077)
120 array.push(grad, #ff0081)
121 array.push(grad, #ff008a)
122 array.push(grad, #ff0094)
123 array.push(grad, #ff009e)
124 array.push(grad, #ff00a8)
125 array.push(grad, #ff00b2)
126 array.push(grad, #ff00bd)
127 array.push(grad, #ff00c7)
128 array.push(grad, #ff00d1)
129 array.push(grad, #ff00dc)
130 array.push(grad, #ff00e6)
131 array.push(grad, #ff00f0)
132 array.push(grad, #f709fa)
133
134AvgValue = ta.alma(close, 21, 0.85, 6)
135rsival = math.round(ta.rsi(AvgValue, 21))
136gradcolor = array.get(grad, rsival)
137// Calculate Dynamic Volatility Indicator (DVI)
138dviValue = normalize(ta.alma(atrValue * mult, length, 0.85, 6),987)
139tvATR = normalize(ta.rma(ta.tr, length),987)
140p1 = plot(tvATR, color=color.new(color.yellow, 0), linewidth=1)
141p2 = plot(dviValue, color=color.new(color.fuchsia, 0), linewidth=1)
142fill(p1, p2, color=(tvATR>=dviValue) and (tvATR>=0.2) and (dviValue>=0.2) ?gradcolor:na)
143h1 = hline(0.2, color=color.red)
144h2 = hline(0.0, color=color.green)
145fill(h1,h2, color=color.new(color.gray,70))
这段代码用于计算动态波动率指标(Dynamic Volatility Indicator)。以下是代码的解释:
1//@version=5
2indicator(title='[blackcat] L1 Dynamic Volatility Indicator', shorttitle='DVI', overlay=false)
此行设置了脚本版本和指标标题。
1length = input(14, title='Length')
2mult = input(1.5, title='Multiplier')
这两行定义了输入参数length
和mult
,分别表示长度和倍数。默认值为14和1.5。
1trh = high - low
2trl = math.abs(high - close[1])
3trc = math.abs(low - close[1])
4_tr = math.max(trh, trl)
5trueRange = math.max(_tr, trc)
这几行计算了真实范围(True Range),其中:
trh
表示最高价与最低价之差;
trl
表示最高价与前一日收盘价之差的绝对值;
trc
表示最低价与前一日收盘价之差的绝对值;
_tr
取以上三个值中的较大者;
trueRange
取上述结果与(high-low)
中的较大者。
1atrSummation(n) =>
2 sumTrueRange = 0.0
3 for i = 0 to n - 1 by 1
4 sumTrueRange += trueRange[i]
5 sumTrueRange
6 sumTrueRange
7
8atrValue = atrSummation(length) / length
这几行定义了一个函数atrSummation(n)
,用于计算平均真实范围(Average True Range, ATR)。该函数通过循环累加前n个真实范围的值,并返回总和。最后,将总和除以长度length
得到ATR的值。
1normalize(src,lenn) =>
2 norm_value = (src - ta.lowest(src, lenn)) / (ta.highest(src, lenn) - ta.lowest(src, lenn))
3 norm_value
4
5AvgValue = ta.alma(close, 21, 0.85, 6)
6rsival = math.round(ta.rsi(AvgValue, 21))
7gradcolor = array.get(grad, rsival)
这几行定义了一个名为normalize
的函数,用于对数据进行归一化处理。在此之后,使用内置指标计算出平滑移动平均线(ALMA)和相对强弱指数(RSI),并获取相应位置上的颜色值。
1dviValue = normalize(ta.alma(atrValue * mult, length, 0.85, 6),987)
2tvATR = normalize(ta.rma(ta.tr,length),987)
3p1 = plot(tvATR,color=color.new(color.yellow ,0),linewidth=1 )
4p2=plot(dviValue,color=color.new(color.fuchsia ,0),linewidth=1 )
5fill(p1,p2,color=(tvATR>=dviValue) and (tvATR>=0.2) and (dviValue>=0.2)?gradcolor:na)
6h1=hline(0.2,color=color.red)
7h2=hline(0.0,color=color.green)
8fill(h1,h2, color=color.new(color.gray,70))
这几行计算了动态波动率指标(DVI)的值,并绘制了相应的图表。最后,根据一些条件对图表进行填充和着色。
联系客服