이 전략은 가격 반전 지점을 식별하기 위해 향상된 볼링거 밴드 지표를 사용하며, 가격이 하위 지대에 접근 할 때 길게 이동하고 녹색 촛불이 나타나면 포지션을 닫습니다. 하위 지대에서 평균 반전을 포착하는 것을 목표로합니다.
표준 BB 매개 변수 기본, dev, 상부 BB 및 하부 BB를 계산합니다.
SMA와 오차 대역 upex2와 dnex2를 SMA의 특정 비율로 계산합니다.
UPEX2, dnex2의 평균을 상부BB, 하부BB와 함께 취해서 UPEX3와 dnex3를 얻습니다.
더 큰 upex3와 상부 BB를 새로운 상부 밴드 upex로, 더 작은 dnex3와 하부 BB를 새로운 하부 밴드 dnex로 가져가십시오.
가격이 dnex 아래로 내려갈 때 긴 지점, 녹색 촛불이 나타나면 닫습니다 (폐기 > 오픈).
강화된 BB는 이전 반전 신호에 대한 원래 BB의 감수성을 향상시킵니다.
촛불 패턴으로 빗자루를 필터합니다.
백테스트는 2008~2018년 동안 안정적인 수익성을 보여주고 있으며, 매끄러운 곡선, 최대 DD < 20%입니다.
설정 가능한 레버리지, 위험 통제를 위한 거래 시간
BB 매개 변수 조정이 제대로 되지 않으면 거래가 너무 많거나 기회를 놓칠 수 있습니다.
장기간만, 트렌드 반전에서 이익을 얻을 수 없습니다.
촛불 필터는 지연될 수 있습니다.
10년 후의 백테스트 데이터는 견고성을 테스트하기에 충분하지 않습니다.
큰 틈이나 개척 점프에 적응하지 못해
BB 설정을 최적화하기 위해 매개 변수 조합을 테스트합니다.
수익성을 높이기 위해 다른 신호 필터를 추가합니다.
가격이 상위 범위를 초과할 때 짧은 거래를 고려하십시오.
단일 거래 손실을 제한하기 위해 Stop Loss를 설정합니다.
변화하는 시장에 따라 자동 튜닝을 개발합니다.
공백과 점프에 대한 출입 규칙을 최적화하십시오.
역 테스트 기간을 테스트 매개 변수로 확장합니다.
이 전략은 향상된 BB와 반전 지점을 식별하고 빠른 수익을 얻기 위해 촛불 필터와 함께 낮은 밴드 근처에 오래 걸립니다. 백테스트 성능은 좋습니다. 그러나 길지만 제한된 샘플, 파라마 튜닝이 필요합니다. 시장이 변할 때 인하에 직면 할 수 있습니다. 다음 단계는 승률을 높이기 위해 신호를 확인하고, 짧은 거래, 안정성을 향상시키기 위해 더 긴 백테스트입니다.
/*backtest start: 2022-09-14 00:00:00 end: 2023-09-20 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //Noro //2018 //@version=2 strategy(title = "Noro's Advanced Bollinger Bands Strategy v1.0", shorttitle = "ABB str 1.0", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 5) //Settings needlong = input(true, defval = true, title = "Long") needshort = input(false, defval = false, title = "Short") capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Capital, %") p = input(20, "bars") d = input(25, "percent") showlines = input(true, defval = true, title = "Show Lines?") 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") mult = input(2.0, minval=0.001, maxval=50) basis = sma(close, p) dev = mult * stdev(close, p) source = close upperBB = basis + dev lowerBB = basis - dev b1 = plot(basis, color=gray, linewidth=1) p1 = plot(upperBB, color=aqua, linewidth=1) p2 = plot(lowerBB, color=aqua, linewidth=1) //SMAs sma = sma(close, p) upex2 = sma * ((100 + d) / 100) dnex2 = sma * ((100 - d) / 100) upex3 = (upex2 + upperBB) / 2 dnex3 = (dnex2 + lowerBB) / 2 upex = max(upperBB, upex3) dnex = min(lowerBB, dnex3) //exit = (high > sma and low < sma) exit = close > open //Lines col = showlines ? blue : na plot(upex, linewidth = 3, color = col, transp = 0) plot(sma, linewidth = 3, color = col, transp = 0) plot(dnex, linewidth = 3, color = col, transp = 0) //Trading lot = strategy.position_size != strategy.position_size[1] ? strategy.equity / close * capital / 100 : lot[1] if (not na(close[p])) strategy.entry("Long", strategy.long, needlong == false ? 0 : lot, limit = dnex) strategy.entry("Short", strategy.short, needshort == false ? 0 : lot, limit = upex) if exit strategy.close_all()