Chiến lược này là một hệ thống giao dịch toàn diện dựa trên Bollinger Bands, chỉ số RSI và đường trung bình động. Nó xác định các cơ hội giao dịch tiềm năng thông qua phạm vi biến động giá Bollinger Bands, mức mua quá mức / bán quá mức RSI và lọc xu hướng EMA. Hệ thống hỗ trợ cả giao dịch dài và ngắn và cung cấp nhiều cơ chế thoát để bảo vệ vốn.
Chiến lược dựa trên các thành phần cốt lõi sau:
Đây là một chiến lược giao dịch định lượng được thiết kế tốt, nắm bắt các cơ hội thị trường thông qua nhiều chỉ số kỹ thuật. Chiến lược này có thể cấu hình được và có thể thích nghi với các nhu cầu giao dịch khác nhau. Mặc dù có một số rủi ro vốn có, sự ổn định và độ tin cậy của nó có thể được tăng thêm thông qua tối ưu hóa tham số và các chỉ số phụ trợ bổ sung. Đối với các nhà đầu tư tìm kiếm các phương pháp giao dịch có hệ thống, đây là một khuôn khổ chiến lược đáng xem xét.
/*backtest start: 2019-12-23 08:00:00 end: 2024-11-11 00:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Bollinger Bands Scalp Pro", overlay=true) // Inputs for the strategy length = input(20, title="Bollinger Band Length") src = input(close, title="Source") mult = input(1.8, title="Bollinger Band Multiplier") rsiLength = input(7, title="RSI Length") rsiOverbought = input(75, title="RSI Overbought Level") rsiOversold = input(25, title="RSI Oversold Level") // Custom RSI exit points rsiExitLong = input(75, title="RSI Exit for Long (Overbought)") rsiExitShort = input(25, title="RSI Exit for Short (Oversold)") // Moving Average Inputs emaLength = input(500, title="EMA Length") enableEMAFilter = input.bool(true, title="Enable EMA Filter") // Exit method: Choose between 'RSI' and 'Bollinger Bands' exitMethod = input.string("RSI", title="Exit Method", options=["RSI", "Bollinger Bands"]) // Enable/Disable Long and Short trades enableLong = input.bool(true, title="Enable Long Trades") enableShort = input.bool(false, title="Enable Short Trades") // Enable/Disable Stop Loss enableStopLoss = input.bool(false, title="Enable Stop Loss") stopLossPercent = input.float(1.0, title="Stop Loss Percentage (%)", minval=0.1) / 100 // Bollinger Bands calculation basis = ta.sma(src, length) dev = mult * ta.stdev(src, length) upperBB = basis + dev lowerBB = basis - dev // RSI calculation rsi = ta.rsi(src, rsiLength) // 200 EMA to filter trades (calculated but only used if enabled) ema200 = ta.ema(src, emaLength) // Long condition: RSI below oversold, price closes below the lower Bollinger Band, and optionally price is above the 200 EMA longCondition = enableLong and (rsi < rsiOversold) and (close < lowerBB) and (not enableEMAFilter or close > ema200) if (longCondition) strategy.entry("Long", strategy.long) // Short condition: RSI above overbought, price closes above the upper Bollinger Band, and optionally price is below the 200 EMA shortCondition = enableShort and (rsi > rsiOverbought) and (close > upperBB) and (not enableEMAFilter or close < ema200) if (shortCondition) strategy.entry("Short", strategy.short) // Stop Loss setup if (enableStopLoss) strategy.exit("Long Exit", "Long", stop = strategy.position_avg_price * (1 - stopLossPercent)) strategy.exit("Short Exit", "Short", stop = strategy.position_avg_price * (1 + stopLossPercent)) // Exit conditions based on the user's choice of exit method if (exitMethod == "RSI") // Exit based on RSI exitLongCondition = rsi >= rsiExitLong if (exitLongCondition) strategy.close("Long") exitShortCondition = rsi <= rsiExitShort if (exitShortCondition) strategy.close("Short") else if (exitMethod == "Bollinger Bands") // Exit based on Bollinger Bands exitLongConditionBB = close >= upperBB if (exitLongConditionBB) strategy.close("Long") exitShortConditionBB = close <= lowerBB if (exitShortConditionBB) strategy.close("Short")