Stratégie de suivi de tendance basée sur la moyenne mobile et la super tendance


Date de création: 2023-11-14 16:23:42 Dernière modification: 2023-11-14 16:23:42
Copier: 0 Nombre de clics: 733
1
Suivre
1617
Abonnés

Stratégie de suivi de tendance basée sur la moyenne mobile et la super tendance

Aperçu

Cette stratégie combine l’indicateur de ligne moyenne et l’indicateur de tendance supérieure pour effectuer des opérations de suivi de la tendance. Faites plus lorsque la tendance est à la hausse et faites moins lorsque la tendance est à la baisse.

Principe de stratégie

  1. Calculer une moyenne mobile pondérée MA. Utiliser le volume de transactions comme poids pour calculer la moyenne pondérée des prix sur une période donnée.

  2. La moyenne mobile de Hull est calculée à partir de la MA. La moyenne mobile de Hull est plus sensible aux variations de prix.

  3. Calculer l’indicateur hypertrend. L’indicateur hypertrend, combiné à l’ATR, permet de détecter les variations de la tendance des prix.

  4. Lorsque le prix de clôture dépasse la barre supérieure, faites plus; lorsque le prix de clôture tombe en dessous de la barre inférieure, faites moins.

  5. Tracez des indicateurs auxiliaires tels que le prix d’ouverture, le prix de clôture, le prix le plus élevé et le prix le plus bas pour observer plus intuitivement les variations des prix.

  6. Les décisions d’achat et de vente sont basées sur des indicateurs croisés.

Analyse des avantages

  1. Cette stratégie, combinée à une indication de la moyenne et à une indication de la tendance, permet de capturer plus précisément les changements de tendance.

  2. La ligne moyenne de Hull est plus sensible aux variations de prix, ce qui permet de détecter les changements de tendance en temps opportun.

  3. L’indicateur de tendance supérieure peut être dynamiquement ajusté à la hausse ou à la baisse en fonction des fluctuations du marché.

  4. Les indicateurs auxiliaires permettent de visualiser les fluctuations des prix et de juger en fonction des signaux des indicateurs.

  5. Il est possible d’optimiser les paramètres de stratégie avec un grand espace, et d’ajuster les paramètres tels que la périodicité de la moyenne, le multiplicateur de la tendance supérieure.

Analyse des risques

  1. Il est possible de générer de faux signaux lors d’une correction de la situation, ce qui entraîne des transactions inutiles.

  2. Il est nécessaire de surveiller plusieurs indicateurs en même temps, et la stratégie est relativement complexe à mettre en œuvre.

  3. Il est nécessaire d’ajuster les paramètres de manière à ce qu’ils correspondent aux caractéristiques des différentes variétés.

  4. Il est nécessaire de contrôler strictement les stop-loss pour éviter des pertes individuelles excessives.

  5. Il est possible que le nombre de transactions soit plus élevé et que l’impact des frais de transaction soit contrôlé.

Direction d’optimisation

  1. Il est possible de tester les paramètres de différentes moyennes, en choisissant une moyenne plus sensible au marché.

  2. Il est possible de tester différents multiplicateurs de super-tendance, en sélectionnant des valeurs capables de saisir en temps opportun les changements de tendance.

  3. Il peut être combiné avec un indicateur de volatilité pour réduire la position lorsque la volatilité augmente.

  4. Les conditions de rupture peuvent être ajoutées pour éviter de faux signaux lors de la correction.

  5. Il est possible d’optimiser les stratégies de stop loss pour les rendre plus adaptées aux caractéristiques du marché.

Résumer

Cette stratégie combine des indicateurs de ligne moyenne et des indicateurs de tendance supérieure pour déterminer la direction de la tendance et pour suivre la tendance. L’avantage est que les indicateurs peuvent être vérifiés les uns par les autres, ce qui permet de déterminer la tendance avec plus de précision.

