Stratégie quantitative de croisement de lignes de tendance multiples

ATR SMA
Date de création: 2024-12-20 14:26:41 Dernière modification: 2024-12-20 14:26:41
Copier: 1 Nombre de clics: 427
1
Suivre
1617
Abonnés

Stratégie quantitative de croisement de lignes de tendance multiples

Aperçu de la stratégie

La stratégie est un système de trading intelligent basé sur plusieurs ruptures de lignes de tendance. Il identifie de manière dynamique les points de résistance de soutien essentiels, calcule la pente de la ligne de tendance en combinaison avec de multiples indicateurs techniques et effectue des transactions lorsque le prix franchit la ligne de tendance. La stratégie est capable non seulement de capturer les points de basculement des tendances du marché, mais également d’adapter les paramètres à différents environnements de marché.

Principe de stratégie

La logique centrale de la stratégie comprend trois parties principales: d’abord, identifier les hauts et les bas critiques à travers la période de rétrocession, formant un niveau de résistance de soutien initial; ensuite, calculer dynamiquement la pente de la ligne de tendance en fonction de la méthode de calcul choisie (ATR, standard deviation ou régression linéaire), permettant ainsi à la ligne de tendance de mieux s’adapter aux fluctuations du marché; enfin, déclencher un signal de négociation en cas de rupture en surveillant la relation entre les prix et la ligne de tendance. Le système contient également un mécanisme pour empêcher la rétroaction d’être surmodélisée, simulant le véritable environnement de négociation par des paramètres de backpainting.

Avantages stratégiques

  1. Adaptabilité: la stratégie peut s’adapter à différents environnements de marché grâce à plusieurs méthodes de calcul de la pente et à des paramètres réglables
  2. Contrôle des risques: la capacité d’ajustement dynamique des lignes de tendance aide à identifier les changements de tendance en temps opportun et à réduire les pertes causées par les fausses ruptures
  3. Bonne visualisation: les stratégies fournissent des commentaires visuels clairs, y compris les extensions de lignes de tendance et les marqueurs de rupture
  4. Mécanisme de confirmation du signal: pour assurer la fiabilité du signal de transaction par une vérification à conditions multiples

Risque stratégique

  1. Des signaux erronés peuvent survenir en cas de forte volatilité du marché
  2. Le retard dans le calcul de la ligne de tendance peut entraîner un léger retard dans le temps d’entrée
  3. Une mauvaise sélection de paramètres peut entraîner une survente ou une perte d’opportunité
  4. Faux signaux de rupture peuvent être fréquents dans les marchés de stockage horizontal

Orientation de l’optimisation de la stratégie

  1. Introduction d’indicateurs de quantité de trafic pour vérifier l’efficacité de la percée
  2. Ajout d’un filtre de volatilité du marché pour ajuster les paramètres pendant les périodes de forte volatilité
  3. Intégration d’autres indicateurs techniques pour améliorer la précision du signal
  4. Développement de mécanismes d’ajustement des paramètres adaptatifs
  5. Des méthodes de calcul intelligentes pour augmenter le stop-loss et le profit

Résumer

La stratégie utilise l’intégration de plusieurs méthodes d’analyse technique pour construire un système de trading fiable pour briser les lignes de tendance. Son avantage réside dans sa capacité à s’adapter dynamiquement aux changements du marché tout en fournissant des signaux de trading clairs. Bien qu’il existe des risques inhérents, la stabilité et la rentabilité de la stratégie peuvent être considérablement améliorées grâce à un réglage de paramètres raisonnable et à une optimisation continue.

Code source de la stratégie
/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-18 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Alexgoldhunter

//@version=5
strategy("Trendlines with Breaks Strategy [AlexGoldHunter]", overlay=true)

// Input parameters
length = input.int(14, title="Swing Detection Lookback")
mult = input.float(1.0, title="Slope", minval=0, step=0.1)
calcMethod = input.string('Atr', title="Slope Calculation Method", options=['Atr','Stdev','Linreg'])
backpaint = input(true, tooltip='Backpainting offset displayed elements in the past. Disable backpainting to see real-time information returned by the indicator.')

// Style settings
upCss = input.color(color.teal, title="Up Trendline Color", group="Style")
dnCss = input.color(color.red, title="Down Trendline Color", group="Style")
showExt = input(true, title="Show Extended Lines")

// Calculations
var upper = 0.0
var lower = 0.0
var slope_ph = 0.0
var slope_pl = 0.0

var offset = backpaint ? length : 0

n = bar_index
src = close

ph = ta.pivothigh(length, length)
pl = ta.pivotlow(length, length)

// Slope Calculation Method
slope = switch calcMethod
    'Atr'    => ta.atr(length) / length * mult
    'Stdev'  => ta.stdev(src, length) / length * mult
    'Linreg' => math.abs(ta.sma(src * n, length) - ta.sma(src, length) * ta.sma(n, length)) / ta.variance(n, length) / 2 * mult

// Get slopes and calculate trendlines
slope_ph := ph ? slope : slope_ph
slope_pl := pl ? slope : slope_pl

upper := ph ? ph : upper - slope_ph
lower := pl ? pl : lower + slope_pl

var upos = 0
var dnos = 0
upos := ph ? 0 : close > upper - slope_ph * length ? 1 : upos
dnos := pl ? 0 : close < lower + slope_pl * length ? 1 : dnos

// Extended Lines
// var uptl  = line.new(na, na, na, na, color=upCss, style=line.style_dashed, extend=extend.right)
// var dntl  = line.new(na, na, na, na, color=dnCss, style=line.style_dashed, extend=extend.right)

// if ph and showExt
//     uptl.set_xy1(n - offset, backpaint ? ph : upper - slope_ph * length)
//     uptl.set_xy2(n - offset + 1, backpaint ? ph - slope : upper - slope_ph * (length + 1))

// if pl and showExt
//     dntl.set_xy1(n - offset, backpaint ? pl : lower + slope_pl * length)
//     dntl.set_xy2(n - offset + 1, backpaint ? pl + slope : lower + slope_pl * (length + 1))

// Plots
plot(backpaint ? upper : upper - slope_ph * length, title="Upper", color=ph ? na : upCss, offset=-offset)
plot(backpaint ? lower : lower + slope_pl * length, title="Lower", color=pl ? na : dnCss, offset=-offset)

// Breakouts
plotshape(upos > upos[1] ? low : na, title="Upper Break", 
  style=shape.labelup, location=location.absolute, color=upCss, text="alex_buy_now", textcolor=color.white, size=size.tiny)
plotshape(dnos > dnos[1] ? high : na, title="Lower Break", 
  style=shape.labeldown, location=location.absolute, color=dnCss, text="alex_sell_now", textcolor=color.white, size=size.tiny)

// Strategy: Buy and Sell conditions
if (upos > upos[1])
    strategy.entry("Buy", strategy.long)
if (dnos > dnos[1])
    strategy.entry("Sell", strategy.short)

// Alerts
alertcondition(upos > upos[1], title="Upward Breakout", message="Price broke the down-trendline upward")
alertcondition(dnos > dnos[1], title="Downward Breakout", message="Price broke the up-trendline downward")