Chiến lược này là một hệ thống giao dịch toàn diện kết hợp nhiều chỉ số kỹ thuật cổ điển, bao gồm Moving Average (MA), Relative Strength Index (RSI), Moving Average Convergence Divergence (MACD) và Bollinger Bands (BB). Thông qua sự phối hợp của các chỉ số này, hệ thống tìm kiếm các tín hiệu mua / bán chính xác hơn trên thị trường để cải thiện tỷ lệ thành công giao dịch.
Chiến lược sử dụng một cơ chế xác minh tín hiệu nhiều lớp, bao gồm:
Hệ thống tạo ra các tín hiệu giao dịch dưới các điều kiện sau:
Đây là một hệ thống chiến lược giao dịch đa chiều được thiết kế tốt cung cấp tín hiệu giao dịch thông qua sự phối hợp của nhiều chỉ số kỹ thuật. Những lợi thế chính của chiến lược nằm trong khuôn khổ phân tích toàn diện và cơ chế xác nhận tín hiệu nghiêm ngặt, trong khi cần chú ý đến tối ưu hóa tham số và khả năng thích nghi với môi trường thị trường. Thông qua các hướng tối ưu hóa được đề xuất, chiến lược này có nhiều chỗ để cải thiện.
/*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")