모멘텀 브레이크업 ATR 변동성 전략

저자:차오장, 날짜: 2024-01-12 13:50:44
태그:

img

전반적인 설명

이 전략은 시장 변동성을 결정하기 위해 ATR 변동성 지수가 보충된 간단한 이동 평균 이중 이동 평균 전략의 조합을 활용합니다. 단기 평균 라인이 장기 평균 라인 이상으로 넘으면 황소 시장으로 결정되어 장기 포지션을 취합니다. 단기 평균 라인이 장기 평균 라인 아래로 넘으면 곰 시장으로 결정되어 짧은 포지션을 취합니다. 동시에 이동 평균 신호의 신뢰성은 볼륨 가중 평균 가격 VWAP을 결합하여 판단됩니다. 또한 반전을 피하기 위해 RSI 지표가 통합됩니다. ATR 변동성 지수는 낮은 변동성 기간 동안 거래를 선택하기 위해 시장 변동성을 결정하는 데 사용됩니다.

전략 원칙

이중 이동 평균 전략의 핵심은 이중 이동 평균 전략이다. 이중 이동 평균 전략은 일반적으로 50일 이동 평균과 200일 이동 평균과 같은 단기 이동 평균과 장기 이동 평균을 선택한다. 단기 이동 평균이 장기 이동 평균을 넘을 때 구매 신호가 생성된다. 단기 이동 평균이 장기 이동 평균을 넘을 때 판매 신호가 생성된다. 이중 이동 평균 전략은 장기 및 단기 시장 트렌드의 변화를 판단하고, 이동 평균의 돌파구를 사용하여 트렌드 전환점을 포착한다.

이 전략은 50일 이동 평균을 단기 이동 평균으로, 200일 이동 평균을 장기 이동 평균으로 선택한다. 이동 평균 신호의 신뢰성을 결정하기 위해 볼륨 가중 평균 가격 VWAP와 결합한다. 즉, 이동 평균 신호가 VWAP와 조화를 이루었을 때만 시장에 진입한다. 이것은 일부 잘못된 신호를 필터링한다.

또한, RSI 지표는 과잉 구매 및 과잉 판매를 피하기 위해 통합되어 있습니다. RSI가 70보다 높을 때 구매를 피하고 RSI가 30 이하일 때 판매를 피합니다.

마지막으로, ATR 지표의 평균 변동 진폭은 시장의 변동성과 위험 수준을 결정하는 데 사용됩니다. ATR 값이 1.18보다 높을 때 높은 변동성으로 정의됩니다. 이 시점에서 배경 색상을 변경함으로써 더 높은 위험이 촉구되며 변동성이 감소할 때까지 일시적으로 거래를 피할 수 있습니다.

이점 분석

이 전략의 주요 장점은 세 가지 측면에서 나타납니다.

  1. 이중 이동 평균은 시장의 중장기 트렌드의 전환점을 포착하고 트렌드 거래를 사용하여 상대적으로 큰 이익을 얻습니다.

  2. 거짓 신호를 필터링하고 신호 신뢰성을 향상시키기 위해 VWAP를 결합합니다.

  3. RSI 지표를 도입하여 손실을 줄일 수 있는 시장에 대한 거래를 피합니다.

  4. ATR 변동성 지수를 적용하여 시장 위험 조건을 결정하면 손실을 줄일 수 있는 높은 변동성을 피할 수 있습니다.

  5. 다양한 지표의 조합은 간단하고 이해하기 쉽고 구현하기 쉽고 양적 거래 입시에 적합합니다.

위험 분석

이 전략에는 또한 몇 가지 위험이 있습니다.

  1. 이동 평균이 신호를 생성 할 때 가격은 크게 변하여 과잉 거래의 위험을 초래할 수 있습니다. 해결책은 지표의 반응 속도를 가속화하기 위해 이동 평균의 주기를 줄이는 것입니다.

  2. VWAP는 오류가 있을 수 있어 올바른 거래 신호를 필터링할 수 있습니다. 해결책은 다른 지표로 확인하는 것입니다.

  3. 트렌드 종료 후, RSI는 트렌드 반전의 전환점을 놓치면서 과도한 구매/대판 영역에서 오랫동안 유지할 수 있습니다. 해결책은 MACD와 같은 다른 지표를 결합하여 확인하는 것입니다.

  4. ATR는 시장 변동성을 판단할 때 지연될 수 있습니다. 해결책은 시장 변동성을 결정하기 위해 가장 높은 가격, 가장 낮은 가격 등을 결합하는 것입니다.

  5. 수익률은 기대에 미치지 못할 수 있고 매개 변수도 그에 따라 조정해야 합니다.

