
이 전략의 명칭은 기반이동반환을기반한볼린저량화전략이다. 이 전략은 볼린저반환을기반한 볼린저반환을기반한 볼린저반환을기반한 볼린저반환을기반한 볼린저반환을기반한 볼린저반환을기반한 볼린저량화전략이다. 이 전략은 볼린저반환을기반한 볼린저반환을기반한 볼린저반환을기반한 볼린저반환을기반한 볼린저반환을기반한 볼린저반환을기반한 볼린저량화전략이다. 이 전략은 볼린저반환을기반한 볼린저반환을기반한 볼린저반환을기반한 볼린저반환을기반한 볼린저반환을기반한 볼린저반환을기반한 볼린저반환을기반한 볼린저반환을기반한 볼린저반환을기반한 볼린저반환을기반한
이 전략은 RSI 지표를 사용하여 구매 시간을 판단한다. 구체적으로, 그것은 최근 한 바의 종료 가격이 이전 6 바의 최저 가격보다 낮은지를 판단한다. meantime 부린 대역폭 (BBW) 은 설정된 경량보다 크며, 부린 대역비율 (BBR) 은 설정된 범위 내에 있다.
출구 (Exit) 는 RSI가 70보다 높을 때 주가가 너무 뜨거워서 평점으로 팔 수 있다는 것을 나타냅니다.
이 전략의 가장 큰 장점은 Bollinger Band의 상하 궤도를 이용해서 판단하는 데 있습니다. 부린 밴드가 반전될 때, 구매하고 판매하여 단기 반전 기회를 잡을 수 있습니다. 간단한 RSI 전략에 비해 이 전략은 구매 시기를 판단하는 데 더 엄격하며, 잘못된 거래의 가능성을 피할 수 있습니다.
또한, 이 전략은 파라미터에 민감하여, BBW, BBR의 파라미터를 조정하여, 다른 품종에 대해 최적화하여 더 나은 효과를 얻을 수 있다.
이 전략의 주요 위험은 브린띠가 100%의 가격 반전을 예측할 수 없다는 점이며, 타이밍이 적절하지 않은 경우, 최적의 구매 시기를 놓친 상황이나 가상의 손실이 발생할 수 있습니다.
또한, 주식 가격의 단기 변동은 전략의 빈번한 포지션 개시와 포지션을 초래할 수 있으며, 거래 비용과 슬라이드 비용을 증가시킬 수 있다. 역전력이 충분하지 않으면 손실된 평준화 포지션의 위험에 직면할 수 있다.
이 전략은 다음과 같은 부분에서 최적화될 수 있습니다.
최적화 매개 변수. BBW, BBR 등의 매개 변수를 보다 정교한 방법으로 테스트하고 최적화할 수 있으며, 다양한 거래 품종에 대해 최적의 매개 변수를 선택할 수 있다.
손실을 증가시키는 메커니즘. 최대 손실을 제어하기 위해 이동 상쇄 또는 시간 상쇄를 설정할 수 있습니다.
다른 지표와 결합. KDJ, MACD 등의 다른 지표와 결합하여 구매 신호를 더 정확하고 신뢰할 수 있습니다.
최적화 탈퇴 메커니즘. 현재 탈퇴 메커니즘은 더 간단하며, 적절한 이동 스톱을 설정하거나, 변동 상황에 따라 탈퇴하는 등의 최적화를 할 수 있다.
이 전략은 볼링거 띠의 특성을 활용하여 가격이 반전될 수 있는 시간을 판단하여 구매 및 판매한다. 단일 RSI와 같은 지표에 비해 이 전략은 타이밍을 판단하는 것이 더 정확하다. 파라미터를 최적화하고 중지, 손실을 설정함으로써 전략을 더 신뢰할 수 있다. 그러나 볼링거 띠는 완벽하지 않으며, 따라서 전략의 실현 효과에는 약간의 무작위성이 있다.
/*backtest
start: 2022-11-15 00:00:00
end: 2023-11-21 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
//study(title = "Bolinger strategy", overlay=true)
strategy("Bolinger strategy",currency="SEK",default_qty_value=10000,default_qty_type=strategy.cash,max_bars_back=50)
len = 5
src = close
up = rma(max(change(src), 0), len)
down = rma(-min(change(src), 0), len)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))
bbw3level = input(15, title="bbw3")
bbr3level = input(0.45, title="bbr3level")
bbrlower = input(0.4480, title="bbrlower")
bbrhigher = input(0.4560, title="bbrhigher")
sincelowestmin = input(7, title="sincelowestmin")
sincelowestmax = input(57, title="sincelowestmax")
length = input(20, minval=1)
mult = 20
src3 = close[3]
basis3 = sma(src3, length)
dev3 = mult * stdev(src3, length)
upper3 = basis3 + dev3
lower3 = basis3 - dev3
bbr3 = (src3 - lower3)/(upper3 - lower3)
bbw3 = (upper3-lower3)/basis3*100
basis = sma(src, length)
dev = mult * stdev(src, length)
upper = basis + dev
lower = basis - dev
bbr = (src - lower)/(upper - lower)
bbw = (upper-lower)/basis*100
criteriamet = 0
crossUnderB0 = crossunder(bbr,0)
since_x_under = barssince(crossUnderB0)
sincelowest = barssince(close[6] > close[3] and close[5] > close[3] and close[4] > close[3] and close[2] > close[3] and close[1] > close[3] and close > close[3] and bbw3 > bbw3level and bbr3 < bbr3level) // and bbr3 < 0
if sincelowest > sincelowestmin and sincelowest < sincelowestmax and bbr > bbrlower and bbr < bbrhigher
criteriamet := 1
else
criteriamet := 0
//plot (criteriamet)
//exit
exitmet = 0
if rsi > 70
exitmet := 1
else
exitmet := 0
if criteriamet == 1
strategy.entry("long", strategy.long)
if exitmet == 1
strategy.close("long")