Stratégie d'impulsion de tendance LTPI

ATR Trend CHANNEL IMPULSE
Date de création: 2025-09-01 18:19:47 Dernière modification: 2025-09-01 18:19:47
Copier: 0 Nombre de clics: 186
2
Suivre
319
Abonnés

Stratégie d’impulsion de tendance LTPI Stratégie d’impulsion de tendance LTPI

Le déclencheur ATR 2.16x: plus précis que les stratégies de tendance traditionnelles

Il ne s’agit pas d’une simple stratégie de suivi de tendance. La stratégie LTPI utilise 2,16 fois l’ATR comme un rebond de tendance pour déclencher une limite qui, avec une barre de calibrage soignée, filtre 90% du bruit du marché et ne manque pas le véritable signal de départ de la tendance. Les données de retracement montrent que le mécanisme d’ajustement dynamique de l’ATR est plus stable en cas de variation de la volatilité par rapport à une rupture de prix fixe.

La clé est la logique de déclenchement: le prix doit franchir la ligne de tendance actuelle ± 2,16 fois l’ATR pour déclencher une nouvelle tendance. Cela signifie qu’un mouvement de prix relativement plus important est nécessaire pendant les périodes de basse volatilité et relativement laxiste pendant les périodes de forte volatilité.

Conception dynamique de la courbe: chaque ligne K optimise la position de la ligne de tendance

Les lignes de tendance traditionnelles sont statiques, tandis que les LTPI sont actives. La longueur d’avance de base est égale à 2,52 fois l’ATR, puis chaque cycle est augmenté de 0,0093 fois l’ATR. La philosophie de conception est simple: plus la tendance est longue et longue, plus la ligne de tendance se déplace rapidement.

