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.
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:
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.
La mayor ventaja de esta estrategia es filtrar señales falsas y detectar tendencias fuertes mediante la combinación de múltiples indicadores.
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 principales riesgos de esta estrategia incluyen:
Soluciones:
Las principales direcciones de optimización:
Optimización de parámetros a través de más backtests para encontrar una mejor combinación de parámetros
Añadir un mecanismo de stop loss para controlar los riesgos
Añadir un stop loss para bloquear las ganancias
Prueba más indicadores para encontrar una mejor combinación de filtros
Añadir reglas para distinguir el escape real
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)