La stratégie Ichimoku Kumo Twist utilise la ligne de conversion, la ligne de base et les lignes de portée principales de l'indicateur Ichimoku pour construire des signaux de trading en tant que stratégie de suivi de tendance.
La stratégie utilise principalement trois lignes Ichimoku
Les signaux d'achat sont générés lorsque le lead span 1 traverse le lead span 2, tandis que les signaux de vente sont générés lorsque le lead span 1 traverse le lead span 2. La stratégie de trading suit simplement les croisements haussier et baissier des moyens à court et moyen terme pour capturer les changements de tendance.
La stratégie Ichimoku cloud twist combine les tendances à court et à moyen terme, ce qui permet d'identifier efficacement les points d'inversion de tendance.
Les stratégies basées sur la réversion moyenne ont un certain retard intégré pour filtrer le bruit.
L'utilisation des nuages pour mesurer la force de la tendance permet d'améliorer les entrées et les sorties.
Aucune optimisation de paramètres n'est nécessaire - les paramètres standard Ichimoku fonctionnent bien.
Ichimoku a des internes assez complexes et n'est pas très sensible aux ajustements de paramètres rendant l'optimisation excessive difficile.
Il peut y avoir de multiples faux signaux sur les marchés à fourchette.
La divergence entre les tendances à court et à moyen terme peut entraîner des pannes de stratégie.
Les arrêts de pertes sont essentiels pour contrôler le risque, sinon de gros retrait sont possibles.
Testez différentes combinaisons de périodes de conversion et de référence pour trouver l'équilibre optimal.
Ajouter des filtres avec d'autres indicateurs pour éviter de recevoir des signaux dans des formations défavorables.
Incorporer des stratégies de stop-loss comme les stops dynamiques ou de trailing.
Optimiser la taille des positions en fonction des conditions du marché.
Ajoutez des commissions de trading dans les backtests pour des résultats plus réalistes.
Dans l'ensemble, la stratégie Ichimoku cloud twist est une stratégie de suivi de tendance modérée. Elle peut identifier efficacement les virages de tendance et prendre des positions en alignement avec la direction de la tendance. Mais une surveillance est requise et des contrôles de risque stricts sont nécessaires pour une utilisation à long terme. Des améliorations continues dans le réglage des paramètres, les filtres d'entrée, la mécanique de stop-loss, etc. peuvent encore améliorer la stabilité et la rentabilité de cette stratégie.
/*backtest start: 2022-10-20 00:00:00 end: 2023-10-26 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy(title="Ichimoku Kumo Twist Strategy (Presets)", shorttitle="Kumo Twist Strategy", overlay=true) xlowest_(src, len) => x = src for i = 1 to len - 1 v = src[i] if (na(v)) break x := min(x, v) x xlowest(src, len) => na(src[len]) ? xlowest_(src, len) : lowest(src, len) xhighest_(src, len) => x = src for i = 1 to len - 1 v = src[i] if (na(v)) break x := max(x, v) x xhighest(src, len) => na(src[len]) ? xhighest_(src, len) : highest(src, len) dropn(src, n) => na(src[n]) ? na : src ichiConversionPeriods(presets) => if presets == "Crypto Doubled" 20 else if presets == "Crypto Singled" 10 else if presets == "Standard Doubled" 18 else 9 ichiBasePeriods(presets) => if presets == "Crypto Doubled" 60 else if presets == "Crypto Singled" 30 else if presets == "Standard Doubled" 52 else 26 ichiLaggingSpan2Periods(presets) => if presets == "Crypto Doubled" 120 else if presets == "Crypto Singled" 60 else if presets == "Standard Doubled" 104 else 52 ichiDisplacement(presets) => if presets == "Crypto Doubled" 30 else if presets == "Crypto Singled" 30 else if presets == "Standard Doubled" 26 else 26 scaling = input(title="Scaling", options=["Linear", "Log"], defval="Linear") presets = input(title="Presets", options=["Crypto Doubled", "Crypto Singled", "Standard Doubled", "Standard Singled"], defval="Crypto Doubled") dropCandles = input(1, minval=0, title="Drop first N candles") showClouds = input(false, "Show Clouds") stoploss = input(true, title="Stop Loss") conversionPeriods = ichiConversionPeriods(presets) basePeriods = ichiBasePeriods(presets) laggingSpan2Periods = ichiLaggingSpan2Periods(presets) displacement = ichiDisplacement(presets) logScaling = scaling == "Log" lows = dropn(low, dropCandles) highs = dropn(high, dropCandles) lowsp = logScaling ? log(lows) : lows highsp = logScaling ? log(highs) : highs donchian(len) => avg(xlowest(lowsp, len), xhighest(highsp, len)) conversionLine = donchian(conversionPeriods) baseLine = donchian(basePeriods) leadLine1 = avg(conversionLine, baseLine) leadLine2 = donchian(laggingSpan2Periods) golong = crossover(leadLine1, leadLine2) goshort = crossunder(leadLine1, leadLine2) strategy.entry("Buy", strategy.long, when=golong, stop=(stoploss ? high+syminfo.mintick : na)) strategy.entry("Sell", strategy.short, when=goshort, stop=(stoploss ? low-syminfo.mintick : na)) conversionLinep = logScaling ? exp(conversionLine) : conversionLine baseLinep = logScaling ? exp(baseLine) : baseLine leadLine1p = logScaling ? exp(leadLine1) : leadLine1 leadLine2p = logScaling ? exp(leadLine2) : leadLine2 plot(showClouds ? conversionLinep : na, color=#0496ff, title="Conversion Line") plot(showClouds ? baseLinep : na, color=#991515, title="Base Line") p1 = plot(showClouds ? leadLine1p : na, offset = displacement, color=green, title="Lead 1") p2 = plot(showClouds ? leadLine2p : na, offset = displacement, color=red, title="Lead 2") fill(p1, p2, color = showClouds ? (leadLine1p > leadLine2p ? green : red) : na)