Stratégie de suivi des tendances collaborative multi-indicateurs et système de stop loss dynamique

ATR EMA PVT RSI
Date de création: 2024-12-13 11:45:19 Dernière modification: 2024-12-13 11:45:19
Copier: 0 Nombre de clics: 357
1
Suivre
1617
Abonnés

Stratégie de suivi des tendances collaborative multi-indicateurs et système de stop loss dynamique

Aperçu

Cette stratégie est un système de trading de suivi de tendance combinant plusieurs indicateurs techniques. Elle intègre des signaux de marché de plusieurs dimensions, tels que les moyennes mobiles (EMA), le suivi de la volatilité (ATR), les tendances de volume de transaction (PVT) et les oscillateurs dynamiques (Ninja), afin d’améliorer la précision des transactions grâce à la synchronisation des signaux.

Principe de stratégie

La logique centrale de la stratégie repose sur quatre piliers principaux:

  1. En utilisant l’EMA de 200 cycles comme base de jugement de la tendance principale, le marché est divisé en deux états, le plus élevé et le plus bas
  2. Système de sortie de Chandelier, basé sur ATR, pour déterminer les points de basculement des tendances en suivant les prix les plus élevés et les plus bas et en les associant à la volatilité
  3. L’indicateur PVT est utilisé pour confirmer l’efficacité d’une tendance des prix en associant la variation des prix au volume des transactions.
  4. L’oscillateur Ninja capture les changements de dynamique du marché en comparant les courts et moyens termes

La génération d’un signal de transaction nécessite que les conditions suivantes soient remplies:

  • Faire plus: le prix est au-dessus de 200 EMA, et le signal d’achat de la sortie de Chandelier est affiché, tandis que l’indicateur PVT ou Ninja est confirmé
  • Faire le vide: le prix est au-dessous de 200 EMA et le signal de vente de la sortie de Chandelier apparaît, tandis que l’indicateur PVT ou Ninja confirme

Avantages stratégiques

  1. La synchronisation des indicateurs a permis de réduire considérablement le risque de fausses percées
  2. L’information sur le marché est composée de tendances, de volatilité, de volume et de dynamique.
  3. Un mécanisme d’arrêt dynamique qui permet d’ajuster automatiquement la position d’arrêt en fonction des fluctuations du marché
  4. Des règles d’échange systématiques qui réduisent les interférences avec les jugements subjectifs
  5. Un bon système de contrôle des risques avec un stop-loss précis pour chaque transaction

Risque stratégique

  1. Des faux signaux peuvent fréquemment se produire sur des marchés volatils
  2. Le mécanisme de confirmation multiple peut entraîner un léger retard dans l’admission
  3. La position de stop loss peut être relativement détendue en cas de retournement rapide du marché
  4. L’optimisation des paramètres peut présenter un risque de suradaptation
  5. Une plus grande réserve financière est nécessaire pour supporter le retrait.

Orientation de l’optimisation de la stratégie

  1. Introduction d’un mécanisme de reconnaissance des environnements de marché qui utilise une combinaison différente de paramètres dans différents états de marché
  2. Augmentation de la dimension d’analyse du volume des transactions et optimisation du système de gestion des positions
  3. Considérer l’ajout d’un mécanisme d’ajustement des paramètres dynamiques basé sur la volatilité
  4. Optimiser la répartition des poids entre plusieurs indicateurs
  5. Introduisez un filtre temporel pour éviter les périodes de forte volatilité

Résumer

La stratégie construit un système de négociation relativement complet grâce à un mécanisme de synergie multi-indicateurs et de stop-loss dynamique. Les principaux avantages de la stratégie résident dans son mécanisme de confirmation de signal multidimensionnel et son contrôle rigoureux des risques. Bien qu’il existe un certain risque de retard et de faux signaux, la stratégie devrait maintenir une performance stable dans différents environnements de marché grâce à une optimisation et à une amélioration continues.

Code source de la stratégie
/*backtest
start: 2024-11-12 00:00:00
end: 2024-12-11 08:00:00
period: 2h
basePeriod: 2h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Triple Indicator Strategy", shorttitle="TIS", overlay=true)

// --- Inputs ---
var string calcGroup = "Calculation Parameters"
atrLength = input.int(22, title="ATR Period", group=calcGroup)
atrMult = input.float(3.0, title="ATR Multiplier", step=0.1, group=calcGroup)
emaLength = input.int(200, title="EMA Length", group=calcGroup)

// --- ATR and EMA Calculations ---
atr = atrMult * ta.atr(atrLength)
ema200 = ta.ema(close, emaLength)

// --- Chandelier Exit Logic ---
longStop = ta.highest(high, atrLength) - atr
shortStop = ta.lowest(low, atrLength) + atr

var int dir = 1
dir := close > shortStop ? 1 : close < longStop ? -1 : dir

buySignal = dir == 1 and dir[1] == -1
sellSignal = dir == -1 and dir[1] == 1

// --- Price Volume Trend (PVT) ---
pvt = ta.cum((close - close[1]) / close[1] * volume)
pvtSignal = ta.ema(pvt, 21)
pvtBuy = ta.crossover(pvt, pvtSignal)
pvtSell = ta.crossunder(pvt, pvtSignal)

// --- Ninja Indicator ---
ninjaOsc = (ta.ema(close, 3) - ta.ema(close, 13)) / ta.ema(close, 13) * 100
ninjaSignal = ta.ema(ninjaOsc, 24)
ninjaBuy = ta.crossover(ninjaOsc, ninjaSignal)
ninjaSell = ta.crossunder(ninjaOsc, ninjaSignal)

// --- Strategy Conditions ---
longCondition = buySignal and close > ema200 and (pvtBuy or ninjaBuy)
shortCondition = sellSignal and close < ema200 and (pvtSell or ninjaSell)

if longCondition
    strategy.entry("Buy", strategy.long)
    strategy.exit("Exit Long", "Buy", stop=low - atr)

if shortCondition
    strategy.entry("Sell", strategy.short)
    strategy.exit("Exit Short", "Sell", stop=high + atr)

// --- Plotting ---
plot(ema200, title="EMA 200", color=color.blue, linewidth=2)
plotshape(buySignal, title="Chandelier Buy", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small)
plotshape(sellSignal, title="Chandelier Sell", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small)

// --- Labels for Buy/Sell with price ---
if buySignal
    label.new(bar_index, low, "Buy: " + str.tostring(close), color=color.green, style=label.style_label_up, yloc=yloc.belowbar, size=size.small)

if sellSignal
    label.new(bar_index, high, "Sell: " + str.tostring(close), color=color.red, style=label.style_label_down, yloc=yloc.abovebar, size=size.small)

// --- Alerts ---
alertcondition(longCondition, title="Buy Alert", message="Buy Signal Triggered!")
alertcondition(shortCondition, title="Sell Alert", message="Sell Signal Triggered!")