이 전략은 거래 신호를 생성하기 위해 볼링거 밴드 및 RSI 지표를 결합합니다. 세 개의 촛불의 폐쇄 가격이 동시에 상위 또는 하위 대역을 뚫는지 모니터링하고, 거래 신호를 확인하기 위해 소용돌이 지표와 RSI 지표를 결합합니다.
이 전략은 주로 다음과 같은 원칙에 기초합니다.
이 전략의 주요 장점은 다음과 같습니다.
이 전략은 또한 몇 가지 위험을 안고 있습니다.
위험 관리 조치에는 다음이 포함됩니다.
이 전략은 다음과 같은 측면에서 최적화 될 수 있습니다.
이 전략은 판단을 위해 여러 지표를 결합합니다. 신호 신뢰성을 보장하는 동시에 몇 가지 문제도 있습니다. 매개 변수 최적화, 풍부한 신호 소스, 조정 된 판단 논리 및 스톱 로스 등을 통해 전략의 안정성과 수익성이 더욱 향상 될 수 있습니다. 양적 거래에 좋은 아이디어를 제공합니다.
/*backtest start: 2024-01-01 00:00:00 end: 2024-01-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © Noway0utstorm //@version=5 strategy(title='RSI + BB over 3 bar+--- vortex0.71.3 ', shorttitle='NoWaytruongphuthinh', format=format.price, precision=4,overlay = true) length = input(20, title="Length") mult = input(2.0, title="Multiplier") source = close basis = ta.sma(source, length) dev = mult * ta.stdev(source, length) upperBand = basis + dev lowerBand = basis - dev isClosedBar = ta.change(time("15")) var bool closeAboveUpperBand = false var bool closeBelowLowerBand = false // Vortex Indicator Settings period_ = input.int(14, title='Period', minval=2) VMP = math.sum(math.abs(high - low[1]), period_) VMM = math.sum(math.abs(low - high[1]), period_) STR = math.sum(ta.atr(1), period_) VIP = VMP / STR VIM = VMM / STR // lengthrsi = input(14, title="RSI Length") overboughtLevel = input(70, title="Overbought Level") oversoldLevel = input(30, title="Oversold Level") sourcersi = close rsiValue = ta.rsi(sourcersi, lengthrsi) shouldShort = rsiValue > overboughtLevel shouldLong = rsiValue < oversoldLevel if bool(isClosedBar[1]) and bool(isClosedBar[2]) and bool(isClosedBar[3]) if close[1] > upperBand[1] and close[2] > upperBand[2] and close[3] > upperBand[3] and VIP > 1.25 and VIM < 0.7 and rsiValue > overboughtLevel strategy.entry("Short", strategy.short) closeAboveUpperBand := false // Reset the condition when entering a new Short position if close[1] < lowerBand[1] and close[2] < lowerBand[2] and close[3] < lowerBand[3] and VIP < 0.7 and VIM > 1.25 and rsiValue < oversoldLevel strategy.entry("Long", strategy.long) closeBelowLowerBand := false // Reset the condition when entering a new Long position if strategy.position_size > 0 // Check if there is an open Long position closeAboveUpperBand := close > upperBand // Update the condition based on close price if closeAboveUpperBand strategy.close("Long",disable_alert=true) // Close the Long position if close price is above upper band if strategy.position_size < 0 // Check if there is an open Short position closeBelowLowerBand := close < lowerBand // Update the condition based on close price if closeBelowLowerBand strategy.close("Short",disable_alert=true) // Close the Short position if close price is below lower band // Plots plot(basis, color=color.orange, title="Basis") p1 = plot(upperBand, color=color.blue, title="Upper Band") p2 = plot(lowerBand, color=color.blue, title="Lower Band") fill(p1, p2, title = "Background", color=color.rgb(33, 150, 243, 95))