적응성 변동성 브레이크아웃 전략 (Adaptive Volatility Breakout Strategy) 은 트렌드를 따르는 전략이다. 가격이
이 전략은 유명한 선물 및 주식 거래자인 래리 R. 윌리엄스가 제안했다. 이 전략은 종종 시장의 전환을 의미하는 가격 브레이크포인트를 포착하려고 시도한다. 이러한 신호를 적시에 식별하고 포지션을 설정함으로써 새로운 트렌드 방향을 따라 수익을 얻을 수 있다.
이 전략의 핵심 지표는
Certain level = Close + k * (High - Low)
이 공식은 최고와 최저 가격의 변동성을 통합하여 시장 변동에 적응하기 위해 브레이크오웃 포인트를 더 유연하게 만듭니다.
하루의 최고가격이 계산된
스톱 로스는 전날의 최저 가격과 엔트리 가격의 절반으로 설정되어 손실이 확장되는 것을 방지합니다.
이 전략의 장점은 다음과 같습니다.
변동성을 포착하고 추세를 따르기: 전략은 가격 변동 리듬을 포착하는 유연한 브레이크아웃 포인트를 계산하기 위해 최고와 최저 가격을 통합합니다.
적시에 입력, 트렌드 추적: 매일 브레이크오웃 신호를 계산하면 가격 상승 추세 단계를 추적하기 위해 새로운 트렌드를 적시에 식별 할 수 있습니다.
적절한 리스크 제어: 합리적인 스톱 로스 설정은 단일 손실을 효과적으로 제어합니다.
이 전략의 위험은 다음과 같습니다.
실패한 브레이크 위험: 가격 브레이크는 반드시 상승 추세를 유지하지 않으며 단기적인 잘못된 브레이크로 손실을 초래할 수 있습니다.
극심한 시장 위험: 시장 붕괴와 같은 극심한 시장 사건에서 가격은 상승 / 하락으로 격차되어 Stop Loss 트리거와 큰 손실을 유발할 수 있습니다.
과도한 거래 위험: 매일 포지션을 열고 닫으면 거래 빈도와 수수료가 증가합니다.
전략은 다음 측면에서 최적화 될 수 있습니다:
곱셈을 추가합니다. 브레이크아웃 공식에 곱셈을 추가하여 시장 변동성이 증가할 때 적절하게 줄이고 시장이 안정되면 증가시켜 전략을 유연하게 만듭니다.
보유 기간을 연장: 단기적인 가짜 브레이크를 필터링하기 위해 보유 기간을 2~3일로 연장합니다.
스톱 로스 최적화: 볼링거 하위 밴드 또는 전날의 폐쇄와 같은 더 깊은 지원 수준에 스톱 로스를 설정합니다.
적응성 변동성 브레이크아웃 전략 (Adaptive Volatility Breakout Strategy) 은 가격 변동성과 리듬을 동적으로 추적함으로써 트렌드를 추적합니다. 전통적인 브레이크아웃 전략에 비해 가격 움직임을 포착하는 데 더 유연하고 능력이 있습니다. 그러나 극단적인 시장에서 스톱이 발생할 수 있다는 위험은 주목해야합니다. 보유 기간과 스톱 손실에 대한 추가 최적화는 더 나은 결과를 초래할 수 있습니다.
/*backtest start: 2023-01-01 00:00:00 end: 2024-01-07 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/ // © Dicargo_Beam //@version=5 strategy("Volatility Breakout Strategy", overlay=true, default_qty_type= strategy.percent_of_equity, default_qty_value=100,process_orders_on_close=false) k = input.float(0.6) [o,h,l,c] = request.security(syminfo.tickerid,"D",[open,high,low,close]) lp = math.log(c[1])+(math.log(h[1])-math.log(l[1]))*k _lp = math.pow(2.718,lp) longcond = _lp < high exit = hour==0 or math.log(close) < (math.log(l[1])+lp)/2 plot(_lp,"Entry",color=color.yellow) //plot(l,"Yesterday's Low") plot((_lp+l[1])/2,"StopLoss",color=color.red) strategy.entry("Long", strategy.long,comment = "Long", when = longcond and strategy.opentrades == 0) strategy.close("Long", comment="Exit", when = exit) var bg = 0 bg := if hour == 0 bg + 1 else bg[1] bgcolor(bg/2== math.floor(bg/2) ? color.new(color.blue,95):na)