Esta estrategia combina dos indicadores técnicos, MACD y RSI, utilizando señales de cruce de MACD y señales de sobrecompra / sobreventa de RSI para determinar el momento de la negociación. Mientras tanto, la estrategia también introduce el promedio móvil ponderado (WMA) como un juicio auxiliar para mejorar la confiabilidad de la estrategia. La estrategia se ejecuta en un marco de tiempo de 1 hora, abriendo posiciones largas cuando MACD forma una cruz de oro y RSI está por encima de 50, y abriendo posiciones cortas cuando MACD forma una cruz de muerte y RSI está por debajo de 50. Al mismo tiempo, cierra posiciones largas cuando RSI está por encima de 70 y cierra posiciones cortas cuando RSI está por debajo de 30. Además, la estrategia establece múltiples variables de tiempo para juzgar los cambios de tendencia en diferentes escalas de tiempo.
El núcleo de esta estrategia es el uso combinado de dos indicadores técnicos, MACD y RSI. El MACD está compuesto por la diferencia entre la línea rápida (promedio móvil a corto plazo) y la línea lenta (promedio móvil a largo plazo), que puede reflejar los cambios de tendencia del mercado. Cuando la línea rápida cruza por encima de la línea lenta, forma una cruz de oro, lo que indica una tendencia al alza; a la inversa, forma una cruz de muerte, lo que indica una tendencia a la baja.
Esta estrategia combina el MACD y el RSI, utilizando el juicio de tendencia del MACD y el juicio de sobrecompra / sobreventa del RSI para comprender con mayor precisión el momento de negociación. Al mismo tiempo, la estrategia también introduce el promedio móvil ponderado (WMA) como un juicio auxiliar.
Además, la estrategia establece variables para múltiples marcos de tiempo (como 15 minutos, 30 minutos, 1 hora, 2 horas, etc.) para juzgar los cambios de tendencia en diferentes escalas de tiempo.
Esta estrategia combina dos indicadores técnicos efectivos, MACD y RSI, al tiempo que introduce WMA como un juicio auxiliar para tomar decisiones comerciales en un marco de tiempo de 1 hora. La lógica de la estrategia es clara, fácil de entender e implementar, y puede comprender mejor las tendencias del mercado y las condiciones de sobrecompra / sobreventa, con cierta factibilidad. Sin embargo, la estrategia también tiene algunas limitaciones y riesgos, como retraso, marco de tiempo único, falta de control de riesgos, etc. En el futuro, la estrategia puede mejorarse en términos de introducir más indicadores, marcos de tiempo continuos, fortalecer el control de riesgos, optimización de parámetros, etc., para mejorar su robustez y rentabilidad. En general, esta estrategia proporciona una forma de pensar para el comercio cuantitativo, pero aún necesita ser optimizada y refinada en la práctica.
/*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")