볼링거 밴드 기반의 트렌드 브레이크 전략

저자:차오장, 날짜: 2023-11-16 16:24:12
태그:

img

전반적인 설명

이 전략은 볼링거 밴드 (Bollinger Bands) 를 기반으로 한 트렌드 다음 전략이다. 가격 채널을 계산하기 위해 볼링거 밴드를 사용하고 트렌드 방향을 결정하기 위해 촛불 패턴을 결합합니다. 가격이 볼링거 밴드 (Bollinger Bands) 에서 벗어날 때 긴 / 짧은 포지션이 열릴 것입니다. 이 전략은 명백한 트렌드를 가진 주식에게 잘 작동하며 중장기 트렌드 수익을 확보하는 것을 목표로합니다.

전략 논리

이 전략은 가격 범위를 결정하기 위해 볼링거 밴드의 상단, 중단 및 하단 밴드를 사용합니다. 상단 및 하단 밴드는 가격 움직임을 감싸고 중단 밴드는 이동 평균입니다. 가격 변동성에 따라 밴드 폭이 변경됩니다. 가격이 상단 너머로 넘으면 상승 브레이크와 긴 엔트리를 신호합니다. 가격이 하단 너머로 넘으면 하향 브레이크와 짧은 엔트리를 신호합니다.

볼링거 밴드 브레이크오웃으로 트렌드 방향을 결정한 후, 전략은 촛불 패턴으로도 확인합니다. 촛불 몸체가 상승 추세에서 상승 촛불과 같은 트렌드에 맞춰지면 포지션이 열립니다. 촛불 몸체가 상승 추세에서 하락 촛불과 같은 역 패턴을 표시하면 신호가 무시됩니다. 이 디자인은 잘못된 브레이크오웃 위험을 피하는 것을 목표로합니다.

세부적인 거래 신호 규칙은 다음과 같습니다.

  1. 가격 범위를 결정하기 위해 볼링거 밴드의 상단, 중단 및 하단 범위를 계산합니다.

  2. 가격이 상단 범위를 넘으면 상승/장단 추세를 나타냅니다.

  3. 만약 촛불이 상승세를 보인다면, 트렌드를 확인하고, 긴 경로로 가십시오.

  4. 가격이 하위 범위를 넘으면 하향/단순 추세를 나타냅니다.

  5. 촛불이 하향적인 경우, 트렌드를 확인하고 짧은 이동

  6. %를 기준으로 스톱 로스를 설정하고 이윤을 취합니다.

볼링거 밴드 브레이크에 들어가 촛불로 확인함으로써, 이 전략은 트렌드 방향을 효과적으로 파악하고 초기 트렌드 단계에서 좋은 엔트리를 얻을 수 있습니다. 이윤은 중장기 트렌드 중에 취합니다.

이점 분석

이것은 다음과 같은 강점을 가진 전략을 따르는 전형적인 경향입니다.

  1. 볼링거 밴드는 적응력이 있고, 다른 변동성을 가진 주식에 대한 범위를 조정할 수 있습니다.

  2. 촛불 확인이 가짜 브레이크를 필터링합니다.

  3. 중장기 보유는 거래 빈도를 낮추고 비용/실실률을 줄여줍니다.

  4. 중장기 동향을 파악하면 단기적인 소음이 생기지 않고 좋은 리스크/보상 효과를 얻을 수 있습니다.

  5. 백테스트 결과는 강하고 실제 거래는 체계화로 인해 안정적입니다.

  6. 전략 논리는 명확하고 이해하기 쉽고 개선할 수 있습니다.

볼링거 밴드를 사용하여 트렌드를 결정하고 촛불 확인에 입력함으로써이 전략은 볼륨에 의해 주도되는 중장기 동력을 효과적으로 잡습니다. 그것은 강력한 실용적 가치를 가지고 있습니다.

위험 분석

이 전략에는 몇 가지 위험 요소가 있습니다.

  1. 실패 브레이크 위험. 볼링거 밴드 브레이킹은 확률적 성격과 거짓 브레이크 발생

  2. 반전 위험. 중장기 동향도 반전 될 수 있습니다. 합리적인 중단이 설정되어야합니다.

  3. 매개 변수 최적화 위험. 볼링거 밴드 매개 변수와 정지 다른 주식에 대한 조정 필요

  4. 과도한 매개 변수 최적화 때문에 곡선 적합

  5. 실행 위험. 백테스트와 실제 거래 사이에 차이가 있습니다.

이러한 위험을 해결하기 위해 다음과 같은 개선이 가능합니다.

  1. 더 나은 적합성을 위해 볼링거 밴드 매개 변수와 폭을 최적화

  2. 트렌드를 확인하기 위해 볼륨과 같은 더 많은 요소를 추가합니다.

  3. 역행에 큰 손실을 방지하기 위해 동적 중지 사용

  4. 과도한 부착을 피하기 위해 앞으로 걷기 분석을 적용

  5. 더 나은 실제 거래 효율성을 위해 주문 실행을 개선

