Stratégie de suivi des tendances croisées d'une heure TENKAN KIJUN basée sur ADX

Auteur:ChaoZhang est là., Date: 2023-12-08 à 15h37
Les étiquettes:

img

Résumé

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 logique de la stratégie

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.

Analyse des avantages

Les principaux avantages de cette stratégie sont les suivants:

  1. Utiliser un système ICHIMOKU mature et fiable pour déterminer la direction de la tendance et les points tournants.

  2. Filtrer le marché en tendance faible en utilisant ADX pour éviter les problèmes de consolidation.

  3. Le délai d'une heure filtre le bruit du marché et ne capte que les tendances à moyen et à long terme.

  4. La logique est simple et facile à suivre pour les traders de tendance.

  5. Des résultats de backtesting solides, en particulier sur les pièces à forte capitalisation boursière comme ETH/BTC.

Analyse des risques

Quelques risques à noter concernant cette stratégie:

  1. Les paramètres ICHIMOKU sont sensibles, nécessitent une personnalisation pour différentes paires.

  2. L' ADX peut être retardé dans certains cas, ce qui entraîne une entrée manquée.

  3. Les performances sont inférieures sur les marchés variés avec des stop loss fréquents.

  4. Les performances varient considérablement selon les paires et les délais.

  5. 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.

Directions d'optimisation

Quelques orientations majeures pour améliorer la stratégie:

  1. Optimisation dynamique des paramètres TENKAN et KIJUN pour une meilleure adaptation.

  2. À la recherche de meilleurs indicateurs de tendance à remplacer ou à combiner avec ADX.

  3. Ajout d'un stop loss/take profit pour contrôler le ratio risque/rendement.

  4. Combiner la modélisation avec des indicateurs complémentaires pour améliorer la stabilité.

  5. Modularisation et souplesse pour la régulation des paramètres sur plus de paires.

  6. Gestion quantitative du risque, par exemple contrôle maximal du prélèvement contre les mouvements extrêmes.

Conclusion

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()




Plus de