
Chiến lược này là một hệ thống giao dịch dựa trên chỉ số RSI2 kết hợp với đường trung bình di chuyển. Nó chủ yếu là bằng cách theo dõi các tín hiệu đảo ngược của chỉ số RSI trong khu vực bán tháo để bắt được cơ hội giao dịch tiềm năng, đồng thời kết hợp đường trung bình di chuyển như một bộ lọc xu hướng để tăng độ chính xác của giao dịch.
Logic cốt lõi của chiến lược bao gồm các yếu tố chính sau:
Đây là một chiến lược giao dịch có cấu trúc, logic rõ ràng, để nắm bắt cơ hội thị trường thông qua RSI oversold tín hiệu đảo ngược kết hợp với lọc xu hướng đường bằng. Ưu điểm của chiến lược là các tham số linh hoạt, kiểm soát gió hợp lý, nhưng vẫn cần lưu ý đến các vấn đề về rủi ro đột phá giả và nhạy cảm tham số. Với hướng tối ưu hóa được đề xuất, chiến lược vẫn còn nhiều chỗ cải thiện, có thể cải thiện hơn nữa khả năng thích ứng của nó trong các môi trường thị trường khác nhau.
/*backtest
start: 2024-02-21 00:00:00
end: 2025-02-18 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
*/
//@version=6
strategy("RSI 2 Strategy with Fixed Lines and Moving Average Filter", overlay=true)
// Input parameters
rsiPeriod = input.int(2, title="RSI Period", minval=1)
rsiBuyLevel = input.float(25, title="RSI Buy Level", minval=0, maxval=100)
maxBarsToHold = input.int(5, title="Max Candles to Hold", minval=1)
maPeriod = input.int(50, title="Moving Average Period", minval=1) // Moving Average Period
useMAFilter = input.bool(true, title="Use Moving Average Filter") // Enable/Disable MA Filter
// RSI and Moving Average calculation
rsi = ta.rsi(close, rsiPeriod)
ma = ta.sma(close, maPeriod)
// Moving Average filter conditions
maFilterCondition = useMAFilter ? close > ma : true // Condition: price above MA
// Buy conditions
rsiIncreasing = rsi > rsi[1] // Current RSI greater than previous RSI
buyCondition = rsi[1] < rsiBuyLevel and rsiIncreasing and strategy.position_size == 0 and maFilterCondition
// Variables for management
var int barsHeld = na // Counter for candles after purchase
var float buyPrice = na // Purchase price
// Buy action
if buyCondition and na(barsHeld)
strategy.entry("Buy", strategy.long)
barsHeld := 0
buyPrice := close
// Increment the candle counter after purchase
if not na(barsHeld)
barsHeld += 1
// Sell condition after the configured number of candles
sellCondition = barsHeld >= maxBarsToHold
if sellCondition
strategy.close("Buy")
// Reset variables after selling
barsHeld := na
buyPrice := na