이 전략은 MACD 지표 기반의 거래 전략의 개선된 버전이다. 이 전략은 MACD 지표의 트렌드 추종 특성을 추진력 거래의 아이디어와 결합하여 빠른 이동 평균과 느린 이동 평균의 차이를 분석하여 거래 신호를 생성합니다. 한편, 전략은 또한 트렌드 확인, 신호 지연 확인, 고정 비율의 스톱-손실 및 수익을 창출하는 등의 최적화 방법을 도입하여 전략의 안정성과 수익성을 향상시킵니다.
이 전략의 핵심은 빠른 이동 평균 (EMA) 과 느린 이동 평균 (EMA) 사이의 차이로 구성된 MACD 지표입니다. 빠른 EMA가 느린 EMA를 넘을 때 구매 또는 판매 신호를 생성합니다. 구체적으로 MACD 라인이 신호선을 아래에서 위로 뚫을 때 구매 신호를 생성합니다. MACD 라인이 상위에서 아래로 신호 라인의 아래에 떨어지면 판매 신호를 생성합니다.
기본 MACD 크로스오버 신호 외에도 전략은 트렌드 확인 메커니즘을 도입합니다. 현재 시장이 상승 추세인지 하락 추세인지 결정하기 위해 간단한 이동 평균 (SMA) 과 비교합니다. 상승 추세에 구매 신호가 나타나거나 하락 추세에 판매 신호가 나타나면만 거래 작전이 실행됩니다. 이것은 오스실레이션 시장에서 생성되는 잘못된 신호를 효과적으로 피합니다.
또한, 전략은 신호 확인 시간 창을 연장한다. 즉, 현재 촛불이 구매 또는 판매 조건을 만족하고 이전 촛불도 동일한 조건을 만족할 때만 해당 거래가 실행됩니다. 이것은 신호의 신뢰성을 더욱 향상시킵니다.
마지막으로, 전략은 고정 비율의 스톱 로스 및 트레이드 수익 수준을 설정합니다. 거래가 수행되면, 스톱 로스 및 트레이드 수익 가격은 엔트리 가격에 따라 계산되며, 이러한 가격에 도달하면 자동으로 포지션이 종료됩니다. 이것은 단일 거래의 위험과 수익을 제어하는 데 도움이됩니다.
이 전략은 MACD 지표에 기반한 향상된 거래 전략이다. 트렌드 확인, 신호 지연 확인, 고정 스톱 로스 및 영업 영업 및 기타 방법을 통해 전략의 견고성과 수익 잠재력을 향상시킵니다. 그러나 매개 변수 최적화, 트렌드 인식, 단일 지표, 백테스팅 데이터 및 기타 측면에서도 위험에 직면합니다. 앞으로는 다른 지표, 동적 스톱 로스 및 영업 영업, 위치 관리 및 기계 학습을 결합하는 등의 측면에서 전략을 최적화하는 것을 고려하여 실제 응용 효과를 더욱 향상시킬 수 있습니다.
/*backtest start: 2023-05-08 00:00:00 end: 2024-05-13 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © sligetit //@version=5 strategy("Improved MACD_VXI Strategy", overlay=true) // Calculate MACD and Signal Line fastLength = input.int(13, title="Fast Length") slowLength = input.int(21, title="Slow Length") signalLength = input.int(8, title="Signal Length") fastMA = ta.ema(close, fastLength) slowMA = ta.ema(close, slowLength) macd = fastMA - slowMA signal = ta.sma(macd, signalLength) // Plot MACD and Signal Line plot(macd, color=color.red, linewidth=1) plot(signal, color=color.blue, linewidth=2) // Calculate Cross Signals with Trend Confirmation smaPeriod = input.int(50, title="SMA Period") sma = ta.sma(close, smaPeriod) trendUp = close > sma trendDown = close < sma crossOver = ta.crossover(signal, macd) crossUnder = ta.crossunder(signal, macd) buySignal = crossOver and trendUp sellSignal = crossUnder and trendDown // Execute Buy/Sell Operations if buySignal strategy.entry("Buy", strategy.long) if sellSignal strategy.entry("Sell", strategy.short) // Extend Signal Confirmation Time Window longSignal = crossOver[1] and trendUp[1] shortSignal = crossUnder[1] and trendDown[1] if longSignal strategy.entry("Buy", strategy.long) if shortSignal strategy.entry("Sell", strategy.short) // Set Fixed Percentage Stop Loss and Take Profit stopLossPercent = input.float(1, title="Stop Loss (%)") / 100 takeProfitPercent = input.float(2, title="Take Profit (%)") / 100 stopLossPrice = strategy.position_avg_price * (1 - stopLossPercent) takeProfitPrice = strategy.position_avg_price * (1 + takeProfitPercent) strategy.exit("Stop Loss/Profit", "Buy", stop=stopLossPrice, limit=takeProfitPrice) strategy.exit("Stop Loss/Profit", "Sell", stop=stopLossPrice, limit=takeProfitPrice)