Opérations en ligne de tendance en temps réel basées sur les points pivots et les pentes

Auteur:ChaoZhang est là., Date: 2024-04-26 15h34 et 28h
Les étiquettes:ATRADX- Je vous en prie.

img

Résumé

Cette stratégie utilise des points pivots (PivotHigh et PivotLow) pour identifier les hauts et les bas du prix et dessine des lignes de tendance à la hausse et à la baisse en fonction de ces points.

Principe de stratégie

  1. Utilisez les fonctions ta.pivothigh (() et ta.pivotlow (()) pour détecter les hauts et bas de swing (ph) sur une certaine période de rétrospective.
  2. Calculer la pente des lignes de tendance sur la base de la méthode de calcul choisie (ATR, écart type ou régression linéaire) et l'ajuster en multipliant par un facteur de pente (mult).
  3. En utilisant les prix de pente et de point pivot, calculez les valeurs actuelles de la ligne de tendance à la hausse (supérieure) et de la ligne de tendance à la baisse (inférieure).
  4. Déterminer si le prix de clôture actuel a franchi une ligne de tendance: si le prix de clôture est supérieur à la ligne de tendance haussière, un signal de rupture haussière est généré; si le prix de clôture est inférieur à la ligne de tendance baissière, un signal de rupture baissière est généré.
  5. Tracer les lignes de tendance sur le graphique, avec une option pour étendre les lignes.
  6. Le trading est basé sur les signaux de rupture: long sur une rupture à la hausse et short sur une rupture à la baisse.

Les avantages de la stratégie

  1. La stratégie génère des signaux de négociation basés sur des faits objectifs du comportement des prix (points pivots et lignes de tendance), offrant un certain degré de fiabilité et de stabilité.
  2. La pente des lignes de tendance peut être ajustée dynamiquement en fonction de la volatilité du marché, en s'adaptant aux différentes conditions du marché.
  3. Les utilisateurs peuvent choisir de manière flexible la méthode de calcul de la pente et les paramètres pour optimiser les performances de la stratégie.
  4. La stratégie prévoit à la fois des modes de signal en temps réel et retardé pour répondre aux besoins des différents utilisateurs.
  5. La fonction d'alerte intégrée peut aider les utilisateurs à saisir les opportunités de trading en temps opportun.

Risques stratégiques

  1. Dans les marchés instables ou lorsque les tendances ne sont pas claires, la stratégie peut générer de fréquents faux signaux, entraînant une diminution de la rentabilité.
  2. La performance de la stratégie dépend des paramètres définis; des paramètres inappropriés peuvent entraîner l'échec de la stratégie ou générer des transactions excessives.
  3. En mode signal retardé, en raison de l'existence de backtesting, les résultats réels des transactions peuvent différer des résultats historiques des tests.

Directions d'optimisation de la stratégie

  1. Introduire plus d'indicateurs techniques ou de caractéristiques du comportement des prix, tels que le volume des transactions et la volatilité, pour aider à confirmer les signaux de rupture de la ligne de tendance et améliorer la qualité des signaux.
  2. Filtrer les signaux de trading en tenant compte de facteurs tels que la durée et l'ampleur des ruptures de la ligne de tendance afin de réduire les faux signaux.
  3. Optimiser la gestion des positions et le contrôle des risques, par exemple en ajustant dynamiquement la taille des positions en fonction de la force ou de la volatilité de la tendance, et en fixant des niveaux raisonnables de stop-loss et de take-profit.
  4. Optimiser les paramètres en utilisant des algorithmes d'apprentissage automatique ou d'optimisation pour trouver les meilleures combinaisons de paramètres.

Résumé

Cette stratégie utilise des points pivots et des pentes de lignes de tendance pour construire un système de trading de lignes de tendance en temps réel. En capturant les événements de rupture de lignes de tendance, la stratégie peut négocier dans les premiers stades de la formation de tendance. Bien que la stratégie présente certains avantages, il est toujours nécessaire d'être conscient de ses risques sur les marchés agités et d'améliorer encore la robustesse et la rentabilité de la stratégie en introduisant plus d'informations, en optimisant le filtrage des signaux, la gestion des positions et d'autres méthodes.


/*backtest
start: 2023-04-20 00:00:00
end: 2024-04-25 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy(" only Ajay ", overlay=true)

//------------------------------------------------------------------------------
//Settings
//------------------------------------------------------------------------------{
length = input.int(14, 'Swing Detection Lookback')
mult = input.float(1., 'Slope', minval = 0, step = .1)
calcMethod = input.string('Atr', '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
upCss = input.color(color.teal, 'Up Trendline Color', group = 'Style')
dnCss = input.color(color.red, 'Down Trendline Color', group = 'Style')
showExt = input(true, 'Show Extended Lines')

//------------------------------------------------------------------------------}
//Calculations
//------------------------------------------------------------------------------{
var upper = 0.
var lower = 0.
var slope_ph = 0.
var slope_pl = 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, 'Upper', color = ph ? na : upCss, offset = -offset)
plot(backpaint ? lower : lower + slope_pl * length, 'Lower', color = pl ? na : dnCss, offset = -offset)

//Breakouts
upBreakout = upos > upos[1]
dnBreakout = dnos > dnos[1]

if (upBreakout)
    strategy.entry("Up Breakout", strategy.long)

if (dnBreakout)
    strategy.entry("Down Breakout", strategy.short)

//------------------------------------------------------------------------------}
//Alerts
//------------------------------------------------------------------------------{
alertcondition(upos > upos[1], 'Upward Breakout', 'Price broke the down-trendline upward')
alertcondition(dnos > dnos[1], 'Downward Breakout', 'Price broke the up-trendline downward')

//------------------------------------------------------------------------------}


Relationnée

Plus de