이 전략은 트렌드 추적 및 모멘텀 분석 방법을 결합하여 잠재적 인 거래 기회를 식별하기 위해 간단한 이동 평균 (SMA) 및 이동 평균 컨버전스 디버전스 (MACD) 지표를 활용합니다. 이 전략은 전체 시장 트렌드를 결정하기 위해 트렌디로 지표 (SMA에 기반한 트렌드 지표) 를 사용하며, 단기적인 모멘텀 변화를 캡처하기 위해 MACD 제로 라인 크로스오버를 사용합니다. 또한 이 전략은 시장 변동성의 변화에 적응하여 동적으로 스톱 로스 및 영리 수준을 설정하기 위해 평균 참 범위 (ATR) 를 통합합니다.
전략의 핵심 논리는 다음의 핵심 요소에 기초합니다.
특히, 긴 신호는 MACD 라인이 0을 넘어서고 폐쇄 가격은 트렌디로 라인의 위에 있을 때 발생한다. 반대로, 짧은 신호는 MACD 라인이 0을 넘어서고 종료 가격은 트렌디로 라인의 아래에 있을 때 발생한다. 진입 후, 전략은 ATR 기반의 스톱 로스 및 영업 수준을 사용하여 위험을 관리하고 수익을 잠금한다.
이 전략은 트렌드 추적 및 모멘텀 분석을 현명하게 결합하여 트렌디로와 MACD의 시너지 효과를 통해 거래자에게 비교적 포괄적인 시장 분석 프레임워크를 제공합니다. 동적 리스크 관리 접근 방식은 전략의 적응력을 향상시켜 다른 시장 환경에서 안정성을 유지할 수 있습니다. 그러나 거래자는 특히 매개 변수 최적화 및 리스크 제어 측면에서이 전략을 사용할 때 여전히 주의를 기울여야합니다. 지속적인 모니터링 및 최적화로 인해이 전략은 신뢰할 수있는 거래 도구가 될 가능성이 있으며 특히 트렌딩 시장에서 기회를 포착하려는 투자자에게 적합합니다.
/*backtest start: 2019-12-23 08:00:00 end: 2024-09-24 08:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("NNFX Trendilo + Zero MACD Strategy", overlay=true) // --- Inputs --- atrPeriod = input.int(14, title="ATR Period") stopLossMultiplier = input.float(1.5, minval=0.0, maxval = 20.0, step = 0.1 ,title="Stop Loss Multiplier") takeProfitMultiplier = input.float(2.0, minval=0.0 , maxval = 20.0, step = 0.1,title="Take Profit Multiplier") // --- Trendilo --- trendiloPeriod = input.int(50, title="Trendilo Period") trendilo = ta.sma(close, trendiloPeriod) // --- MACD --- [macdLine, signalLine, _] = ta.macd(close, 12, 26, 9) macdZeroCrossUp = ta.crossover(macdLine, 0) macdZeroCrossDown = ta.crossunder(macdLine, 0) // --- ATR for Stop Loss and Take Profit --- atr = ta.atr(atrPeriod) stopLoss = atr * stopLossMultiplier takeProfit = atr * takeProfitMultiplier // --- Trading Logic --- longCondition = macdZeroCrossUp and close > trendilo shortCondition = macdZeroCrossDown and close < trendilo // --- Execute Long Trades --- if (longCondition) strategy.entry("Buy", strategy.long) strategy.exit("Take Profit/Stop Loss", "Buy", limit=close + takeProfit, stop=close - stopLoss) // --- Execute Short Trades --- if (shortCondition) strategy.entry("Sell", strategy.short) strategy.exit("Take Profit/Stop Loss", "Sell", limit=close - takeProfit, stop=close + stopLoss) // --- Plot Signals --- plotshape(series=longCondition, location=location.belowbar, color=color.green, style=shape.labelup, text="Buy") plotshape(series=shortCondition, location=location.abovebar, color=color.red, style=shape.labeldown, text="Sell") // --- Plot Trendilo --- plot(trendilo, color=color.blue, linewidth=2)