Code source de la stratégie
/*backtest
start: 2022-11-07 00:00:00
end: 2023-11-13 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © rajukpatel

//@version=5
strategy('My RK Strategy with Alert', shorttitle='My RK Strategy with Alert', overlay=true )
src5 = input(close)

tf = input(1440)
len5 = timeframe.isintraday and timeframe.multiplier >= 1 ? tf / timeframe.multiplier * 7 : timeframe.isintraday and timeframe.multiplier < 60 ? 60 / timeframe.multiplier * 24 * 7 : 7

ma = ta.ema(src5 * volume, len5) / ta.ema(volume, len5)


//script taken from https://www.tradingview.com/script/kChCRRZI-Hull-Moving-Average/

src1 = ma

p(src1, len5) =>
    n = 0.0
    s = 0.0
    for i = 0 to len5 - 1 by 1
        w = (len5 - i) * len5
        n += w
        s += src5[i] * w
        s
    s / n

hm = 2.0 * p(src1, math.floor(len5 / 3)) - p(src1, len5)
vhma = p(hm, math.floor(math.sqrt(len5)))
lineColor = vhma > vhma[1] ? color.lime : color.red
plot(vhma, title='VHMA', color=lineColor, linewidth=3)
hColor = true
vis = true
hu = hColor ? vhma > vhma[2] ? #00ff00 : #ff0000 : #ff9800

vl = vhma[0]
ll = vhma[1]
m1 = plot(vl, color=hu, linewidth=1, transp=60)
m2 = plot(vis ? ll : na, color=hu, linewidth=2, transp=80)

fill(m1, m2, color=hu, transp=70)
//

b = timeframe.isintraday and timeframe.multiplier >= 1 ? 60 / timeframe.multiplier * 7 : timeframe.isintraday and timeframe.multiplier < 60 ? 60 / timeframe.multiplier * 24 * 7 : 7



//
res5 = input.timeframe('D')

o = request.security(syminfo.tickerid, res5, open, barmerge.gaps_off, barmerge.lookahead_on)
c = request.security(syminfo.tickerid, res5, close, barmerge.gaps_off, barmerge.lookahead_on)
hz = request.security(syminfo.tickerid, res5, high, barmerge.gaps_off, barmerge.lookahead_on)
l = request.security(syminfo.tickerid, res5, low, barmerge.gaps_off, barmerge.lookahead_on)



col = c >= o ? color.lime : color.red

ppo = plot(b ? o >= c ? hz : l : o, color=col, title='Open', style=plot.style_stepline, transp=100)
ppc = plot(b ? o <= c ? hz : l : c, color=col, title='Close', style=plot.style_stepline, transp=100)

plot(b and hz > c ? hz : na, color=col, title='High', style=plot.style_circles, linewidth=2, transp=60)
plot(b and l < c ? l : na, color=col, title='Low', style=plot.style_circles, linewidth=2, transp=60)

fill(ppo, ppc, col, transp=90)

//
// INPUTS //
st_mult = input.float(1, title='SuperTrend Multiplier', minval=0, maxval=100, step=0.01)
st_period = input.int(50, title='SuperTrend Period', minval=1)

// CALCULATIONS //
up_lev = l - st_mult * ta.atr(st_period)
dn_lev = hz + st_mult * ta.atr(st_period)

up_trend = 0.0
up_trend := c[1] > up_trend[1] ? math.max(up_lev, up_trend[1]) : up_lev

down_trend = 0.0
down_trend := c[1] < down_trend[1] ? math.min(dn_lev, down_trend[1]) : dn_lev

// Calculate trend var
trend = 0
trend := c > down_trend[1] ? 1 : c < up_trend[1] ? -1 : nz(trend[1], 1)

// Calculate SuperTrend Line
st_line = trend == 1 ? up_trend : down_trend

// Plotting
//plot(st_line[1], color = trend == 1 ? color.green : color.red , style = plot.style_cross, linewidth = 2, title = "SuperTrend")
buy = ta.crossover(c, st_line)
sell = ta.crossunder(c, st_line)
signal = input(false)

/////////////// Plotting /////////////// 
plotshape(signal and buy, style=shape.triangleup, size=size.normal, location=location.belowbar, color=color.new(color.lime, 0))
plotshape(signal and sell, style=shape.triangledown, size=size.normal, location=location.abovebar, color=color.new(color.red, 0))


if buy
    strategy.entry('My Long Entry Id', strategy.long)

if sell
    strategy.entry('My Short Entry Id', strategy.short)