
다주기 평균선 회귀와 ATR 동적 정지 손실 전략은 단기 및 장기 간단한 이동 평균 ((SMA) 교차 신호와 평균 실제 파장 ((ATR) 동적 정지 손실 메커니즘을 결합한 양적 거래 전략이다. 이 전략의 핵심은 단기 평균선에 대한 가격 회귀 기회를 포착하는 것과 동시에 ATR 지표를 통해 동적으로 정지 손실을 설정하여 위험을 효과적으로 제어하고 수익을 잠금하는 것이다. 전략은 주로 암호화폐 시장을 대상으로 하며, 평균선 시스템을 사용하여 트렌드 방향을 식별하고, 가격과 빠른 평균선 사이의 관계를 통해 기회 입지를 포착하고, ATR 배수를 사용하여 정확한 출구 위치를 설정한다.
이 전략의 핵심 원칙은 두 개의 다른 주기의 간단한 이동 평균 (SMA) 과 가격 사이의 상호 관계를 기반으로 하며, ATR 지표와 결합하여 동적 위험 관리를 구현합니다:
입력 논리:
출전 메커니즘:
전략의 논리는 트렌드 추적과 평균 회귀의 조합을 기반으로 한다. 빠른 평균선이 느린 평균선 위에 있을 때, 시장은 상승 추세에 있다. 빠른 평균선이 느린 평균선 아래에 있을 때, 시장은 하향 추세에 있다. 빠른 평균선에 대한 가격 회전은 부진 진입 기회를 제공하며, 이 특성은 전략이 트렌드가 확립될 경우 더 우수한 가격으로 시장에 진입할 수 있도록 한다.
ATR 동적 스톱 스톱 메커니즘은 시장의 실제 변동성에 따라 적응하여 변동성이 증가하면 자동으로 스톱 스톱 범위가 넓어지고 변동성이 감소하면 스톱 스톱 범위가 좁아집니다. 이것은 고정 지점의 스톱 스톱보다 더 유연하고 시장의 실제 상황에 적합합니다.
추세와 회귀두 개의 SMA를 통해 트렌드 방향을 확인하고, 빠른 평균에 대한 가격 회전을 활용하여 더 나은 입시 가격을 제공하여 트렌드 방향의 정확성을 보장하고 입시 시기를 최적화합니다.
동적 위험 관리: ATR을 사용하여 스톱 스톱 손실 수준을 설정하여 시장의 실제 변동 상황에 따라 위험 매개 변수를 자동으로 조정할 수 있으며, 높은 변동 기간 동안 너무 가까운 중지 또는 낮은 변동 기간 동안 너무 멀리 중지되는 것을 방지합니다.
위험과 이익의 최적화:ATR 중지 배수 ((2.0) 는 중지 배수 ((1.2) 보다 크며, 좋은 리스크 수익 비율을 보장하며, 이론적으로 거래 당 수익 손실 비율은 1.67:1 였다.
정책 변수는 간결합니다.4개의 핵심 변수만 포함하고 있다. 빠른 SMA 주기, 느린 SMA 주기, ATR 중지 손실 배수, ATR 중지 중지 배수) 를 이해하고 최적화하기 쉽다.
매우 적응력이 좋다: 전략은 다양한 시장 조건에 적응할 수 있고, 트렌드 시장에서 잘 작동하며, 동적 중지 손실을 통해 충격 시장의 손실을 줄일 수 있다.
전체 창고 운영 효율성전략: 지위관리 설정을 100%의 계정권익으로 사용하며, 신호가 발생했을 때 자금 효율성을 최대한 활용한다.
평균선 뒤떨어짐:SMA 자체는 뒤떨어진 지표이며, 빠르게 변화하는 시장에서 신호 지연을 유발할 수 있으며, 입구 포인트가 바람직하지 않거나 중요한 전환점을 놓칠 수 있습니다. 해결책은 SMA를 대신하여 EMA를 사용하는 것을 고려하여 뒤떨어진 것을 줄이는 것입니다.
가짜 침입 위험: 시장은 단기간의 돌파구 이후 급격한 회전이 발생할 수 있으며, 이로 인해 빈번한 손실이 발생한다. 해결책은 거래량 확인이나 동력 지표 필터링과 같은 확인 신호를 추가하는 것이다.
매개변수 민감도: 전략 성능은 SMA 주기와 ATR 배수 설정에 민감하며, 다른 변수 조합은 다른 시장 조건에서 성능에 큰 차이를 보인다. 해결 방법은 다양한 시장 조건의 변수 설정을 최적화하여 재검토하는 것이다.
연속적인 손실 위험급격한 변동이 있는 시장에서는 연속적인 정지상태가 발생하여 계좌 자금을 훼손할 수 있다. 해결책은 시장환경 필터링 제도를 증가시키고, 높은 변동이 있는 가로 시장에서는 거래 주파수를 줄이거나 거래를 중단하는 것이다.
전체 포지션 운영 위험전략: 100% 이자 거래를 사용하여 단일 거래의 위험 지점을 증가시킵니다. 해결책은 특히 시장의 불확실성이 높은 기간에 포지션을 세분화하거나 포지션 비율을 줄이는 것을 고려하는 것입니다.
ATR 계산 기간 동안 고정: 코드에서 ATR은 고정된 14주기를 사용하며, 모든 시장상태에 완전히 적응하지 못할 수도 있다. 해결책은 ATR주기를 또한 다른 시장상태에 적응하기 위해 조정 가능한 매개 변수로 설정하는 것이다.
트렌드 강도 필터링: ADX ((평균 방향 지수) 또는 비슷한 지표가 트렌드 강도를 측정하기 위해 추가될 수 있으며, 트렌드가 분명할 때만 입문하여 흔들림 시장에서 가짜 신호를 피한다. 이러한 최적화는 트렌드 시장에서 전략의 성능을 크게 향상시키고 흔들림 시장에서 손실 거래를 줄일 수 있다.
동력 확인: RSI 또는 MACD와 같은 동력 지표가 보조 확인 신호로 결합되어 입시 조건의 엄격성을 증가시킵니다. 동력 지표는 가격 운동의 강도를 확인하고 가짜 돌파구로 인한 손실을 줄이는 데 도움이됩니다.
최적화 매개 변수 적응 메커니즘: 시장의 변동률이나 트렌드 강도에 기반한 변수 자조 메커니즘을 개발하여 SMA 주기와 ATR 배수가 시장 상태에 동적으로 조정될 수 있도록 한다. 이것은 전략이 다른 시장 환경에 더 잘 적응하고 전반적인 안정성을 향상시킬 것이다.
시간 필터를 추가: 시간 필터 기능을 추가하여 알려진 낮은 유동성 또는 높은 변동성 시기를 피합니다. 중요한 데이터 발표 또는 거래 간 시간. 이것은 시장의 비정상적인 변동으로 인한 불필요한 손실을 줄일 수 있습니다.
포지션 관리 전략을 추가합니다.: 시장 상태, 계정 순액 변화 또는 신호 강도에 따라 포지션 크기를 조정합니다. 100% 이자를 고정하는 대신. 이것은 자금 사용 효율을 높이고 단일 거래 위험을 줄일 것입니다.
부분 차단 메커니즘 구현: 특정 수익 목표가 달성되면 일부 포지션의 평점 포지션이 수익을 잠금 할 수 있으며, 나머지 포지션의 설정은 손실을 추적 할 수 있습니다. 이러한 최적화는 수익 공간을 유지하면서 철회율을 효과적으로 줄일 수 있습니다.
통합 다중 시간 주기 분석: 더 높은 수준의 시간 주기의 트렌드 확인과 결합하여, 높은 수준과 낮은 수준의 트렌드 방향이 일치하는 경우에만 거래하십시오. 다중 시간 주기의 분석은 낮은 품질의 신호를 효과적으로 필터링하여 거래 성공률을 높일 수 있습니다.
다주기 평균선 회귀와 ATR 동적 스톱로스 전략은 기술적 분석 기본 원리를 결합한 정량 거래 시스템으로, 8주기 및 30주기 SMA의 조합으로 시장 추세를 식별하고, 가격의 빠른 평균선 회귀를 활용하여 입문 기회를 찾고, ATR 동적 설정을 사용하여 스톱로스 위치를 제어합니다. 이 전략은 간결하고, 논리적으로 명확하며, 변수가 적고 이해하기 쉬운 것으로 설계되어 있으며, 특히 암호화폐와 같은 변동성이 큰 시장에 적합합니다.
전략의 주요 장점은 트렌드 확인과 회귀 입장을 결합하고 시장의 실제 변동성에 기반한 동적 위험 관리에 있다. 합리적인 스톱 스톱 손실 배수 비율을 설정함으로써 전략은 이론적으로 좋은 위험 수익률을 유지할 수 있다. 그러나 전략에는 평평선 뒤떨어진, 변수 민감도가 높고, 변동 시장에서 빈번하게 멈출 수 있는 위험도 있다.
미래 최적화 방향은 주로 트렌드 강도 및 동력 확인을 증가시키고, 변수 자율 적응 메커니즘을 개발하고, 포지션 관리를 최적화하고, 다중 시간 주기의 분석을 통합하는 데 초점을 맞추고 있습니다. 이러한 개선으로, 전략은 원래의 간결성을 유지하면서 안정성과 수익성을 더욱 향상시키고, 다양한 시장 환경에 더 잘 적응 할 수 있습니다.
/*backtest
start: 2024-08-07 00:00:00
end: 2025-08-05 08:00:00
period: 3d
basePeriod: 3d
exchanges: [{"eid":"Futures_Binance","currency":"BNB_USDT"}]
*/
//@version=6
strategy("8/30 SMA Pullback + ATR Exits (Crypto)", overlay=true,
default_qty_type=strategy.percent_of_equity,
default_qty_value=100, initial_capital=200)
// === Inputs === //
smaFastLen = input.int(8, "Fast SMA", minval=1)
smaSlowLen = input.int(30, "Slow SMA", minval=1)
atrMultSL = input.float(1.2, "ATR Multiplier SL", step=0.1)
atrMultTP = input.float(2.0, "ATR Multiplier TP", step=0.1)
// === Core Series === //
smaFast = ta.sma(close, smaFastLen)
smaSlow = ta.sma(close, smaSlowLen)
atr = ta.atr(14)
// === Entry Conditions === //
longCond = close < smaFast and smaFast > smaSlow
shortCond = close > smaFast and smaFast < smaSlow
if longCond
strategy.entry("Long", strategy.long)
if shortCond
strategy.entry("Short", strategy.short)
// === ATR-based TP / SL === //
if strategy.position_size > 0
longSL = strategy.position_avg_price - atr * atrMultSL
longTP = strategy.position_avg_price + atr * atrMultTP
strategy.exit(id="Exit Long", from_entry="Long",
stop=longSL, limit=longTP)
if strategy.position_size < 0
shortSL = strategy.position_avg_price + atr * atrMultSL
shortTP = strategy.position_avg_price - atr * atrMultTP
strategy.exit(id="Exit Short", from_entry="Short",
stop=shortSL, limit=shortTP)
// === Visuals === //
plot(smaFast, "Fast SMA", color=color.blue)
plot(smaSlow, "Slow SMA", color=color.gray)