이 전략은 이동 평균 (MA), 상대적 강도 지수 (RSI), 이동 평균 컨버전스 디버전스 (MACD), 볼링거 밴드 (BB) 를 포함한 여러 가지 고전적인 기술 지표를 결합한 포괄적인 거래 시스템입니다. 이러한 지표의 조정을 통해 시스템은 거래 성공률을 향상시키기 위해 시장에서 더 정확한 구매/판매 신호를 찾습니다.
이 전략은 다음과 같은 다층 신호 확인 메커니즘을 사용합니다.
이 시스템은 다음과 같은 조건에서 거래 신호를 생성합니다.
이것은 여러 가지 기술적 지표의 시너지를 통해 거래 신호를 제공하는 잘 설계된 다차원 거래 전략 시스템입니다. 전략의 주요 장점은 포괄적인 분석 프레임워크와 엄격한 신호 확인 메커니즘에 있으며 매개 변수 최적화 및 시장 환경 적응성에주의를 기울여야합니다. 제안된 최적화 방향을 통해이 전략은 개선할 수있는 상당한 여지가 있습니다.
/*backtest start: 2019-12-23 08:00:00 end: 2024-12-25 08:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Ultimate Buy/Sell Indicator", overlay=true) // Inputs for Moving Averages shortMaLength = input.int(9, title="Short MA Length", minval=1) longMaLength = input.int(21, title="Long MA Length", minval=1) // Inputs for RSI rsiLength = input.int(14, title="RSI Length", minval=1) rsiOverbought = input.int(70, title="RSI Overbought Level", minval=1, maxval=100) rsiOversold = input.int(30, title="RSI Oversold Level", minval=1, maxval=100) // Inputs for MACD macdShortLength = input.int(12, title="MACD Short EMA Length", minval=1) macdLongLength = input.int(26, title="MACD Long EMA Length", minval=1) macdSignalSmoothing = input.int(9, title="MACD Signal Smoothing", minval=1) // Inputs for Bollinger Bands bbLength = input.int(20, title="Bollinger Bands Length", minval=1) bbMultiplier = input.float(2.0, title="Bollinger Bands Multiplier", minval=0.1) // Calculate Moving Averages shortMa = ta.sma(close, shortMaLength) longMa = ta.sma(close, longMaLength) // Calculate RSI rsi = ta.rsi(close, rsiLength) // Calculate MACD [macdLine, signalLine, _] = ta.macd(close, macdShortLength, macdLongLength, macdSignalSmoothing) macdHist = macdLine - signalLine // Calculate Bollinger Bands [bbUpper, bbBasis, bbLower] = ta.bb(close, bbLength, bbMultiplier) // Define colors colorPrimary = color.new(color.green, 0) colorSecondary = color.new(color.red, 0) colorBackgroundBuy = color.new(color.green, 80) colorBackgroundSell = color.new(color.red, 80) colorTextBuy = color.new(color.green, 0) colorTextSell = color.new(color.red, 0) // Plot Moving Averages plot(shortMa, color=colorPrimary, linewidth=2, title="Short MA") plot(longMa, color=colorSecondary, linewidth=2, title="Long MA") // Plot Bollinger Bands bbUpperLine = plot(bbUpper, color=colorPrimary, linewidth=1, title="Bollinger Bands Upper") bbLowerLine = plot(bbLower, color=colorPrimary, linewidth=1, title="Bollinger Bands Lower") fill(bbUpperLine, bbLowerLine, color=color.new(colorPrimary, 90)) // Buy/Sell Conditions based on MA cross buySignal = ta.crossover(shortMa, longMa) sellSignal = ta.crossunder(shortMa, longMa) // Execute Buy/Sell Orders if buySignal strategy.entry("Buy", strategy.long, 1) strategy.close("Sell", qty_percent=1) // Close all positions when selling if sellSignal strategy.close("Sell", qty_percent=1) // Close all positions when selling strategy.close("Buy") // Close any remaining buy positions // Plot Buy/Sell Signals for MA crossovers plotshape(series=buySignal, location=location.belowbar, color=colorTextBuy, style=shape.triangleup, size=size.small, title="Buy Signal") plotshape(series=sellSignal, location=location.abovebar, color=colorTextSell, style=shape.triangledown, size=size.small, title="Sell Signal") // Background Color based on Buy/Sell Signal for MA crossovers bgcolor(buySignal ? colorBackgroundBuy : na, title="Buy Signal Background") bgcolor(sellSignal ? colorBackgroundSell : na, title="Sell Signal Background") // Plot RSI with Overbought/Oversold Levels hline(rsiOverbought, "Overbought", color=colorSecondary, linestyle=hline.style_dashed, linewidth=1) hline(rsiOversold, "Oversold", color=colorPrimary, linestyle=hline.style_dashed, linewidth=1) plot(rsi, color=colorPrimary, linewidth=2, title="RSI") // Plot MACD Histogram plot(macdHist, color=colorPrimary, style=plot.style_histogram, title="MACD Histogram", linewidth=2) hline(0, "Zero Line", color=color.new(color.gray, 80)) // Additional Buy/Sell Conditions based on RSI, MACD, and Bollinger Bands additionalBuySignal = rsi < rsiOversold and macdHist > 0 and close < bbLower additionalSellSignal = rsi > rsiOverbought and macdHist < 0 and close > bbUpper // Plot Additional Buy/Sell Signals plotshape(series=additionalBuySignal and not buySignal, location=location.belowbar, color=colorTextBuy, style=shape.triangleup, size=size.small, title="Additional Buy Signal") plotshape(series=additionalSellSignal and not sellSignal, location=location.abovebar, color=colorTextSell, style=shape.triangledown, size=size.small, title="Additional Sell Signal") // Background Color based on Additional Buy/Sell Signal bgcolor(additionalBuySignal and not buySignal ? colorBackgroundBuy : na, title="Additional Buy Signal Background") bgcolor(additionalSellSignal and not sellSignal ? colorBackgroundSell : na, title="Additional Sell Signal Background")