技术分析46——ATR概率指数:基于市场波动性预测价格在未来一定时间内达到指定移动距离的可能性,根据该概率可做出止损设置和交易决策

一、用途
ATR概率指数(Probability of ATR Index——PAI)是一种基于市场波动性(ATR)和价格标准差的技术指标,用于计算在指定时间周期内,价格移动一定距离(以ATR为单位)到达目标区域的概率。这个指标可以帮助交易者预测价格走势,并基于该概率做出交易决策。
PAI的主要用途包括:
-
• 止损设置:PAI能够帮助判断价格在未来一段时间内触及指定距离的概率,从而为止损设置提供指导。 -
• 期权交易:在期权交易中,PAI可以用来评估价格在未来一定时间内是否会进入期权的盈利区域。 -
• 市场波动分析:PAI结合了市场波动性和价格变动的统计特征,适合用来分析市场的潜在风险和机会。

二、数学原理
ATR概率指数的计算基于ATR(平均真实波动幅度)和价格的标准差(通过高低价的变化来衡量)。通过这些数据,PAI能够估算价格在未来一定时间内达到指定距离的概率。
-
1. ATR计算:ATR是衡量市场波动性的重要指标,PAI首先计算指定周期(以"p"为周期数)的ATR值。 -
2. 价格标准差:通过计算过去“p”个时间周期内高低价格的标准差来衡量市场价格的波动幅度。这为PAI提供了额外的波动性信息,用以估算未来的价格变动。 -
3. 概率计算:PAI使用了经过简化的正态分布函数来计算在指定时间内,价格移动至特定ATR距离的概率。这一计算并非直接使用标准误差函数(erf),而是通过泰勒级数近似来估算正态分布的累积分布函数。这样做的目的是通过更简便的计算方式避免脚本中无法直接实现的复杂数学操作。 -
4. 颜色标识:PAI的颜色代表了价格到达目标位置的概率。例如,颜色越热(红色、橙色),表示达到目标位置的概率越高,反之,颜色越冷(蓝色、紫色),表示概率较低。 -

三、实现步骤
-
1. 输入参数: -
• ATR(距离,m):定义价格移动的目标距离,以ATR的倍数表示。 -
• # Bars(时间,n):指定用于计算ATR和标准差的时间周期数。 -
2. 计算过程: -
• ATR(r):根据指定的周期计算平均真实波动幅度。 -
• 价格标准差(a):通过计算过去周期内高低价的标准差来评估市场的波动性。 -
• 概率(P):基于ATR和标准差计算价格达到目标距离的概率。PAI通过正态分布的近似计算得到概率值,并将其转换为百分比表示。 -
3. 结果输出: -
• PAI当前概率(P):当前时间周期内,价格在未来一定时间内到达指定ATR距离的概率。 -
• PAI平均概率(Ma):根据过去200个周期的平滑结果,显示的平均概率。 -

