볼링거 브레이크업 전략

저자:차오장, 날짜: 2023-11-13 10:19:43
태그:

img

전반적인 설명

이 전략은 볼링거 밴드 지표를 기반으로 하는 브레이크아웃 전략이다. 이 전략은 진입 및 출구에 대한 브레이크아웃 신호를 생성하기 위해 볼링거 밴드의 상부 및 하부 밴드를 활용한다. 이 전략은 트렌딩 시장에서 더 높은 수익을 달성하기 위해 트레일링 스톱 로스 및 피라미딩 메커니즘을 포함하기도 한다.

전략 논리

이 전략은 먼저 볼링거 밴드의 중간 밴드, 상위 밴드 및 하위 밴드를 계산합니다. 중간 밴드는 가격의 이동 평균이며 상위 및 하위 밴드는 중간 밴드 +/- 1 표준편차입니다.

가격이 하위 대역을 넘을 때 긴 신호가 생성됩니다. 가격이 상위 대역을 넘을 때 짧은 신호가 생성됩니다. 이것은 가격이 볼링거 대역 범위를 넘어서고 트렌드 움직임에 들어갈 수 있음을 나타냅니다.

또한, 전략은 몸의 브레이크아웃을 검사합니다. 닫는 것이 열려있는 것보다 높고 몸이 특정 비율로 중간 밴드에 침투하면 위치를 평평하게합니다. 닫는 것이 열려있는 것보다 낮고 몸이 특정 비율로 중간 밴드에 침투하면 위치를 평평하게합니다. 이것은 거짓 브레이크아웃으로 인한 손실을 피합니다.

포지션에 진입한 후, 전략은 스톱 로스 및 피라미드를 추적할 수 있다. 가격이 유리한 방향으로 계속 움직이면 포지션 크기가 증가하여 수익 잠재력을 향상시킬 수 있다. 가격이 역전되면 스톱 로스는 위험을 제어하는 데 사용됩니다.

이점 분석

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

  1. 볼링거 밴드를 활용하여 트렌드 방향을 결정하고 브레이크오웃을 파악합니다. 이 지표는 간단하고 효과적입니다.

  2. 몸과 중단역을 확인해 파업의 유효성을 확인해 가짜 파업으로 인한 손실을 피한다.

  3. 수익을 확보하고 위험을 통제하기 위해 후속 스톱 로스를 사용하세요.

  4. 피라미딩을 사용해서 트렌딩 동작에서 더 높은 수익을 얻습니다.

  5. 명확하고 이해하기 쉬운 논리입니다. 간단한 매개 변수는 이 전략을 쉽게 구현합니다.

위험 분석

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

  1. 볼링거 밴드 브레이크는 가짜 브레이크를 완전히 피할 수 없습니다. 일부 손실이 발생할 수 있습니다.

  2. 부적절한 스톱 로스 배치로 인해 조기 스톱 아웃이 발생하거나 손실을 제한하는 데 실패할 수 있습니다.

  3. 과도한 피라미딩 시간과 크기가 손실을 증폭시킬 수 있습니다.

  4. 트렌드가 역전될 때 제때 중단하지 않으면 큰 마감으로 이어질 수 있습니다.

  5. 불충분한 매개 변수 최적화는 저성능으로 이어질 수 있습니다.

  6. 과도한 리스크가 있습니다. 다른 시장에서 검증을 필요로 합니다.

최적화 방향

이 전략은 다음과 같은 측면에서 개선될 수 있습니다.

  1. 더 나은 조합을 찾기 위해 볼링거 밴드 매개 변수를 테스트하고 최적화합니다.

  2. 다른 스톱 로스 전략을 테스트하고 스톱 로스 배치를 최적화하십시오.

  3. 테스트하고 최적의 피라미드 제작 시간과 크기를 찾아보세요.

  4. 트렌드를 피하기 위해 트렌드 필터를 추가합니다.

  5. 거짓 탈출을 줄이기 위해 몸 탈출 논리를 최적화해

  6. 시장 조건에 따라 다른 매개 변수 집합을 활용하기 위해 조건부 명령을 추가합니다.

  7. 안정성을 높이기 위해 다양한 제품과 시간대에 더 많은 백트테스트를 수행합니다.

  8. 자동으로 매개 변수를 최적화하기 위해 기계 학습을 활용합니다.

결론

요약하자면, 이 전략은 트렌드 방향을 결정하고 브레이크아웃을 잡기 위해 볼링거 밴드를 활용하며, 좋은 결과를 달성하기 위해 추가적인 스톱 로스, 피라미딩 및 기타 기능을 사용합니다. 그러나 위험 요소가 존재하며, 매개 변수 최적화, 조건 추가 등을 요구하여 안정성을 향상시킵니다. 기술 분석에 익숙한 투자자에게 적합하며 트렌딩 시장에서 좋은 수익을 창출 할 수 있습니다.


/*backtest
start: 2023-11-05 00:00:00
end: 2023-11-12 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=2
strategy("Noro's Bollinger Strategy v1.1", shorttitle = "Bollinger str 1.1", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100.0, pyramiding = 5)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")

length = input(20, defval = 20, minval = 1, maxval = 1000, title = "Bollinger Length")
mult = input(2.0, minval = 0.001, maxval = 50, title = "Bollinger Mult")
source = input(ohlc4, defval = ohlc4, title = "Bollinger Source")

showbands = input(true, defval = true, title = "Show Bollinger Bands")
fromyear = input(2018, defval = 2018, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

//Bollinger Bands
basis = sma(source, length)
dev = mult * stdev(source, length)
upper = basis + dev
lower = basis - dev

//Lines
col = showbands ? black : na 
plot(upper, linewidth = 1, color = col)
plot(basis, linewidth = 1, color = col)
plot(lower, linewidth = 1, color = col)

//Body
body = abs(close - open)
abody = ema(body, 30)

//Signals
up = close <= lower
dn = close >= upper
exit = (strategy.position_size > 0 and close > open) or (strategy.position_size < 0 and close < open) and body > abody / 2

//Trading
if up
    strategy.entry("Long", strategy.long, needlong == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 00, 00)))

if dn
    strategy.entry("Short", strategy.short, needshort == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 00, 00)))
    
if time > timestamp(toyear, tomonth, today, 00, 00) or exit
    strategy.close_all()

더 많은