볼링거 밴드 조정 전략

저자:차오장, 날짜: 2023-10-24 16:52:52
태그:

img

전반적인 설명

이 전략은 트렌드 판단을 위해 볼링거 밴드 지표를 사용하고, 과잉 구매를 피하기 위해 RSI 지표와 함께 촛불 몸 필터와 컬러 필터를 사용하여 거래 신호를 더 검증합니다. 전반적으로이 전략의 주요 아이디어는 트렌드의 시작에서 구매하고 트렌드 역전 전에 출퇴하여 이익을 얻습니다.

원칙

이 전략은 먼저 볼링거 밴드 지표의 하위 대역을 사용합니다. 가격이 하위 대역 아래에있을 때, 그것은 포지션을 여는 기회로 간주됩니다. 과잉 구매를 피하기 위해, 전략은 또한 RSI 지표를 도입합니다. 이는 구매 신호를 생성하기 위해 RSI가 30 미만일 필요가 있습니다. 또한, 전략은 현재 촛불의 몸체가 구매 시기를 더 검증하기 위해 지난 10 기간 동안 촛불의 평균 몸의 절반보다 크기를 필요로하는 촛불 몸 필터를 설정합니다. 마지막으로, 컬러 필터는 촛불이 녹색 (더 높게 닫는) 이어야합니다.

가격이 볼링거 밴드의 하위 대역을 넘어서면, RSI는 30보다 작고, 몸집은 충분히 크고, 촛불은 녹색이며, 구매 신호가 생성됩니다. 닫기 가격이 열기 가격보다 높고 몸집이 평균 몸집의 절반 이상이면, 그것은 트렌드 역전 신호로 포지션을 닫는 것을 나타냅니다.

이점 분석

이 전략의 가장 큰 장점은 트렌드의 시작을 성공적으로 결정하고 트렌드 반전 전에 시장에 진출하고 빠져나올 수 있다는 것입니다. 따라서 수익 잠재력은 크습니다. 구체적으로 주요 장점은 다음과 같습니다.

  1. 볼링거 밴드 지표는 트렌드 방향을 정확하게 판단합니다. 가격 변동 범위를 사용하여 가격 움직임을 결정하므로 이 지표를 사용하여 트렌드의 시작과 끝을 효과적으로 결정할 수 있습니다.

  2. RSI 지표는 과잉 구매를 피합니다. RSI는 과잉 구매 및 과잉 판매 조건을 측정 할 수 있습니다. 그것을 사용하면 일시적인 가격 수정 중에 잘못 구매하는 것을 피합니다.

  3. 엔티티 필터링은 신호 신뢰성을 높인다. 더 큰 촛불 몸체는 더 강력한 돌파구를 나타낸다. 엔티티 필터링은 강력한 돌파구를 구매하는 것을 보장한다.

  4. 색상 필터링은 타이밍을 확인합니다. 녹색 촛불만 구매하면 적절한 타이밍을 확인합니다.

  5. 촛불이 초록색으로 변하면 구매 후 트렌드가 반전되는 것을 나타냅니다. 거래자들은 "트렌드가 차례로 변한다고" 말합니다. 촛불이 초록색으로 변하면 반전 시기를 판단 할 수 있습니다.

위험 분석

이 전략은 또한 몇 가지 위험을 가지고 있습니다.

  1. 볼링거 밴드에서 잘못된 신호가 나올 가능성이 있습니다. 시장이 변동할 때 잘못된 브레이크 아웃 신호를 생성할 수도 있습니다.

  2. 스톱 로스가 없으면 손실이 커집니다. 스톱 로스가 없으면 판단이 잘못되면 더 큰 손실이 발생할 수 있습니다.

  3. 너무 엄격한 필터 조건으로 구매 기회를 놓칠 수 있습니다. 여러 개의 필터를 쌓아 놓으면 기회를 놓칠 수 있습니다.

  4. 최적화된 백테스팅 결과에 의존합니다. 매개 변수 및 필터 설정은 최적화 및 검증이 필요합니다. 실제 거래 결과 또한 검증이 필요합니다.

  5. 촛불이 초록색으로 변하는 것은 역전을 결정하는 데 신뢰할 수 없습니다. 트렌드 역전을 완전히 확인하지 않습니다.

