Chiến lược này là một hệ thống giao dịch định lượng kết hợp các nguyên tắc đảo ngược trung bình với các chỉ số kỹ thuật MACD và ATR. Nó sử dụng Bollinger Bands để xác định độ lệch giá, MACD để xác nhận động lực và ATR để quản lý rủi ro động. Khái niệm cốt lõi là nắm bắt các cơ hội đảo ngược trung bình khi giá hiển thị độ lệch đáng kể, được xác nhận thông qua nhiều chỉ số kỹ thuật.
Chiến lược sử dụng ba chỉ số kỹ thuật hoạt động kết hợp: Thứ nhất, Bollinger Bands xác định độ lệch giá đáng kể; thứ hai, MACD xác nhận đà tăng giá, đảm bảo hướng giao dịch phù hợp với xu hướng thị trường; cuối cùng, ATR thiết lập mức dừng lỗ và lấy lợi nhuận năng động. Cụ thể, các tín hiệu dài được tạo ra khi giá phá vỡ bên dưới Bollinger Band dưới cùng với đường MACD trên đường tín hiệu của nó, trong khi các tín hiệu ngắn xảy ra khi giá phá vỡ bên trên Bollinger Band trên cùng với đường MACD bên dưới đường tín hiệu của nó. ATR điều chỉnh năng động mức dừng lỗ và lấy lợi nhuận dựa trên sự biến động của thị trường.
Chiến lược này kết hợp phân tích kỹ thuật cổ điển với các phương pháp giao dịch định lượng hiện đại. Thông qua việc sử dụng phối hợp nhiều chỉ số, nó duy trì những lợi thế cốt lõi của sự đảo ngược trung bình trong khi vượt qua những hạn chế của chỉ số duy nhất. Chiến lược này có khả năng mở rộng cao, có khả năng cải thiện liên tục thông qua tối ưu hóa tham số và các mô-đun chức năng bổ sung. Trong khi đó, cơ chế kiểm soát rủi ro toàn diện của nó đảm bảo sự ổn định.
/*backtest start: 2024-11-12 00:00:00 end: 2024-12-11 08:00:00 period: 3h basePeriod: 3h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Enhanced Mean Reversion with MACD and ATR", overlay=true) // Nastavenia Bollinger Bands bbLength = input(20, title="Bollinger Bands Length") bbMult = input(2, title="Bollinger Bands Multiplier") basis = ta.sma(close, bbLength) dev = ta.stdev(close, bbLength) upperBand = basis + bbMult * dev lowerBand = basis - bbMult * dev // MACD indikátor macdShort = input(12, title="MACD Short Length") macdLong = input(26, title="MACD Long Length") macdSignal = input(9, title="MACD Signal Length") [macdLine, signalLine, _] = ta.macd(close, macdShort, macdLong, macdSignal) // ATR pre dynamický Stop Loss a Take Profit atrLength = input(14, title="ATR Length") atrMultiplier = input(1.5, title="ATR Multiplier") atrValue = ta.atr(atrLength) // Vstupné podmienky pre long pozície longCondition = ta.crossover(close, lowerBand) and macdLine > signalLine if (longCondition) strategy.entry("Long", strategy.long) // Vstupné podmienky pre short pozície shortCondition = ta.crossunder(close, upperBand) and macdLine < signalLine if (shortCondition) strategy.entry("Short", strategy.short) // Dynamický Stop Loss a Take Profit na základe ATR longSL = strategy.position_avg_price - atrValue * atrMultiplier longTP = strategy.position_avg_price + atrValue * atrMultiplier * 2 shortSL = strategy.position_avg_price + atrValue * atrMultiplier shortTP = strategy.position_avg_price - atrValue * atrMultiplier * 2 // Pridanie stop loss a take profit if (strategy.position_size > 0) strategy.exit("Take Profit/Stop Loss", "Long", stop=longSL, limit=longTP) if (strategy.position_size < 0) strategy.exit("Take Profit/Stop Loss", "Short", stop=shortSL, limit=shortTP) // Vizualizácia Bollinger Bands a MACD plot(upperBand, color=color.red, title="Upper Bollinger Band") plot(lowerBand, color=color.green, title="Lower Bollinger Band") plot(basis, color=color.blue, title="Bollinger Basis") hline(0, "MACD Zero Line", color=color.gray) plot(macdLine - signalLine, color=color.blue, title="MACD Histogram") plot(macdLine, color=color.red, title="MACD Line") plot(signalLine, color=color.green, title="Signal Line") // Generovanie alertov alertcondition(longCondition, title="Long Alert", message="Long Entry Signal") alertcondition(shortCondition, title="Short Alert", message="Short Entry Signal")