动量突破策略基于理查德·布克斯塔伯在1984年提出的概念,即一旦出现大的波动,市场往往会持续这个方向运行。因此,该策略使用ATR来测量波动性,当收盘价变化超过ATR倍数阈值时,发出交易信号。
该策略首先计算ATR指标来测量市场波动性。然后计算每日收盘价变化的绝对值。当收盘价变化超过ATR指标值的若干倍时,产生交易信号。具体来说,如果收盘价上涨幅度大于ATR上轨,做多;如果收盘价下跌幅度大于ATR上轨,做空。
该策略利用ATR指标来动态确定突破阈值。当市场波动加大时,阈值会上升,可以减少错误交易。当市场波动减小时,阈值会下降,可以及时捕捉突破机会。
可以考虑结合其他指标筛选交易时机,提高效率。也可以针对品种特点选择更优参数。使用马丁格尔算法等技术控制交易频率。
动量突破策略简单直接,利用突破产生交易信号。ATR止损使其可以适应市场的波动性。该策略依靠参数优化可以获得不错的效果。但也存在一些问题,如错过首次突破、频繁交易等。这需要进一步结合其他技术进行改进,才能在复杂的市场中稳定获利。总体来说,动量突破策略思路清晰,值得进一步研究与应用。
/*backtest
start: 2022-10-26 00:00:00
end: 2023-11-01 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © EduardoMattje
//@version=5
strategy("Volatility System", overlay=false, margin_long=0, margin_short=0, default_qty_type=strategy.percent_of_equity,
default_qty_value=100, process_orders_on_close=true, initial_capital=20000)
// Inputs
var averageLength = input.int(14, "Average length", 2)
var multiplier = input.float(2.0, "Multiplier", 0.0, step=0.1)
// Calculations
atr = ta.atr(averageLength) * multiplier
closingChange = ta.change(close, 1)
atrPenetration(int signal) =>
res = closingChange * signal > atr[1]
longCondition = atrPenetration(1)
shortCondition = atrPenetration(-1)
// Order calls
if (longCondition)
strategy.entry(strategy.direction.long, strategy.long)
if (shortCondition)
strategy.entry(strategy.direction.short, strategy.short)
// Visuals
plot(atr, "ATR", color.white, 2)
plot(math.abs(closingChange), "Absolute close change", color.red)