Chiến lược này kết hợp phương pháp đảo ngược trung bình và theo xu hướng, sử dụng các chỉ số kỹ thuật MA, MACD và ATR để tạo ra các tín hiệu giao dịch và kiểm soát rủi ro.
Chiến lược sử dụng một cơ chế xác minh ba lần:
Chiến lược này đạt được một hệ thống giao dịch tương đối mạnh mẽ bằng cách kết hợp phương pháp đảo ngược trung bình và theo xu hướng. Cơ chế xác minh nhiều chỉ số tăng độ tin cậy tín hiệu giao dịch, trong khi ATR stop-loss động có hiệu quả kiểm soát rủi ro. Mặc dù có một số không gian tối ưu hóa, nó đại diện cho một khuôn khổ chiến lược hợp lý và thực tế.
/*backtest start: 2024-10-01 00:00:00 end: 2024-10-31 23:59:59 period: 3h basePeriod: 3h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Mean Reversion Strategy with ATR, MACD and MA", overlay=true) // === Настройки для индикаторов === // Параметры скользящей средней (MA) maLength = input.int(30, title="Период скользящей средней (MA)") maType = input.string("EMA", title="Тип скользящей средней", options=["SMA", "EMA"]) // Параметры ATR atrLength = input.int(10, title="Период ATR") atrMultiplier = input.float(10, title="ATR множитель для стоп-лосса") // Параметры MACD macdFastLength = input.int(8, title="Период быстрой EMA для MACD") macdSlowLength = input.int(26, title="Период медленной EMA для MACD") macdSignalLength = input.int(5, title="Период сигнальной линии MACD") // === Рассчёт индикаторов === // Скользящая средняя ma = if maType == "SMA" ta.sma(close, maLength) else ta.ema(close, maLength) // ATR (Средний истинный диапазон) atr = ta.atr(atrLength) // MACD [macdLine, signalLine, _] = ta.macd(close, macdFastLength, macdSlowLength, macdSignalLength) // Условия для входа на покупку и продажу longCondition = ta.crossover(macdLine, signalLine) and close < ma shortCondition = ta.crossunder(macdLine, signalLine) and close > ma // === Управление позициями === if (longCondition) strategy.entry("Buy", strategy.long) // Стоп-лосс на основе ATR stopLossLevel = close - atr * atrMultiplier strategy.exit("Take Profit/Stop Loss", "Buy", stop=stopLossLevel) if (shortCondition) strategy.entry("Sell", strategy.short) // Стоп-лосс на основе ATR stopLossLevel = close + atr * atrMultiplier strategy.exit("Take Profit/Stop Loss", "Sell", stop=stopLossLevel) // Визуализация plot(ma, title="MA", color=color.blue, linewidth=2) plot(macdLine, title="MACD Line", color=color.green) plot(signalLine, title="Signal Line", color=color.red) hline(0, "Zero Line", color=color.gray)