리스크를 위해, 스톱 로스는 손실을 제어할 수 있고, 필터를 최적화하면 놓친 구매를 줄이고, 여러 지표를 사용하여 신호를 검증하고, 실시간 거래에서 결과를 검증합니다.

개선 방향

이 전략은 몇 가지 측면에서 최적화 될 수 있습니다.

  1. 최적화 볼링거 대역 매개 변수 최적 설정. 다른 기간, 표준 편차 곱, 등을 테스트

  2. RSI 대신 다른 오시레이터를 테스트합니다. 예를 들어 KDJ, Williams %R 등.

  3. 리스크를 제어하기 위해 후속 스톱 손실을 추가합니다. 백테스트 데이터를 기반으로 합리적인 스톱을 설정합니다.

  4. 필터 상태 매개 변수를 최적화 합니다. 다른 몸 필터 크기와 기간을 테스트합니다.

  5. 신호를 확인하기 위해 다른 지표를 포함하십시오. 예를 들어 부피 가격 확인 지표.

  6. 다른 반전 신호를 테스트합니다. 예를 들어, 트렌드 반전을 결정하기 위해 이동 평균 교차.

  7. 다른 제품과 시간 프레임에서 테스트하고 다른 시장에서 전략을 평가합니다.

결론

전체적으로, 전략은 상대적으로 강한 경향을 따라 능력과 적응력을 가지고 있습니다. 핵심 강점은 경향 방향을 결정하기 위해 볼링거 밴드를 사용하고 타이밍을 보장하기 위해 RSI와 필터를 사용하는 것입니다. 그러나 목표 최적화와 테스트가 필요한 특정 위험도 있습니다. 매개 변수와 규칙을 확인할 수 있다면 라이브 거래에서 좋은 결과를 얻을 수 있습니다. 결론적으로, 전략은 탐색 할 가치가있는 실용적인 가치를 가지고 있습니다.


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

//Noro
//2018

//Donate: 3BMEXvKkuJLobJrcpMm12bKTZoCnojZTjh

//@version=2
strategy(title = "Noro's Wizard Strategy v1.1", shorttitle = "Wizard str 1.1", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 10)

//Settings
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Capital, %")
length = input(40, defval = 40, minval = 1, maxval = 200, title = "BB Period")
usebod = input(false, defval = false, title = "Use Body-Filter")
usecol = input(false, defval = false, title = "Use Color-Filter")
usersi = input(true, defval = true, title = "Use RSI-Filter")
showar = input(false, defval = false, title = "Show Arrows")
fromyear = input(1900, defval = 1900, 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
src = low
mult = 2
basis = sma(src, length)
dev = mult * stdev(src, length)
lower = basis - dev
plot(lower, color = lime, linewidth = 3, title="Bottom Line")

//Fast RSI Filter
fastup = rma(max(change(close), 0), 7)
fastdown = rma(-min(change(close), 0), 7)
rsi = fastdown == 0 ? 100 : fastup == 0 ? 0 : 100 - (100 / (1 + fastup / fastdown))
rsif = rsi < 30 or usersi == false

//Body Filter
nbody = abs(close - open)
abody = sma(nbody, 10)
body = nbody > abody / 2 or usebod == false

//Signals
up1 = low < lower and (close < open or usecol == false) and body and rsif
exit = close > open and nbody > abody / 2

//Arrows
needar = up1 and showar
plotarrow(needar ? 1 : na)

//Trading
lot = strategy.position_size == 0 ? strategy.equity / close * capital / 100 : lot[1]

if up1
    if strategy.position_size < 0
        strategy.close_all()
        
    strategy.entry("Long", strategy.long, lot, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
    
if time > timestamp(toyear, tomonth, today, 23, 59) or exit
    strategy.close_all()

더 많은