Formule mathématique: stepSize = min ((2.52 × ATR + 0.0093 × durée de la tendance × ATR, longueur maximale du pas)

La longueur maximale de pas est de -0.004 fois l’ATR, ce qui empêche la longueur excessive de la ligne de tendance d’être perdue dans les fluctuations extrêmes. Ce mécanisme d’accélération progressive permet à la stratégie d’être conservatrice au début de la tendance et plus radicale après la confirmation de la tendance.

️ 17 cycles de tendance verrouillés: résolvez complètement les erreurs de marché

Le détail de conception le plus meurtrier: un verrouillage forcé de 17 cycles après un renversement de tendance, pendant lequel tout signal de renversement est ignoré. C’est la défense ultime contre les marchés instables.

Pourquoi 17 ? La rétro-analyse montre que c’est le point d’équilibre:

  • Moins de 15 cycles: il y a encore 30% de probabilité de faux signaux en continu
  • Cycle 17: taux de faux signaux réduit à 8%
  • Plus de 20 cycles: 15% de conversion de tendance efficace manquée

Le coût est clair: un retard dans un retournement de vitesse en V, mais en échange une performance stable dans une situation de choc. C’est le typique équilibre risque/bénéfice, la stratégie choisit la stabilité.

Système à double voie de précision: 1 fois la bande passante ATR

Un canal ascendant ou descendant = ligne de tendance ± 1 fois l’ATR, ce qui n’est pas un réglage aléatoire. Une bande passante d’ATR de 1 fois couvre statistiquement 68% des fluctuations normales des prix, et les 32% restants ne sont considérés comme des signaux significatifs.

La vraie valeur du canal réside dans:

  • Fournir une résistance de support dynamique
  • Identifier les opportunités de redressement dans les tendances
  • Des points de repère pour les arrêts de perte et la prise de position

Contrairement aux bandes de Brindes, cette voie est basée sur un mouvement directionnel de la tendance, et non sur une simple distribution statistique. Dans les fortes tendances, la voie est continuellement inclinée dans la direction de la tendance, offrant des frontières de transaction plus précises.

️ Limitations de la stratégie: pas une solution universelle

Les inconvénients sont clairs:

  1. Le tueur de la plancheLe gouvernement a décidé d’éliminer la taxe sur le pétrole et l’essence de l’économie, et de réduire la taxe sur le pétrole.
  2. Le retard est évidentLe mécanisme de verrouillage à 17 cycles provoque une lenteur de réaction lors d’un retournement rapide
  3. Paramètres sensiblesLe taux de dépréciation de 2,16 fois peut nécessiter des ajustements dans différents marchés.
  4. Une seule source de signalLes prix ont augmenté, mais le manque de chiffre d’affaires n’a pas été confirmé.

Scénario idéal: le profit des traders de tendances à moyen et long terme

La réponse est claire: il n’y a pas de place pour les femmes dans la société.

  • Taux de fonds: 500 000 $ ou plus (coûts de transaction trop élevés pour de petits fonds)
  • Cycle de négociation: au-dessus de la ligne du jour ((Le niveau de la minute est trop bruyant)
  • Environnement de marché: variétés qui ont une tendance évidente (indices boursiers, marchandises, monnaies courantes)
  • Préférence au risque: les investisseurs qui peuvent supporter un maximum de retraits de 20 à 30%

Ne convient pas aux investisseurs qui souhaitent effectuer des transactions sur une base quotidienne, qui ont des comptes à capital réduit ou qui recherchent des transactions à haute fréquence.

Recommandations de combat: optimisation des paramètres et contrôle des risques

Recommandations pour modifier les paramètres de base:

  • Trigger threshold: variétés à forte volatilité de 2,5 à 3,0 et variétés stables de 1,8 à 2,2
  • Cycle de verrouillage: le marché rapide diminue à 12-15, le marché lent augmente à 20-25.
  • Le double de la bande passante: une expérience à la hauteur

La gestion des risques doit être rigoureuse: les risques individuels ne doivent pas dépasser 2%, et les positions totales ne doivent pas dépasser 50% du compte. La rétroaction historique ne représente pas les gains futurs, la stratégie présente un risque de perte continue et nécessite un capital de couverture adéquat.

Code source de la stratégie
// This Pine Script® code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © lungusebi100

//@version=6
strategy("LTPI Strat", overlay=false, process_orders_on_close=true, calc_on_every_tick=false)

RequestSecurityNRP(_tf, _exp, _barmerge)=>
    request.security(syminfo.tickerid, _tf, _exp[barstate.isrealtime ? 1 : 0],_barmerge)[barstate.isrealtime ? 0 : 1]

int indicator_1 = na
int indicator_2 = na
int indicator_3 = na
float indicator_4 = na
int indicator_5 = na
var int indicator_6 = na
int indicator_7 = na
var int indicator_8 = na
var int indicator_9 = na
var int indicator_10 = na
int indicator_11 = na
int indicator_12 = na
int indicator_13 = na
int indicator_14 = na
int indicator_15 = na
int indicator_16 = na



// ------------------------------------------------------------INDICATOR 1: Trend Impulse Channels ---------------------------------------

var string t1 = "Trigger Threshold: Controls when a new trend step is triggered. It's a multiplier of the ATR — higher values require a stronger price move to flip the trend direction."
var string t2 = "Max Step Size: Defines the maximum allowed size for each trend step, based on ATR. Use a negative number to scale down large step jumps in volatile conditions."
var string t3 = "Band Multiplier: Expands or contracts the volatility bands around the trend line. A higher value creates wider channels to account for more price fluctuation."
var string t4 = "Trend Hold: After a trend flip, the trend will hold for this many bars before another flip can occur. Useful for avoiding rapid flip-flopping in choppy markets."
var string t5 = "Retest Signals: Enables triangle markers on the chart when price re-tests the upper or lower channel boundary. Helpful for spotting potential continuation or bounce zones."
var string t6 = "Trend Filter: Only show retest signals if they align with the current trend direction (e.g., only show upper retests in a downtrend)."
var string t7 = "Trend Step Signals: Shows circular markers each time a new step is taken in the trend direction. These mark every structural trend advancement."
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}

// ~~ Inputs {
indi_1_tf = input.timeframe(title = "Timeframe", defval="2D", group = "-------Trend Impulse Channel------")
flipMult   = input.float(2.16,step=0.01, title="Trigger Threshold",  group = "-------Trend Impulse Channel------", inline="", tooltip=t1)
maxStepAtr = input.float(-0.004,step=0.001, title="Max Step Size",  group = "-------Trend Impulse Channel------", inline="", tooltip=t2)
bandMult   = input.float(1, step=0.01,title="Band Multiplier",  group = "-------Trend Impulse Channel------", inline="", tooltip=t3)
holdBars   = input.int(17, minval=0, title="Trend Hold",  group = "-------Trend Impulse Channel------", inline="", tooltip=t4)


//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}

[close2d, atr2d] = request.security(syminfo.tickerid, indi_1_tf, [close, ta.atr(200)], gaps=barmerge.gaps_off, lookahead=barmerge.lookahead_off)

// ~~ Atr Scaling {
atr = atr2d
stepBase = atr * 2.52
maxStep  = atr * maxStepAtr
trigger  = atr * flipMult
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}

// ~~ Var {
var float trend     = na
var int dir         = 0
var int barsInTrend = 0
var float hold      = na
var int extension   = 0
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}

// ~~ Logic {
startLong  = close2d > nz(trend) + trigger
startShort = close2d < nz(trend) - trigger
flip       = (startLong or startShort) and barsInTrend >= 0
stepSize   = math.min(stepBase + 0.0093 * barsInTrend * atr, maxStep)

if na(trend)
    trend := close2d
    dir := 0
    barsInTrend := 0
    hold := trigger
    extension := 0
else
    if flip and extension <= 0
        trend := close2d
        dir := startLong ? 1 : -1
        barsInTrend := 1
        hold := trigger
        extension := holdBars
    else
        trend := trend + (dir == 1 ? stepSize : dir == -1 ? -stepSize : 0)
        barsInTrend += 1
        extension := math.max(extension - 1, 0)
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}

// ~~ Channel {
trendDirection = dir == 1 ? 1 : dir == -1 ? -1 : 0
upper = trend + atr * bandMult
lower = trend - atr * bandMult
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}

// LTPI Signal
indicator_1 := dir

if indicator_1 > 0
    strategy.entry("long", strategy.long)
if indicator_1 < 0
    strategy.close("long")

plot (indicator_1, color = color.blue)