
동력 돌파 전략은 리처드 벅스타버가 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)