ATR波动率选股策略介绍
以下代码由今日美股网(www.TodayUSStock.com)代码学院提供,ATR(Average True Range,平均真实波幅)是一个用来衡量市场波动性的指标。ATR波动率选股策略通过分析股票的平均真实波幅来选择那些波动性较大的股票,这些股票在趋势市场中更容易产生显著的价格变动,适合进行趋势交易。这种策略帮助投资者在市场波动性增加时找出可能的交易机会。
参数与数值的意义
参数 | 数值 | 意义 |
---|---|---|
Period | 14 | 计算ATR的周期,通常设置为14天,用于衡量一段时间内的平均波动性。 |
Volatility Threshold | 可变 | 设定一个波动率的阈值,超过此值的股票被视为具有高波动性。 |
针对不同产品的推荐参数
产品类型 | 推荐参数(Period, Volatility Threshold) | 推荐理由 |
---|---|---|
股票日线图 | 14, 平均ATR的2倍 | 标准设置,识别出波动性显著高于平均水平的股票。 |
外汇或加密货币(短期图表) | 10, 平均ATR的1.5倍 | 市场波动性高,使用较短周期和较低阈值来捕捉快速变化。 |
期货市场 | 14, 平均ATR的2倍 | 标准参数通常适用于期货市场的波动性分析。 |
国内股票软件代码
通达信(中国)
// 通达信ATR波动率选股公式 ATR:=MA(MAX(MAX(HIGH-LOW,ABS(HIGH-REF(CLOSE,1))),ABS(LOW-REF(CLOSE,1))),14); THRESHOLD:=MA(ATR,14)*2; // 设定为14日ATR平均值的2倍 HIGH_VOL:=ATR>THRESHOLD;
加载方法:进入“公式系统”菜单,选择“自定义指标”,输入或粘贴代码,保存为新指标,然后在图表中加载或在选股条件中使用。
同花顺(中国)
// 同花顺ATR波动率选股公式 ATR:=MA(MAX(MAX(H-L,ABS(H-REF(C,1))),ABS(L-REF(C,1))),14); THRESHOLD:=MA(ATR,14)*2; HIGH_VOL:=ATR>THRESHOLD;
加载方法:进入“选股器”或“条件选股”,选择“自定义选股公式”,输入或粘贴代码并保存,运行选股。
大智慧(中国)
// 大智慧ATR波动率选股公式 ATR:=MA(MAX(MAX(HIGH-LOW,ABS(HIGH-REF(CLOSE,1))),ABS(LOW-REF(CLOSE,1))),14); THRESHOLD:=MA(ATR,14)*2; HIGH_VOL:=ATR>THRESHOLD;
加载方法:进入“自定义指标”或“选股”功能,选择“公式编辑器”,输入代码并保存,应用到图表或选股器中。
国外股票软件代码
MetaTrader 4/5 (MT4/MT5)
// MetaTrader 4/5 ATR波动率选股公式 double atr = iATR(NULL, 0, 14, 0); double threshold = iMAOnArray(atr, 0, 14, 0, MODE_SMA, 1) * 2; if (atr > threshold) return true; else return false;
加载方法:在“导航器”中右键点击“指标”选项,选择“自定义指标”,点击“新建”,粘贴代码,保存并编译指标,然后应用到图表上。
TradingView (Pine Script)
// TradingView ATR波动率选股公式 study("ATR Volatility Selection", shorttitle="ATR Volatility", overlay=false) atr = atr(14) threshold = sma(atr, 14) * 2 highVolatility = atr > threshold plot(atr, title="ATR", color=color.blue) hline(threshold, title="Volatility Threshold", color=color.red, linestyle=hline.style_dotted) plotshape(highVolatility, title="High Volatility", location=location.bottom, color=color.green, style=shape.triangleup, size=size.small)
加载方法:在图表上点击“Pine Editor”,新建脚本,粘贴代码,保存并应用到图表。
Thinkorswim (美国)
// Thinkorswim ATR波动率选股公式 declare lower; input period = 14; input multiplier = 2; def atr = Average(TrueRange(high, close, low), period); def threshold = Average(atr, period) * multiplier; plot HighVolatility = if atr > threshold then 1 else 0; plot ATRLine = atr; ATRLine.SetDefaultColor(GetColor(8)); ATRLine.SetLineWeight(2); plot ThresholdLine = threshold; ThresholdLine.SetDefaultColor(GetColor(1)); ThresholdLine.SetStyle(Curve.SHORT_DASH);
加载方法:在图表上点击“研究”标签,选择“编辑研究”,然后“新建研究”,粘贴代码并保存。
NinjaTrader (美国)
// NinjaTrader ATR波动率选股公式 protected override void OnBarUpdate() { int period = 14; double multiplier = 2; double atr = ATR(period)[0]; double threshold = SMA(atr, period)[0] * multiplier; if (atr > threshold) Alert("High Volatility - ATR above Threshold"); }
加载方法:从“新建”菜单中选择“指标”,编写或粘贴代码,编译并应用到图表。
eSignal (全球)
// eSignal ATR波动率选股公式(需要转换到易语言) ATR:=Mov(MAX(MAX(H-L,ABS(H-REF(C,1))),ABS(L-REF(C,1))),14,S); THRESHOLD:=Mov(ATR,14,S)*2; HIGH_VOL:=ATR>THRESHOLD;
加载方法:使用“易语言”编写指标,代码需要转换,在“指标”菜单中加载新指标。
优点和缺点
优点 | 缺点 |
---|---|
有效识别高波动股票,捕捉趋势性机会 | 在低波动或横盘市场中可能不适用 |
适应于多种时间框架的分析 | 高波动性可能引起较高的风险 |
帮助设置合理的止损和目标价位 | 需要结合趋势确认,避免在假突破中操作 |
如何正确使用
结合其他趋势指标(如移动平均线或MACD)来确认市场方向。
注意市场的整体波动性和事件的影响,避免在重大经济事件中操作。
使用ATR来动态调整止损点,以适应市场波动。
在不同时间框架上验证波动性,以确认其持续性。
回测策略,评估在不同市场条件下的表现。
使用注意事项
ATR主要用来衡量波动性,而不是方向,因此在使用时需要结合其他分析工具判断趋势。高波动性市场可能伴随着更高的风险,投资者需根据自身风险承受能力调整策略。此外,市场的流动性和特定事件可能会导致ATR的短期异常波动。
来源:今日美股网