최적화 방향

이 전략에는 여전히 최적화의 여지가 있습니다.

  1. 최적의 매개 변수를 찾기 위해 더 많은 이동 평균 조합을 테스트합니다.

  2. MACD, KDJ 등과 같은 필터 신호에 더 많은 보조 지표를 추가하십시오.

  3. 손실을 줄이고 수익을 높이기 위해 스톱 로스 및 수익 매개 변수를 최적화합니다.

  4. 분류 모델링을 위해 강한 주식과 약한 주식 사이의 거래 전략의 차이를 평가하십시오.

  5. RNN 같은 기계 학습 알고리즘을 통합하여 매개 변수를 자동으로 최적화하고 전략을 평가합니다.

  6. 자동화된 거래 시스템을 개발하고 리크테스팅을 위해 실시간 거래에 연결합니다.

요약

전체적으로, 이 전략은 비교적 간단한 트렌드 추적 전략이다. 코어는 장기 및 단기 트렌드를 결정하기 위해 이중 이동 평균을 사용합니다. 신호를 처리하고 위험을 평가하기 위해 ATR을 적용하기 위해 VWAP와 RSI를 결합합니다. 전략 아이디어는 간단하고 이해하기 쉽고 작동합니다. 일부 최적화 공간을 통해 좋은 수익을 얻을 수 있습니다. 양적 거래 입문을위한 선택으로 매우 적합합니다.


/*backtest
start: 2024-01-04 00:00:00
end: 2024-01-11 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Simple Moving Averages", overlay=true)

sma50 = ta.sma(close, 50)
sma200 = ta.sma(close, 200)
vwap = ta.vwap(close)
rsi = ta.rsi(close, 14)
[diPlus, diMinus, adx_val] = ta.dmi(14, 14)
atr_val = ta.atr(14)

plot(sma50, color=color.new(color.green, 0))
plot(sma200, color=color.new(color.red, 0))
plot(vwap)

longCondition = ta.crossover(sma50, sma200) and vwap > close
shortCondition = ta.crossunder(sma50, sma200) and vwap < close

if (longCondition)
    strategy.entry("Long", strategy.long)
    
if (shortCondition)
    strategy.entry("Short", strategy.short)

barcolor = sma50 > sma200 ? (vwap < close ? (rsi < 70 ? color.green : color.blue) : color.yellow) : (sma50 < sma200 ? (vwap > close ? (rsi > 30 ? color.red : color.orange) : color.yellow) : na)
barcolor(barcolor)
bgcolor(adx_val > 25 and atr_val > 1.18 ? color.new(color.gray, 50) : color.new(color.black, 50), transp=90)

// ADX and ATR Label Box
// label.new(bar_index, high, "ADX: " + str.tostring(adx_val, "#.##") + "\nATR: " + str.tostring(atr_val, "#.##"), color=color.new(color.white, 0), textcolor=color.new(color.black, 0), style=label.style_labeldown, yloc=yloc.price, xloc=xloc.bar_index, size=size.small, textalign=text.align_left)

// Exit conditions (optional)
strategy.close("Long", when = ta.crossunder(sma50, sma200))
strategy.close("Short", when = ta.crossover(sma50, sma200))

// Take Profit and Stop Loss
takeProfitPercentage = 5
stopLossPercentage = 3

strategy.exit("Take Profit / Stop Loss", "Long", profit = takeProfitPercentage, loss = stopLossPercentage)
strategy.exit("Take Profit / Stop Loss", "Short", profit = takeProfitPercentage, loss = stopLossPercentage)

더 많은