이 전략은 BB 퍼센트 지표와 RSI 및 MFI 지표가 결합되어 있습니다. RSI 과잉 판매/대량 구매 신호와 MFI 과잉 판매/대량 구매 신호와 함께 볼링거 밴드 상부 및 하부 레일의 가격 브레이크를 탐지하여 장기 및 단기 결정을 내립니다. 이는 전형적인 트렌드 희미화 거래 전략입니다.
이 전략은 주로 높은 변동성 비 트렌딩 도구에 적용된다. 볼링거 채널과 지표 조합을 통해 트렌드 퇴색 거래를 구현한다. 위험 수익 특성은 매개 변수를 조정함으로써 제어 할 수 있다. 더 많은 보조 지표와 모델을 도입하여 의사 결정 품질을 최적화하여 더 나은 전략 성능을 달성함으로써 추가 개선이 가능하다.
/*backtest start: 2023-11-05 00:00:00 end: 2023-12-05 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //Noro //2018 //@version=2 strategy(title = "BB%/MFI/RSI", shorttitle = "BB%/MFI/RSI", default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 100) //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 = "Lot, %") 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") source = hlc3 length = input(14, minval=1), mult = input(2.0, minval=0.001, maxval=50), bblength = input(50, minval=1, title="BB Period") DrawRSI_f=input(true, title="Draw RSI?", type=bool) DrawMFI_f=input(false, title="Draw MFI?", type=bool) HighlightBreaches=input(true, title="Highlight Oversold/Overbought?", type=bool) DrawMFI = (not DrawMFI_f) and (not DrawRSI_f) ? true : DrawMFI_f DrawRSI = (DrawMFI_f and DrawRSI_f) ? false : DrawRSI_f // RSI rsi_s = DrawRSI ? rsi(source, length) : na plot(DrawRSI ? rsi_s : na, color=maroon, linewidth=2) // MFI upper_s = DrawMFI ? sum(volume * (change(source) <= 0 ? 0 : source), length) : na lower_s = DrawMFI ? sum(volume * (change(source) >= 0 ? 0 : source), length) : na mf = DrawMFI ? rsi(upper_s, lower_s) : na plot(DrawMFI ? mf : na, color=green, linewidth=2) // Draw BB on indices bb_s = DrawRSI ? rsi_s : DrawMFI ? mf : na basis = sma(bb_s, length) dev = mult * stdev(bb_s, bblength) upper = basis + dev lower = basis - dev plot(basis, color=red) p1 = plot(upper, color=blue) p2 = plot(lower, color=blue) fill(p1,p2, blue) b_color = (bb_s > upper) ? red : (bb_s < lower) ? lime : na bgcolor(HighlightBreaches ? b_color : na, transp = 0) //Signals up = bb_s < lower and close < open dn = bb_s > upper and close > open size = strategy.position_size lp = size > 0 and close > open sp = size < 0 and close < open exit = (up == false and dn == false) and (lp or sp) //Trading lot = strategy.position_size == 0 ? strategy.equity / close * capital / 100 : lot[1] if up if strategy.position_size < 0 strategy.close_all() strategy.entry("Long", strategy.long, needlong == false ? 0 : lot, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59))) if dn if strategy.position_size > 0 strategy.close_all() strategy.entry("Short", strategy.short, needshort == false ? 0 : 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()