La stratégie Ichimoku Kumo Twist utilise les lignes de conversion, les lignes de référence et les lignes de guidage pour construire des signaux de trading et est une stratégie de suivi des tendances. Elle recherche les points d'inversion des tendances à court et à moyen terme en inversant la bande de Ichimoku pour obtenir des points de rupture à faible risque et des opportunités d'achat et d'achat.
La stratégie utilise principalement les trois moyennes de l'indicateur Ichimoku - la ligne de conversion, la ligne de référence et la ligne de guidage 1, ainsi que la ligne K pour calculer les prix les plus élevés et les prix les plus bas au-dessous du nuage. La ligne de guidage calcule les prix les plus élevés et les prix les plus bas au milieu des 9 dernières lignes K, représentant la moyenne courte du premier tableau d'équilibre; la ligne de guidage calcule les prix les plus élevés et les prix les plus bas au milieu des 26 dernières lignes K, représentant la moyenne à long terme.
Lorsque la ligne 1 traverse la ligne 2, un signal d'achat est généré, tandis que la ligne 1 traverse la ligne 2, un signal de vente est généré. La stratégie de trading consiste à suivre les forks de la ligne moyenne à court et à moyen terme pour capturer les changements de tendance.
Les stratégies de revers de la bande de Ichimoku combinent les tendances à court et moyen terme pour identifier efficacement les points d'inversion des tendances.
Les stratégies basées sur l'uniformité ont une certaine latence et peuvent filtrer une partie du bruit.
Le CloudBand est utilisé pour déterminer la force et la faiblesse de la tendance, ce qui permet d'obtenir de meilleures entrées et sorties.
Il n'est pas nécessaire d'optimiser les paramètres, mais vous pouvez utiliser les paramètres standard Ichimoku.
Le principe Ichimoku est plus complexe, peu sensible aux ajustements de paramètres et pas facile à optimiser.
Dans le cas d'un marché en pleine croissance, il peut y avoir plusieurs signaux erronés.
Les tendances à court et à moyen terme se détournent et la stratégie échoue.
Les risques doivent être maîtrisés avec un stop-loss, sinon il peut y avoir des pertes plus importantes.
Les différentes combinaisons de paramètres des lignes de conversion et des lignes de référence peuvent être testées pour trouver le point d'équilibre optimal.
En combinaison avec d'autres indicateurs, filtrer les signaux d'entrée afin d'éviter de construire des positions dans des conditions nettement défavorables.
Ajoutez une stratégie de stop-loss, définissez un stop-loss dynamique ou un stop-loss à la traîne.
Optimiser la gestion des positions et ajuster la taille des positions en fonction des conditions du marché.
Des frais de transaction sont ajoutés aux retests, ce qui rend les résultats plus précis.
La stratégie Ichimoku Cloud Reversal est globalement une stratégie de tendance modérée. Elle permet d'identifier efficacement les points de revirement de tendance et d'ouvrir des positions dans la direction qui correspond à la tendance. Mais elle a également un certain coût de surveillance et doit être accompagnée de mesures strictes de gestion des risques pour être utilisée sur le long terme.
/*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)