Il s'agit d'une stratégie de suivi de tendance simple mais rentable basée sur le croisement de TENKAN et KIJUN d'une heure dans le système ICHIMOKU combiné à l'indicateur ADX pour filtrer les marchés en tendance faible pour générer des signaux de trading.
La stratégie utilise la ligne de conversion (TENKAN) et la ligne de base (KIJUN) croisée dans le système ICHIMOKU pour déterminer la direction de la tendance du marché.
Lorsque le TENKAN traverse au-dessus de KIJUN, c'est un signal haussier. Lorsque le TENKAN traverse au-dessous de KIJUN, c'est un signal baissier. Cela vise à capturer un renversement de tendance à moyen terme.
En outre, l'indicateur ADX est utilisé pour mesurer la force de la tendance.
En résumé, cette stratégie identifie l'orientation de la tendance à moyen terme via le croisement TENKAN et KIJUN, et utilise l'ADX pour filtrer les fausses ruptures, afin de suivre les tendances à long terme.
Les principaux avantages de cette stratégie sont les suivants:
Utiliser un système ICHIMOKU mature et fiable pour déterminer la direction de la tendance et les points tournants.
Filtrer le marché en tendance faible en utilisant ADX pour éviter les problèmes de consolidation.
Le délai d'une heure filtre le bruit du marché et ne capte que les tendances à moyen et à long terme.
La logique est simple et facile à suivre pour les traders de tendance.
Des résultats de backtesting solides, en particulier sur les pièces à forte capitalisation boursière comme ETH/BTC.
Quelques risques à noter concernant cette stratégie:
Les paramètres ICHIMOKU sont sensibles, nécessitent une personnalisation pour différentes paires.
L' ADX peut être retardé dans certains cas, ce qui entraîne une entrée manquée.
Les performances sont inférieures sur les marchés variés avec des stop loss fréquents.
Les performances varient considérablement selon les paires et les délais.
La détention à long terme de positions peut être risquée, un stop loss/take profit approprié est nécessaire.
L'optimisation peut être effectuée via l'ajustement des paramètres ADX, l'ajout de filtres tels que MACD pour réduire les faux signaux ou l'ajustement dynamique des paramètres pour la robustesse.
Quelques orientations majeures pour améliorer la stratégie:
Optimisation dynamique des paramètres TENKAN et KIJUN pour une meilleure adaptation.
À la recherche de meilleurs indicateurs de tendance à remplacer ou à combiner avec ADX.
Ajout d'un stop loss/take profit pour contrôler le ratio risque/rendement.
Combiner la modélisation avec des indicateurs complémentaires pour améliorer la stabilité.
Modularisation et souplesse pour la régulation des paramètres sur plus de paires.
Gestion quantitative du risque, par exemple contrôle maximal du prélèvement contre les mouvements extrêmes.
En conclusion, il s'agit d'une stratégie de suivi de tendance simple mais pratique, basée principalement sur le croisement TENKAN/KIJUN et ADX pour identifier les tendances à moyen et long terme et générer des signaux. Elle a montré des résultats positifs de backtesting, en particulier sur les paires BTC à forte capitalisation boursière comme ETH/BTC, avec une rentabilité relativement stable. Mais elle repose également sur l'ajustement des paramètres, nécessite une optimisation par paire. Le contrôle du risque par transaction est également nécessaire pour limiter les pertes lorsque les tendances s'inversent.
/*backtest start: 2023-11-07 00:00:00 end: 2023-12-07 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 strategy(title="Odin's Kraken (TK Cross Strategy)", shorttitle="Odin's Kraken", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100) src = input(close, title="Source") // define tk in ichimoku conversionPeriods = input(18, minval=1, title="Conversion Line Periods (Tenkan)"), basePeriods = input(58, minval=1, title="Base Line Periods (Kijun)") donchian(len) => avg(lowest(len), highest(len)) conversionLine = donchian(conversionPeriods) baseLine = donchian(basePeriods) TK_Uptrend = crossover(conversionLine,baseLine) TK_Downtrend = crossunder(conversionLine,baseLine) plot(conversionLine, color=lime, title="Tenkan", linewidth=3) plot(baseLine, color=red, title="Kijun", linewidth=3) // define ADX adxlen = input(14, title="ADX Smoothing") dilen = input(14, title="DI Length") th = input(title="threshold", defval=20) dirmov(len) => up = change(high) down = -change(low) plusDM = na(up) ? na : (up > down and up > 0 ? up : 0) minusDM = na(down) ? na : (down > up and down > 0 ? down : 0) truerange = rma(tr, len) plus = fixnan(100 * rma(plusDM, len) / truerange) minus = fixnan(100 * rma(minusDM, len) / truerange) [plus, minus] adx(dilen, adxlen) => [plus, minus] = dirmov(dilen) sum = plus + minus adx = 100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen) [plus, minus] = dirmov(dilen) sig = adx(dilen, adxlen) // backtesting range // From Date Inputs fromDay = input(defval = 3, title = "From Day", minval = 1, maxval = 31) fromMonth = input(defval = 9, title = "From Month", minval = 1, maxval = 12) fromYear = input(defval = 2018, title = "From Year", minval = 1970) // To Date Inputs toDay = input(defval = 3, title = "To Day", minval = 1, maxval = 31) toMonth = input(defval = 9, title = "To Month", minval = 1, maxval = 12) toYear = input(defval = 2019, title = "To Year", minval = 1970) // Calculate start/end date and time condition startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00) finishDate = timestamp(toYear, toMonth, toDay, 00, 00) time_cond = true // open long and short longCondition = TK_Uptrend if (longCondition and sig > 12 and time_cond) strategy.entry("LONG", strategy.long) shortCondition = TK_Downtrend if (shortCondition and sig > 12 and time_cond) strategy.entry("SHORT", strategy.short) // close trade if backtesting criteria not met if (not time_cond) strategy.close_all()