Esta estratégia combina o gráfico de nuvens Ichimoku com vários indicadores auxiliares para rastrear as tendências.
Esta estratégia utiliza principalmente a transformação da nuvem de Ichimoku para julgar a direção da tendência. Ele vai longo quando o Tenkan-sen cruza acima da nuvem e vai curto quando o Tenkan-sen cruza abaixo. Enquanto isso, ele usa Chikou Span, histograma MACD, CMF e TSI para filtragem de várias camadas para garantir a qualidade do sinal.
Especificamente, o sinal longo é acionado quando:
O sinal curto é desencadeado quando as condições acima são invertidas. Por tais critérios abrangentes, a maioria dos falsos sinais pode ser filtrada e as principais tendências no mercado são capturadas.
A maior vantagem desta estratégia é filtrar sinais falsos e detectar tendências fortes através da combinação de múltiplos indicadores.
Através de tais julgamentos, a estratégia pode identificar efetivamente os setores quentes a médio e longo prazo e lucrar com a negociação de tendências.
Os principais riscos desta estratégia incluem:
Soluções:
As principais direcções de otimização:
Optimização de parâmetros através de mais backtests para encontrar uma melhor combinação de parâmetros
Adicionar um mecanismo de stop loss ao controlo dos riscos
Adicionar stop loss para bloquear os lucros
Teste mais indicadores para encontrar uma melhor combinação de filtros
Adicionar regras para distinguir a fuga real
Esta estratégia combina efetivamente a nuvem Ichimoku e vários indicadores auxiliares. Melhorias adicionais na otimização de parâmetros, mecanismo de stop loss, seleção de indicadores podem melhorar a estabilidade e qualidade do sinal para maiores retornos constantes.
/*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)