时间跨度
ATR概率指数所估算的“未来一定时间”是通过参数 n 来定义的。具体来说,n 是输入参数“# Bars (time)”,它代表了用于计算PAI指标的时间周期数。
-
• n参数(时间周期)n代表了未来预测的时间跨度,也就是PAI在计算时参考的历史数据的长度。PAI会根据过去n个周期(例如:若n = 8,则使用过去8个周期的数据)来计算当前价格在未来这段时间内,达到指定距离(m * ATR)的概率。 -
• 未来一定时间 因为PAI的计算使用的是基于过去 n个周期的数据来估算价格在未来n个周期内到达目标距离的概率。所以,这里的“未来一定时间”指的是当前周期后,接下来的n个时间周期。
假设 n = 8,意味着PAI指标预测的是当前价格在接下来的8个周期内达到目标ATR距离的概率。如果你使用的是日线图,那么“未来一定时间”就是未来8天;如果你使用的是1小时图,则是未来8小时。
因此,ATR概率指数并不是在一个非常长的时间范围内进行预测,而是基于用户设定的短期时间框架来计算未来价格波动的概率。
双向移动
PAI(Probability of ATR Index)所估算的“价格移动一定距离到达目标区域”可能是上涨,也可能是下降。
PAI 计算的是当前价格在未来 n 个周期内,是否会达到目标距离,这个目标距离是基于 ATR 的倍数(由输入参数 m 定义)。但它并没有指定是向上还是向下,也就是说,目标区域的“距离”是双向的,价格可以向任何一个方向移动,达到指定的 ATR 距离。
-
• 目标区域:当计算PAI时, m代表了目标距离的倍数,它是相对于当前价格而言的。这意味着,无论是上涨还是下跌,如果价格在未来的n个周期内变化超过m * ATR,PAI 都会认为这个目标距离被触及了。 -
• 例如,若 m = 1.5和ATR = 10,目标区域为当前价格上下1.5 * 10 = 15的距离。如果价格在未来的n周期内上涨或下跌超过这个距离,PAI 将返回一个正的概率值,表示触及该目标区域的概率。 -
• 上涨或下跌:由于计算的是“达到目标区域的概率”,并没有对方向进行限定,因此上涨和下跌都会被视为有效的价格变化。PAI 只是估算未来价格变化的幅度是否达到指定的距离(以 ATR 为单位),不管这个变化是正向(上涨)还是负向(下跌)。
示例:
-
• 假设当前价格为100, m = 1.5,ATR = 10,那么目标区域就是上下15点(即,目标范围是85到115之间)。 -
• 如果未来某个时间点,价格上升到115或下降到85,PAI 会认为目标距离已经被触及,计算出的概率会反映这一可能性。
PAI并不区分价格是上涨还是下跌,而是计算价格是否会在未来的时间段内变化超过指定的ATR倍数。这使得PAI在衡量市场波动性时具有一定的通用性,无论价格波动方向如何,它都可以估算价格达到目标距离的概率。
四、可视化信号
-
• K线颜色热度: -
• 颜色越红,表示当前价格达到指定距离的概率越高。 -
• 颜色越蓝,表示当前价格达到指定距离的概率较低。 -
• 
-
• PAI值: -
• 当前概率(P):蓝色线,代表价格在未来某一周期内到达指定距离的概率。 -
• 平均概率(Ma):黄色线,显示过去时间周期内,价格达到指定距离的平均概率。 -
• 
五、应用场景
-
1. 止损设置: -
• 使用PAI可以帮助交易者判断某个特定的止损点在未来会被触及的概率。例如,如果PAI显示某一止损距离的概率较高,交易者可能会选择调整止损位置或采取更谨慎的交易策略。 -
2. 期权交易: -
• 在期权策略中,例如跨式期权(strangle),PAI可以帮助评估市场是否可能突破期权的盈利范围。若PAI值较低,表示价格触及盈利区域的概率较小,交易者可以更自信地持仓。 -
3. 市场分析: -
• PAI为交易者提供了一种基于波动性和统计学的市场分析工具,帮助交易者预判价格运动的可能性,为策略调整和风险管理提供依据。
六、实践拓展
1. ATR与标准化衡量:多位用户提到PAI使用ATR作为价格波动的度量单位而非绝对价格的方式非常有意义。通过使用ATR,PAI能够提供一个与市场波动性直接相关的标准化数值,从而使得不同市场、不同资产之间的对比更加公平。例如,Gold和EUR/USD的2ATR波动将有相同的意义,这对于交易者来说是一种更具通用性的波动性度量方式。
2. 概率的实际应用:有用户提出使用PAI进行实际交易决策的想法。例如,使用PAI预测价格在强势上涨趋势中回调并达到特定ATR距离的概率,这有助于交易者在适当的时机进行限价单设置。在期权交易中,类似的概率分析可以帮助交易者确定价格是否会突破期权的盈利范围。
3.数学公式用户在评论中提到的计算公式和过程,尤其是对泰勒级数展开的关注,表明PAI在实现时考虑了更复杂的数学背景。对此,部分高级用户提出进一步的拓展建议,如引入Z-score概率或B&S期权定价模型来增强指标的应用广度。
4.交易应用有用户探索了PAI指标在实际交易中的应用,包括如何在期权交易中利用PAI来判断市场走势以及如何应用于不同的市场(如比特币)。这类问题显示出PAI作为量化工具的广泛潜力,但也反映出不同交易者在实际应用中的不同需求。
七、脚本实现
以下脚本实现了ATR概率指数,用来估算在特定时间内,价格是否会以指定的ATR(平均真实波动幅度)距离进行移动的概率,其中Pine脚本由racer8创作,图形脚本由电商记创作,完整源代码详见附录。
下面将逐步解析这个脚本的实现过程。
1. 输入参数部分

