Optimización de la estrategia de tendencia basada en el gráfico de la nube de Ichimoku

El autor:¿ Qué pasa?, fecha: 2024-01-19 14:45:21
Las etiquetas:

img

Resumen general

Esta estrategia combina el gráfico de la nube de Ichimoku con varios indicadores auxiliares para rastrear las tendencias. Utiliza principalmente la nube de Ichimoku para determinar la dirección de la tendencia y MACD, CMF, TSI y otros indicadores para filtrar para mejorar la calidad de la señal.

Principios

Esta estrategia utiliza principalmente la transformación de la nube de Ichimoku para juzgar la dirección de la tendencia. Va largo cuando el Tenkan-sen cruza por encima de la nube y va corto cuando el Tenkan-sen cruza por debajo. Mientras tanto, utiliza Chikou Span, histograma MACD, CMF y TSI para filtrar en múltiples capas para garantizar la calidad de la señal.

Específicamente, la señal larga se activa cuando:

  1. Tenkan-sen cruza por encima de la nube
  2. La nube es amplia y Tenkan-sen está sobre Kijun-sen.
  3. Chikou Span está por encima de la línea 0
  4. El precio de cierre está por encima de la nube
  5. El histograma MACD está por encima de 0.
  6. CMF es superior a 0,1
  7. La ETI es superior a 0

La señal corta se activa cuando las condiciones anteriores se invierten. Mediante criterios tan completos, la mayoría de las señales falsas pueden filtrarse y las principales tendencias del mercado se capturan.

Ventajas

La mayor ventaja de esta estrategia es filtrar señales falsas y detectar tendencias fuertes mediante la combinación de múltiples indicadores.

  1. La nube de Ichimoku determina la dirección de la tendencia principal
  2. Los indicadores auxiliares filtran las señales y reducen los riesgos
  3. Considera ampliamente múltiples marcos de tiempo para señales más confiables
  4. Reglas estrictas para negociar solo configuraciones de alta calidad y evitar mercados agitados
  5. Mecanismo de seguimiento de tendencias para maximizar las ganancias de tendencias

A través de tales juicios, la estrategia puede identificar eficazmente los sectores calientes a mediano y largo plazo y beneficiarse de las operaciones de tendencia.

Los riesgos

Los principales riesgos de esta estrategia incluyen:

  1. Riesgo de ruptura falsa que provoca señales erróneas
  2. Riesgo de reversión de la tendencia que conduzca a la pérdida de todos los beneficios
  3. Oportunidades perdidas con una frecuencia de negociación relativamente baja

Soluciones:

  1. Relajar adecuadamente los criterios de filtración para aumentar la frecuencia del comercio
  2. Añadir la condición de stop loss para limitar el tamaño de la pérdida
  3. Optimizar los parámetros para mejorar la precisión de la señal

Mejoramiento

Las principales direcciones de optimización:

  1. Optimización de parámetros a través de más backtests para encontrar una mejor combinación de parámetros

  2. Añadir un mecanismo de stop loss para controlar los riesgos

  3. Añadir un stop loss para bloquear las ganancias

  4. Prueba más indicadores para encontrar una mejor combinación de filtros

  5. Añadir reglas para distinguir el escape real

Conclusión

Esta estrategia combina eficazmente la nube de Ichimoku y múltiples indicadores auxiliares. Mejoras adicionales en la optimización de parámetros, mecanismo de stop loss, selección de indicadores pueden mejorar la estabilidad y calidad de la señal para mayores retornos constantes. La estrategia tiene un fuerte valor práctico.


/*backtest
start: 2024-01-11 00:00:00
end: 2024-01-13 14:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © exlux99

//@version=4
strategy("Ichimoku with MACD/ CMF/ TSI", overlay=true, margin_long=0, margin_short=0)



//Inputs
ts_bars = input(10, minval=1, title="Tenkan-Sen Bars")
ks_bars = input(30, minval=1, title="Kijun-Sen Bars")
ssb_bars = input(52, minval=1, title="Senkou-Span B Bars")
cs_offset = input(26, minval=1, title="Chikou-Span Offset")
ss_offset = input(26, minval=1, title="Senkou-Span Offset")
long_entry = input(true, title="Long Entry")
short_entry = input(true, title="Short Entry")

middle(len) => avg(lowest(len), highest(len))

// Ichimoku Components
tenkan = middle(ts_bars)
kijun = middle(ks_bars)
senkouA = avg(tenkan, kijun)
senkouB = middle(ssb_bars)


ss_high = max(senkouA[ss_offset-1], senkouB[ss_offset-1])
ss_low = min(senkouA[ss_offset-1], senkouB[ss_offset-1])

// Entry/Exit Signals
fast_length = input(title="Fast Length", type=input.integer, defval=17)
slow_length = input(title="Slow Length", type=input.integer, defval=28)
src = input(title="Source", type=input.source, defval=close)
signal_length = input(title="Signal Smoothing", type=input.integer, minval = 1, maxval = 50, defval = 5)
sma_source = input(title="Simple MA(Oscillator)", type=input.bool, defval=true)
sma_signal = input(title="Simple MA(Signal Line)", type=input.bool, defval=true)

// Calculating
fast_ma = sma_source ? sma(src, fast_length) : ema(src, fast_length)
slow_ma = sma_source ? sma(src, slow_length) : ema(src, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal ? sma(macd, signal_length) : ema(macd, signal_length)
hist = macd - signal


tk_cross_bull = tenkan > kijun
tk_cross_bear = tenkan < kijun
cs_cross_bull = mom(close, cs_offset-1) > 0
cs_cross_bear = mom(close, cs_offset-1) < 0
price_above_kumo = close > ss_high
price_below_kumo = close < ss_low


//CMF
lengthA = input(8, minval=1, title="CMF Length")
ad = close==high and close==low or high==low ? 0 : ((2*close-low-high)/(high-low))*volume
mf = sum(ad, lengthA) / sum(volume, lengthA)


//TSI
long = input(title="Long Length", type=input.integer, defval=8)
short = input(title="Short Length", type=input.integer, defval=8)
price = close
double_smooth(src, long, short) =>
	fist_smooth = ema(src, long)
	ema(fist_smooth, short)
pc = change(price)
double_smoothed_pc = double_smooth(pc, long, short)
double_smoothed_abs_pc = double_smooth(abs(pc), long, short)
tsi_value = 100 * (double_smoothed_pc / double_smoothed_abs_pc)



bullish = tk_cross_bull and cs_cross_bull and price_above_kumo and hist > 0 and mf > 0.1 and tsi_value > 0
bearish = tk_cross_bear and cs_cross_bear and price_below_kumo and hist < 0  and mf < -0.1 and tsi_value < 0



strategy.entry("Long", strategy.long, when=bullish and long_entry)
strategy.entry("Short", strategy.short, when=bearish and short_entry)

strategy.close("Long", when=bearish and not short_entry)
strategy.close("Short", when=bullish and not long_entry)

Más.