이 전략은 거래 신호를 생성하고 위험을 제어하기 위해 MA, MACD 및 ATR 기술 지표를 활용하여 평균 회귀와 트렌드 다음 접근 방식을 결합합니다. 핵심 개념은 가격이 MACD 크로스오버 신호에 의해 확인된 이동 평균에서 벗어날 때 시장 반전을 포착하는 동시에 위험 관리에 ATR 기반의 동적 스톱 로스를 구현하는 것입니다.
이 전략은 세 가지 검증 메커니즘을 사용합니다.
이 전략은 평균 회귀와 트렌드 다음 접근 방식을 결합하여 비교적 견고한 거래 시스템을 달성합니다. 다중 지표 검증 메커니즘은 거래 신호 신뢰성을 향상시키며, ATR 동적 스톱 로스는 위험을 효과적으로 제어합니다. 최적화 할 수있는 여지가 있음에도 불구하고 논리적으로 건전하고 실용적인 전략 프레임워크를 나타냅니다.
/*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)