m = input(1.5,"ATR (distance)",minval=0)n = input(8,"# Bars (time)",minval=1)p = max(8,n)r = atr(p)
-
• m = input(1.5, "ATR (distance)", minval=0)这个输入参数m定义了距离的倍数,即价格移动的目标是以m倍的ATR为单位。例如,如果m为1.5,表示目标价格是当前价格上方或下方1.5倍的ATR。 -
• n = input(8, "# Bars (time)", minval=1)参数n是用于计算ATR和标准差的周期数,也就是计算过程中涉及的时间框架。默认为8个周期。 -
• p = max(8, n)p确保周期数至少为8,避免因为数据量太小而导致计算结果不稳定。 -
• r = atr(p)r计算了指定周期p的ATR值,ATR是衡量市场波动性的重要指标,用于量化价格的波动幅度。
2. 计算价格的标准差

sum = 0.0 for i = 0 to p-1 sum := sum + high[i] + low[i]u = sum/(2*p) SUM = 0.0for I = 0 to p-1 SUM := SUM + pow((high[I]-u),2) + pow((low[I]-u),2)v = SUM/(2*p)a = sqrt(v)
-
• u(均值计算)这段代码通过遍历过去p个周期,计算每个周期的high(最高价)和low(最低价)之和,并计算出它们的均值。均值u是价格波动的中心点。 -
• a(标准差计算)紧接着,计算高低价与均值u的差异平方和,得到标准差a。标准差是衡量价格波动的一个关键指标,用于量化价格的分散程度。最终,标准差a用于后续概率计算。
3. 计算概率输入

d = (m*r)/(n*a) x = d>=0? d:na
-
• d是一个计算量度,它结合了目标ATR距离、ATR值和标准差,用于估算价格变化的“距离标准化”度量。公式通过m、r和a来计算目标价格达到指定距离所需的变化幅度。 -
• x = d >= 0 ? d : na如果d为负数,则x返回na,避免计算不合法的负值。
4. 计算正态分布概率
这部分是整个PAI的核心,通过使用泰勒级数逼近正态分布的累积分布函数(CDF),估算价格在指定时间内达到目标位置的概率。

a1 = 0.278393a2 = 0.230389a3 = 0.000972a4 = 0.078108z = x/sqrt(2) de = 1 + a1*z + a2*pow(z,2) + a3*pow(z,3) + a4*pow(z,4) den = pow(de,4)Fx = 0.5*(1 - 1/den)z2 = 100/sqrt(2) de2 = 1 + a1*z2 + a2*pow(z2,2) + a3*pow(z2,3) + a4*pow(z2,4) den2 = pow(de2,4)Fx2 = 0.5*(1 - 1/den2)P = 100*(1 - (Fx + Fx2))
-
• a1,a2,a3,a4这些系数用于泰勒级数展开,目的是逼近正态分布的累积概率。通过这些系数,泰勒级数可以近似计算标准正态分布的累积概率。 -
• Fx和Fx2分别计算x和100标准化后正态分布的累积分布函数值。两者的和估算了价格在特定时间段内达到目标ATR距离的概率。 -
• PP是最终的百分比概率,表示当前价格在未来n个周期内移动指定m倍ATR距离的概率。
5. 绘制图表和颜色设置

