ATR 변동에 따라 적응하는 동적 손절매 모멘텀 녹인 전략
개요
이 전략은 모멘텀 지표인 스토캐스틱 K값과 변동성 지표인 ATR을 결합하여, ATR 값에 따라 K값의 손절선과 진입선을 동적으로 조정합니다. 시장 변동성에 따라 손절선과 진입선을 자동으로 조정하는 아이디어를 구현했습니다.
전략 원리
-
길이가 len인 K값
sma(stoch(close, high, low, len), smoothK)을 계산합니다. 이는 스토캐스틱 K값을 나타냅니다. -
길이가 len인 ATR 값
atr(len)을 계산합니다. -
ATR 값에 따라 손절선
plot(rsi(atr, len)+lowLine, ..., title = "low line")과 진입선plot(rsi(atr, len)*-1+100-lowLine, ..., title = "up line")을 그립니다. -
K값이 진입선을 돌파하는 시점(
crossover(k,up line))과 손절선을 하향 돌파하는 시점(crossunder(k,low line))을 판단하여 매수 및 매도 신호를 생성합니다. -
매수 및 매도 배경색을 표시합니다.
-
위 신호가 충족되면 매수/매도 거래를 실행하고 손절매를 설정합니다.
전략 장점 분석
-
이 전략은 시장 변동성(ATR)에 따라 손절선과 진입선을 동적으로 조정하므로, 시장 변동성에 따라 손절 리스크를 자동으로 조정할 수 있습니다.
-
시장 변동성이 클 경우 손절선과 진입선의 간격이 넓어져 손절이 튕겨 나가는 것을 방지할 수 있습니다.
-
시장 변동성이 조용할 경우 손절선과 진입선의 간격이 좁아져 신속하게 손절할 수 있습니다.
-
모멘텀 지표인 K값을 사용하여 진입과 청산을 판단합니다. K값은 가격 변화 속도를 반영하여 전환점을 포착할 수 있습니다.
-
모멘텀 지표와 변동성 지표를 결합하여 추세를 포착하는 동시에 변동성에 따라 리스크를 자동 조정할 수 있습니다.
전략 리스크 분석
-
K값은 허위 돌파가 발생하기 쉬워 불필요한 거래 신호를 유발할 수 있습니다. K값 매개변수
smoothK를 적절히 조정하여 K라인을 평활화할 수 있습니다. -
ATR 매개변수
len을 너무 크게 설정하면 손절선과 진입선 간격이 너무 넓어져 리스크가 과도해질 수 있습니다. 다양한len매개변수의 안정성을 테스트해야 합니다. -
순수 추적 손절매는 손절 위치가 적절한지 판단할 수 없으며, 단일 손절 리스크를 통제할 수 없습니다. 기대 손절 알고리즘을 결합하여 단일 손절 리스크를 제어하는 것을 고려할 수 있습니다.
-
전략 신호가 빈번하여 거래 비용이 높을 수 있습니다. 진입선 매개변수
lowLine을 적절히 조정하여 거래 빈도를 제어할 수 있습니다.
전략 최적화 방향
-
K값 매개변수
smoothK를 테스트하여 K값 평활화의 최적 매개변수 조합을 찾습니다. -
ATR 매개변수
len의 다양한 값을 테스트하여 적절한 ATR 매개변수를 결정합니다. -
진입선 매개변수
lowLine을 최적화하여 거래 빈도를 제어하는 최적 매개변수를 찾습니다. -
다른 지표(예: 거래량 지표, KDJ 지표 등)를 결합하여 진입 신호를 필터링하고 허위 돌파를 방지하는 것을 고려합니다.
-
손절 방식을 최적화하여 기대 손절 방식으로 개선함으로써 손절 리스크를 능동적으로 제어할 수 있도록 합니다.
요약
이 전략은 모멘텀 지표 K값과 변동성 지표 ATR을 기반으로 손절선과 진입선을 동적으로 조정하는 아이디어를 구현했습니다. 추세를 포착하는 동시에 변동성에 따라 리스크를 자동 조정할 수 있어 매우 혁신적이고 실용적인 전략 아이디어입니다. 매개변수 최적화, 손절 방식 개선 등을 통해 추가 최적화하면 전략이 더욱 안정적이고 신뢰할 수 있게 되어 발전 가능성이 매우 높습니다.
/*backtest
start: 2023-09-08 00:00:00
end: 2023-10-08 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
strategy("Stoch + ATR", overlay=false, pyramiding = 0, calc_on_order_fills = false, commission_type = strategy.commission.percent, commission_value = 0.0454, default_qty_type = strategy.percent_of_equity, default_qty_value = 100)
len = input(34, minval=1, title="Length for Main Stochastic & ATR") - 1
