La stratégie d'inversion de la bande nuageuse ICH

Auteur:ChaoZhang est là., Date: le 27 octobre 2023 à 16 h 36 min 59 s
Les étiquettes:

ICH云带扭转策略

Résumé

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.

Les principes stratégiques

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.

Analyse des avantages

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

L'analyse des risques

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

Optimisation

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

Résumé

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)


En savoir plus