Ma = sma(P,200)plot(P,color=color.blue,style=plot.style_line,title="Current Probability",transp=0)plot(Ma,color=color.yellow,style=plot.style_circles,title="Average Probability",transp=0)co(P) => if P>40 color.red else if P>30 color.orange else if P>20 color.yellow else if P>10 color.blue else if P>0 color.purplebarcolor(co(P))
-
• Ma = sma(P, 200)计算PAI值P的200周期简单移动平均(SMA),用于显示PAI的平均概率。 -
• plot()plot(P, ...)绘制当前的PAI值曲线,plot(Ma, ...)绘制PAI的平均值曲线。color.blue和color.yellow分别用于表示当前概率和平均概率。 -
• co(P)根据PAI的值来设置不同的条形图颜色。颜色的强度表示概率的高低:这些颜色变化有助于交易者一眼识别市场的当前波动性和价格触及目标的可能性。
-
• 红色:表示概率大于40%; -
• 橙色:表示概率大于30%; -
• 黄色:表示概率大于20%; -
• 蓝色:表示概率大于10%; -
• 紫色:表示概率大于0%。
八、总结
PAI(ATR概率指数)为交易者提供了一个强大的工具,通过综合市场波动性和价格标准差,计算价格在未来一段时间内触及某个指定距离的概率。这一指标特别适用于止损设置、期权交易以及市场风险评估等多种交易场景。使用PAI,交易者可以做出更为理性和有依据的决策,从而提高交易的成功率。
附录、源代码
在电商记的超级图表(www.dianshangji.com)中,点开顶部菜单“指标”,从“社区”的精选列表选中该指标,点击即加入到图表。然后打开该指标菜单条的编辑器,可以查看/修改脚本的源代码,包括聚观点图形脚本和Python脚本两种实现,如下所示。


def upRange(start, stop, step): while start <= stransform: translateY( yield start start += abs(step)def downRange(start, stop, step): while start >= stop: yield start start -= abs(step)from typing import Anyfrom juguandian.types.na import NAfrom juguandian.lib import script, input, math, ta, high, low, na, plot, color, barcolor, bar_index, time@script.indicator(title = 'ATR概率指数', shorttitle = 'Probability of ATR Index')def main(m : float = input.float(1.5, title = 'ATR距离', minval = 0.5),n : float = input.float(8, title = '周期', minval = 1)): p = math.max(8, n) r = ta.atr(length = p) sum2 = 0 i_end = p - 1 for i in (0 <= i_end) and upRange(0, i_end, 1) or downRange(0, i_end, 1): sum2 = (sum2 + high[i]) + low[i] u = sum2 / (2 * p) sum2 = 0 i_end2 = p - 1 for i in (0 <= i_end2) and upRange(0, i_end2, 1) or downRange(0, i_end2, 1): sum2 = (sum2 + math.pow(base = (high[i] - u), exponent = 2)) + math.pow(base = (low[i] - u), exponent = 2) v = sum2 / (2 * p) a = math.sqrt(number = v) d = (m * r) / (n * a) x = d if d >= 0 else NA(float) a1 = 0.278393 a2 = 0.230389 a3 = 0.000972 a4 = 0.078108 z = x / math.sqrt(number = 2) de = (((1 + a1 * z) + a2 * math.pow(base = z, exponent = 2)) + a3 * math.pow(base = z, exponent = 3)) + a4 * math.pow(base = z, exponent = 4) den = math.pow(base = de, exponent = 4) Fx = 0.5 * (1 - 1 / den) z2 = 100 / math.sqrt(number = 2) de2 = (((1 + a1 * z2) + a2 * math.pow(base = z2, exponent = 2)) + a3 * math.pow(base = z2, exponent = 3)) + a4 * math.pow(base = z2, exponent = 4) den2 = math.pow(base = de2, exponent = 4) Fx2 = 0.5 * (1 - 1 / den2) p = 100 * (1 - (Fx + Fx2)) Ma = ta.sma(source = p, length = 200) plot(series = p, title = '当前概率', color = color.blue, style = plot.style_line) plot(series = Ma, title = '平均概率', color = color.yellow, style = plot.style_linebr) def co(P): if p > 40: return color.red else: if p > 30: return color.orange else: if p > 20: return color.yellow else: if p > 10: return color.blue else: if p > 0: return color.purple barcolor(color = co(p))
笔记编号:673
点击文章底部 [ 阅读原文 ] 链接网页可访问电商记的数据叙事工具的相关资源:
-
点击超级图表可实践本系列教程,用图形脚本自制技术指标和全股市扫描器,分析资产组合;
-
点击插件在PC端浏览器运行适用于淘宝、拼多多、京东等网站的自动化流程或用图形脚本自制数据采集流程。

电商记(dianshangji.com)为投资者、交易者提供数据叙事平台,集超级图表、数据采集、问卷调研、流量分析、网站内容管理、文档与表格管理、企业资源计划和客户关系管理的一站式商业数据智能解决方案。


评论