在SMC(Smart Money Concepts,智慧资金理念)交易中,为了过滤掉市场波动剧烈(如受突发新闻或极端行情影响)时产生的“无效”或“高风险”Order Block(订单块 / OB),结合ATR(Average True Range,真实波幅均值)进行过滤是一种非常严谨的量化思路。
- 低波动/正常波动OB:代表机构正在有序进场、吃掉流动性并建立头寸。
- 高波动/极端波动OB:通常出现在经济数据公布(如CPI、非农)时。这种K线实体极大、影线极长,代表多空双方失去平衡,机构的真实成本区间很难界定,后续作为支撑阻力的成功率较低,容易被击穿(诱多或诱空)。
- 算法设计:计算当前OB起源K线(Trigger Candle)的实体高度,并与当下的ATR(如取14周期)进行对比。
- 规则:如果
K线实体高度 > N 倍的 ATR(例如 N=2.5 或 3),则判定该OB过于剧烈、波动异常,直接废弃。 [1]
- 规则:只有当当前价格行为处于顺势趋势中(结合EMA200等),且OB前期的回调波动在合理ATR范围内时,才进行交易。 [1]
// 计算ATR和OB
atr_val = ta.atr(14)
ob_candle_size = high - low // 或者用 close - open 测算实体
// 定义过度波动率阈值
volatility_threshold = atr_val * 2.5
// 如果当前OB的K线大小超过了阈值,或者震幅太大,则过滤掉
if ob_candle_size > volatility_threshold
valid_ob = false
else
valid_ob = true
// SMC 结构事件匹配...
if structure_broken == bullish and valid_ob
// 标记为高概率可交易OB
draw_ob_zone()
- 极端高ATR的K线,如果伴随着异常缩量,代表这是市场恐慌或流动性枯竭导致的虚假波动,绝对过滤。
- 极端高ATR的K线,如果伴随着巨量爆发,说明机构资金强势介入,这时的OB尽管ATR很大,但在回踩时由于机构未完全出局,依然具备防守价值。 [1]