적응성 변동성 브레이크업 전략

저자:차오장, 날짜: 2024-01-08 14:38:31
태그:

img

전반적인 설명

적응성 변동성 브레이크아웃 전략 (Adaptive Volatility Breakout Strategy) 은 트렌드를 따르는 전략이다. 가격이 정定的 레벨을 강하게 넘어서면 브레이크아웃 신호를 식별하고, 긴 포지션을 설정하고, 다음 날 오픈 시 수익을 얻기 위해 상승 추세를 계속 추적한다.

이 전략은 유명한 선물 및 주식 거래자인 래리 R. 윌리엄스가 제안했다. 이 전략은 종종 시장의 전환을 의미하는 가격 브레이크포인트를 포착하려고 시도한다. 이러한 신호를 적시에 식별하고 포지션을 설정함으로써 새로운 트렌드 방향을 따라 수익을 얻을 수 있다.

원칙

이 전략의 핵심 지표는

Certain level = Close + k * (High - Low) 

이 공식은 최고와 최저 가격의 변동성을 통합하여 시장 변동에 적응하기 위해 브레이크오웃 포인트를 더 유연하게 만듭니다.

하루의 최고가격이 계산된 특정 수준을 뚫을 때, 그것은 가격의 브레이크오프를 나타냅니다. 전략은 그 다음 긴 포지션을 설정합니다. 포지션은 다음 날의 수익을 위해 완전히 닫을 것입니다.

스톱 로스는 전날의 최저 가격과 엔트리 가격의 절반으로 설정되어 손실이 확장되는 것을 방지합니다.

이점 분석

이 전략의 장점은 다음과 같습니다.

  1. 변동성을 포착하고 추세를 따르기: 전략은 가격 변동 리듬을 포착하는 유연한 브레이크아웃 포인트를 계산하기 위해 최고와 최저 가격을 통합합니다.

  2. 적시에 입력, 트렌드 추적: 매일 브레이크오웃 신호를 계산하면 가격 상승 추세 단계를 추적하기 위해 새로운 트렌드를 적시에 식별 할 수 있습니다.

  3. 적절한 리스크 제어: 합리적인 스톱 로스 설정은 단일 손실을 효과적으로 제어합니다.

위험 분석

이 전략의 위험은 다음과 같습니다.

  1. 실패한 브레이크 위험: 가격 브레이크는 반드시 상승 추세를 유지하지 않으며 단기적인 잘못된 브레이크로 손실을 초래할 수 있습니다.

  2. 극심한 시장 위험: 시장 붕괴와 같은 극심한 시장 사건에서 가격은 상승 / 하락으로 격차되어 Stop Loss 트리거와 큰 손실을 유발할 수 있습니다.

  3. 과도한 거래 위험: 매일 포지션을 열고 닫으면 거래 빈도와 수수료가 증가합니다.

최적화

전략은 다음 측면에서 최적화 될 수 있습니다:

  1. 곱셈을 추가합니다. 브레이크아웃 공식에 곱셈을 추가하여 시장 변동성이 증가할 때 적절하게 줄이고 시장이 안정되면 증가시켜 전략을 유연하게 만듭니다.

  2. 보유 기간을 연장: 단기적인 가짜 브레이크를 필터링하기 위해 보유 기간을 2~3일로 연장합니다.

  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)




더 많은