최적화 방향

이 전략은 다음과 같은 측면에서 더 강화 될 수 있습니다.

  1. KDJ, MACD와 같은 더 많은 지표를 추가하여 신호를 확인하고 정확도를 향상시킵니다.

  2. 기계 학습을 사용하여 고정 값보다는 매개 변수를 동적으로 최적화합니다.

  3. 더 정확한 신호를 생성하기 위해 브레이크오웃 포인트 주위에 가격 영역을 설정

  4. 후속 정지 또는 부분 이익 취득으로 출구를 최적화

  5. 더 나은 위험 관리를 위해 포지션 크기를 도입

  6. 실행 결과를 개선하기 위해 고급 명령어 유형을 활용

  7. 특정 환경에서 전략을 종료하기 위해 시장 정권 필터를 추가합니다.

더 많은 기술과 최적화를 도입함으로써 이 전략의 안정성과 수익성이 더욱 향상될 수 있습니다. 더 나은 백테스트와 실제 거래 결과를 위해.

결론

이것은 트렌드 방향을 결정하기 위해 볼링거 밴드를 동적 범위로 사용하는 전형적인 트렌드 다음 전략입니다. 촛불 확인은 정확한 입시 신호를 제공합니다. 중장기 모멘텀을 타는 것을 목표로 초기 트렌드 단계에서 엔트리가 이루어집니다.

이 전략의 장점은 트렌드를 위해 볼링거 밴드, 엔트리 확인을 위해 촛불, 낮은 거래 빈도 및 쉬운 체계화 등을 사용하는 것입니다. 또한 잘못된 브레이크아웃, 스톱 로스 최적화 어려움 및 실행 격차와 같은 위험이 있습니다. 더 많은 지표, 동적 매개 변수 및 고급 실행은 안정성과 실제 거래 성능을 향상시킬 수 있습니다.

전반적으로, 전략에 따른 전형적인 트렌드로서, 명확한 논리를 가지고 있으며 강력한 실행 가능성을 가지고 쉽게 구현 할 수 있습니다. 지속적인 최적화와 엄격한 위험 통제로 양적 거래 시스템에서 효과적인 모듈이 될 수 있습니다.


/*backtest
start: 2022-11-09 00:00:00
end: 2023-11-15 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/


//@version=2
strategy("Noro's Bands Scalper Strategy v1.2", shorttitle = "Scalper str 1.2", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value=100.0, pyramiding=0)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
takepercent = input(0, defval = 0, minval = 0, maxval = 1000, title = "take, %")
needct = input(false, defval = false, title = "Counter-trend entry")
len = input(20, defval = 20, minval = 2, maxval = 200, title = "Period")
needbb = input(true, defval = true, title = "Show Bands")
needbg = input(true, defval = true, title = "Show Background")
src = close

//PriceChannel 1
lasthigh = highest(src, len)
lastlow = lowest(src, len)
center = (lasthigh + lastlow) / 2

//Distance
dist = abs(src - center)
distsma = sma(dist, len)
hd = center + distsma
ld = center - distsma
hd1 = center + distsma / 2
ld1 = center - distsma / 2

//Trend
trend = close < ld and high < center ? -1 : close > hd and low > center ? 1 : trend[1]

//Lines
colo = needbb == false ? na : black
plot(hd, color = colo, linewidth = 1, transp = 0, title = "High band")
plot(center, color = colo, linewidth = 1, transp = 0, title = "center")
plot(ld, color = colo, linewidth = 1, transp = 0, title = "Low band")

//Background
col = needbg == false ? na : trend == 1 ? lime : red
bgcolor(col, transp = 80)

//Body
body = abs(close - open)
smabody = sma(body, 100)

//Signals
bar = close > open ? 1 : close < open ? -1 : 0
up7 = trend == 1 and ((bar == -1 and bar[1] == -1) or (body > smabody and close < open)) ? 1 : 0
dn7 = trend == 1 and bar == 1 and bar[1] == 1 and close > strategy.position_avg_price * (100 + takepercent) / 100 ? 1 : 0
up8 = trend == -1 and bar == -1 and bar[1] == -1 and close < strategy.position_avg_price * (100 - takepercent) / 100 ? 1 : 0
dn8 = trend == -1 and ((bar == 1 and bar[1] == 1) or (body > smabody and close > open)) ? 1 : 0

if up7 == 1 or up8 == 1 
    strategy.entry("Long", strategy.long, needlong == false ? 0 : trend == -1 and needct == false ? 0 : na)

if dn7 == 1 or dn8 == 1
    strategy.entry("Short", strategy.short, needshort == false ? 0 : trend == 1 and needct == false ? 0 : na)

더 많은