
La estrategia es un sistema de seguimiento de tendencias integrado que combina un gráfico de equilibrio a primera vista (Ichimoku Cloud), un indicador relativamente fuerte (RSI) y un indicador de dispersión de convergencia de promedios móviles (MACD). La estrategia determina la dirección de la tendencia general a través de un gráfico de la nube, utiliza el RSI para confirmar la movilidad de los precios y luego combina la intersección de las líneas de señales MACD para determinar el momento específico de la negociación, lo que permite un análisis de mercado y decisiones de negociación multifacetadas.
La lógica central de la estrategia se basa en la colaboración de tres indicadores técnicos:
Las reglas de negociación de la estrategia son las siguientes: Hay varias condiciones:
Condiciones para el vacío:
Riesgo de reversión de tendencia: pueden producirse pérdidas continuas en los puntos de inflexión de la tendencia. Recomendación: Se puede agregar el requisito de período de tiempo para la confirmación de tendencias.
Riesgo de mercado oscilante: puede haber operaciones frecuentes en mercados convulsionados por zonas. Recomendación: Aumentar las condiciones de filtración de la señal, como la mínima amplitud de oscilación requerida.
Riesgo de retraso: los indicadores tienen un cierto retraso y pueden perder el mejor punto de entrada. Recomendación: Puede combinarse con un indicador más rápido o un análisis del comportamiento de los precios.
Sensibilidad de parámetros: la configuración incorrecta de los parámetros puede causar un mal desempeño de la estrategia. Recomendación: Se necesita una optimización de retroalimentación para determinar la combinación de parámetros adecuada.
Combinando el gráfico de equilibrio a primera vista, el RSI y el MACD, los tres indicadores técnicos clásicos, la estrategia construye un sistema de comercio de seguimiento de tendencias completo. La principal ventaja de la estrategia reside en el mecanismo de confirmación múltiple y las reglas de negociación claras, pero también requiere tener en cuenta los riesgos derivados de los puntos de inflexión de tendencias y los mercados oscilantes.
/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-10 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Ichimoku + RSI + MACD Strategy", overlay=true)
// Ichimoku Cloud parameters
tenkanPeriod = 9
kijunPeriod = 26
senkouSpanBPeriod = 52
displacement = 26
// RSI parameters
rsiLength = 14
rsiOverbought = 70
rsiOversold = 30
// MACD parameters
[macdLine, signalLine, _] = ta.macd(close, 12, 26, 9)
// Ichimoku calculations
tenkanSen = (ta.highest(high, tenkanPeriod) + ta.lowest(low, tenkanPeriod)) / 2
kijunSen = (ta.highest(high, kijunPeriod) + ta.lowest(low, kijunPeriod)) / 2
senkouSpanA = (tenkanSen + kijunSen) / 2
senkouSpanB = (ta.highest(high, senkouSpanBPeriod) + ta.lowest(low, senkouSpanBPeriod)) / 2
chikouSpan = close[displacement]
// Plotting Ichimoku Cloud
plot(tenkanSen, color=color.red, title="Tenkan-sen")
plot(kijunSen, color=color.blue, title="Kijun-sen")
plot(senkouSpanA[displacement], color=color.green, title="Senkou Span A")
plot(senkouSpanB[displacement], color=color.red, title="Senkou Span B")
fill(plot(senkouSpanA[displacement]), plot(senkouSpanB[displacement]), color=color.new(color.green, 90), title="Cloud")
// RSI calculation
rsi = ta.rsi(close, rsiLength)
// Long entry condition
longCondition = (close > senkouSpanA) and (close > senkouSpanB) and (rsi > rsiOversold) and (ta.crossover(macdLine, signalLine))
if (longCondition)
strategy.entry("Long", strategy.long)
// Short entry condition
shortCondition = (close < senkouSpanA) and (close < senkouSpanB) and (rsi < rsiOverbought) and (ta.crossunder(macdLine, signalLine))
if (shortCondition)
strategy.entry("Short", strategy.short)
// Exit conditions
if (ta.crossunder(macdLine, signalLine) and strategy.position_size > 0)
strategy.close("Long")
if (ta.crossover(macdLine, signalLine) and strategy.position_size < 0)
strategy.close("Short")
// Plot RSI
hline(rsiOverbought, "Overbought", color=color.red)
hline(rsiOversold, "Oversold", color=color.green)
plot(rsi, color=color.blue, title="RSI")