Cette stratégie combine le graphique des nuages Ichimoku avec divers indicateurs auxiliaires pour suivre les tendances. Elle utilise principalement le nuage Ichimoku pour déterminer la direction de la tendance et le MACD, CMF, TSI et d'autres indicateurs pour filtrer pour améliorer la qualité du signal.
Cette stratégie utilise principalement la transformation du nuage Ichimoku pour juger de la direction de la tendance. Il va long quand le Tenkan-sen traverse au-dessus du nuage et court quand le Tenkan-sen traverse en dessous. Pendant ce temps, il utilise Chikou Span, histogramme MACD, CMF et TSI pour le filtrage multicouche pour assurer la qualité du signal.
Plus précisément, le signal long est déclenché lorsque:
Le signal court est déclenché lorsque les conditions ci-dessus sont inversées. Par de tels critères complets, la plupart des faux signaux peuvent être filtrés et les principales tendances du marché capturées.
Le plus grand avantage de cette stratégie est de filtrer les faux signaux et de détecter les tendances fortes en combinant plusieurs indicateurs.
Grâce à de tels jugements, la stratégie permet d'identifier efficacement les secteurs chauds à moyen et long terme et de tirer profit du trading de tendance.
Les principaux risques de cette stratégie sont les suivants:
Les solutions:
Les principales orientations d'optimisation:
Optimisation des paramètres grâce à plus de backtests pour trouver une meilleure combinaison de paramètres
Ajouter un mécanisme de stop loss pour contrôler les risques
Ajoutez un stop-loss pour verrouiller les bénéfices
Testez plus d'indicateurs pour trouver une meilleure combinaison de filtres
Ajoutez des règles pour distinguer la vraie fuite
Cette stratégie combine efficacement le nuage Ichimoku et plusieurs indicateurs auxiliaires.
/*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)