이 전략은 MACD 크로스오버 신호와 RSI 오버바운트/오버셀드 신호를 사용하여 MACD 크로스오버 신호와 RSI 오버바운트/오버셀드 신호를 사용하여 두 가지 기술 지표를 결합하여 거래 시기를 결정한다. 한편, 전략의 신뢰성을 향상시키기 위한 보조 판단으로 가중 이동 평균 (WMA) 을 도입한다. 이 전략은 1시간 시간 프레임으로 실행되며, MACD가 황금 십자가를 형성하고 RSI가 50보다 높을 때 긴 포지션을 열고, MACD가 죽음의 십자가를 형성하고 RSI가 50보다 낮을 때 짧은 포지션을 열고, 동시에, RSI가 70보다 높을 때 긴 포지션을 닫고 RSI가 30보다 낮을 때 짧은 포지션을 닫는다. 또한, 전략은 다양한 시간 스케일에서 트렌드 변화를 판단하기 위해 여러 시간 프레임에 대한 변수를 설정한다.
이 전략의 핵심은 두 가지 기술 지표인 MACD와 RSI의 결합 사용이다. MACD는 빠른 라인 (단기 이동 평균) 과 느린 라인 (장기 이동 평균) 사이의 차이로 구성되어 시장 트렌드 변화를 반영할 수 있다. 빠른 라인이 느린 라인 위에 넘어가면 상승 추세를 나타내는 황금 십자가를 형성하고 반대로 하락 추세를 나타내는 죽음의 십자가를 형성한다. RSI는 시장의 과소매와 과소매 상태를 측정하는 지표이다. RSI가 70을 넘으면 시장이 과소매되어 복귀 위험에 직면할 수 있음을 나타냅니다. RSI가 30 이하일 때 시장이 과소매되어 리바운드 기회를 가져올 수 있음을 나타냅니다.
이 전략은 MACD와 RSI를 결합하여, MACD의 트렌드 판단과 RSI의 과반 구매/ 과반 판매 판단을 사용하여 거래 시기를 더 정확하게 파악합니다. 동시에, 전략은 또한 가중 이동 평균 (WMA) 을 보조 판단으로 도입합니다. WMA는 일반 이동 평균에 비해 최근 가격에 더 중점을 두고 있으며 가격 변화를 더 민감하게 반영 할 수 있습니다.
또한, 전략은 다양한 시간 스케일에서 트렌드 변화를 판단하기 위해 여러 시간 프레임 (예를 들어 15 분, 30 분, 1 시간, 2 시간, 등) 에 대해 변수를 설정합니다. 이 다 시간 프레임 분석 방법은 전략이 시장 트렌드를 보다 포괄적으로 파악하고 의사 결정의 정확성을 향상시키는 데 도움이 될 수 있습니다.
이 전략은 두 가지 효과적인 기술적 지표인 MACD와 RSI를 결합하면서 WMA를 1시간 시간 프레임에서 거래 결정을 내리는 보조 판단으로 도입합니다. 전략 논리는 명확하고 이해하기 쉽고 구현하기 쉽고 특정 실현 가능성과 함께 시장 추세와 과소 구매 / 과소 판매 조건을 더 잘 파악 할 수 있습니다. 그러나 전략에는 지연, 단일 시간 프레임, 위험 통제 부족 등과 같은 일부 제한과 위험이 있습니다. 미래에 전략은 더 많은 지표, 지속적인 시간 프레임, 위험 통제 강화, 매개 변수 최적화 등을 도입하여 안정성과 수익성을 향상시킬 수 있습니다. 전반적으로이 전략은 양적 거래에 대한 사고 방식을 제공하지만 여전히 실용적으로 최적화하고 정밀해야합니다.
/*backtest start: 2024-05-01 00:00:00 end: 2024-05-31 23:59:59 period: 2h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Improved MACD and RSI Trading Strategy", overlay=true, initial_capital=10000, commission_type=strategy.commission.percent, commission_value=0.01, default_qty_type=strategy.percent_of_equity, default_qty_value=100) // MACD 設置 fast_length = input(12, title="MACD Fast Length") slow_length = input(26, title="MACD Slow Length") signal_smoothing = input(9, title="MACD Signal Smoothing") // RSI 設置 input_rsi_length = input.int(14, title="RSI Length") input_rsi_source = input(close, "RSI Source") RSI = ta.rsi(input_rsi_source, input_rsi_length) // 計算MACD和信號線 [macdLine, signalLine, _] = ta.macd(close, fast_length, slow_length, signal_smoothing) // 自然交易理論:利用MACD和RSI的結合 ma(source, length, type) => switch type "SMA" => ta.sma(source, length) "EMA" => ta.ema(source, length) "SMMA (RMA)" => ta.rma(source, length) "WMA" => ta.wma(source, length) "VWMA" => ta.vwma(source, length) maTypeInput = input.string("SMA", title="Moving Average Type", options=["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"], group="MA Settings") maLengthInput = input.int(14, title="Moving Average Length", group="MA Settings") macdMA = ma(macdLine, maLengthInput, maTypeInput) // 設置交易信號 longCondition = ta.crossover(macdLine, signalLine) and macdLine > macdMA and RSI < 70 shortCondition = ta.crossunder(macdLine, signalLine) and macdLine < macdMA and RSI > 30 // 定義時間框架 tf_15m = ta.change(RSI, 15) > 0 ? 1 : 0 tf_30m = ta.change(RSI, 30) > 0 ? 1 : 0 tf_1h = ta.change(RSI, 60) > 0 ? 1 : 0 tf_2h = ta.change(RSI, 120) > 0 ? 1 : 0 tf_4h = ta.change(RSI, 240) > 0 ? 1 : 0 tf_6h = ta.change(RSI, 360) > 0 ? 1 : 0 tf_8h = ta.change(RSI, 480) > 0 ? 1 : 0 tf_12h = ta.change(RSI, 720) > 0 ? 1 : 0 tf_1d = ta.change(RSI, 1440) > 0 ? 1 : 0 // 設置開倉、平倉和空倉條件 if (longCondition and tf_1h and RSI > 50) strategy.entry("Long", strategy.long) if (shortCondition and tf_1h and RSI < 50) strategy.entry("Short", strategy.short) if (tf_1h and RSI > 70) strategy.close("Long") if (tf_1h and RSI < 30) strategy.close("Short") // 加入其他策略 // 定義加權平均價格 wma(source, length) => wma = 0.0 sum = 0.0 sum_wts = 0.0 for i = 0 to length - 1 wts = (length - i) * (length - i) sum := sum + source[i] * wts sum_wts := sum_wts + wts wma := sum / sum_wts wmaLength = input.int(20, title="WMA Length", group="Other Strategies") wmaValue = wma(close, wmaLength) // 設置交易信號 longWMACondition = close > wmaValue shortWMACondition = close < wmaValue if (longWMACondition and tf_1h and RSI > 50) strategy.entry("Long WMA", strategy.long) if (shortWMACondition and tf_1h and RSI < 50) strategy.entry("Short WMA", strategy.short) if (tf_1h and RSI > 70) strategy.close("Long WMA") if (tf_1h and RSI < 30) strategy.close("Short WMA") // 繪製MACD和RSI plot(macdLine, color=color.blue, title="MACD Line") plot(signalLine, color=color.red, title="Signal Line")