이 전략은 MACD 지표에 기반을 둔 개선된 거래 전략이다. 이 전략은 MACD 지표의 트렌드 추적 특성과 동력 거래의 생각을 결합하여 빠른 이동 평균과 느린 이동 평균의 차이를 분석하여 거래 신호를 생성한다. 이 전략은 또한 트렌드 확인, 신호 지연 확인, 고정 비율 스톱 손실 및
이 전략의 핵심은 빠른 이동 평균 (EMA) 와 느린 이동 평균 (EMA) 의 차이로 구성된 MACD 지표이다. 빠른 EMA와 느린 EMA가 교차할 때 구매 또는 판매 신호가 생성된다. 구체적으로 MACD 라인이 아래에서 상향으로 신호선을 돌파할 때 구매 신호가 생성되며 MACD 라인이 상위에서 하향 신호선을 돌파할 때 판매 신호가 생성된다.
기본 MACD 크로스 신호 외에도 트렌드 확인 메커니즘을 도입한다. 이는 단순한 이동 평균 (SMA) 과 비교하여 현재 시장이 상승 추세인지 하락 추세인지 판단한다. 상승 추세에 구매 신호가 나타나거나 하락 추세에 판매 신호가 나타나면야 거래 동작이 실제로 실행된다. 이는 불안한 시장에서 가짜 신호가 발생하는 것을 효과적으로 방지한다.
또한, 이 전략은 신호 확정 시간 창을 연장한다. 즉, 현재 K 라인이 구매 또는 판매 조건을 충족하고 이전 K 라인이 동일한 조건을 충족할 때만 해당 거래를 실행한다. 이것은 신호의 신뢰성을 더욱 향상시킨다.
마지막으로, 이 전략은 고정된 비율의 스톱 손실 및 스톱 폭 가격들을 설정한다. 거래가 한 번 이루어지면, 오픈 가격에 따라 스톱 손실 및 스톱 폭 가격들이 계산되고, 이 가격들이 한 번 도달하면 자동으로 평형된다. 이것은 단일 거래의 위험과 수익을 통제하는 데 도움이 된다.
이 전략은 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)