Stratégie de cycle de tendance Schaff avec suivi de la dynamique


Date de création: 2023-11-01 16:08:35 Dernière modification: 2023-11-01 16:08:35
Copier: 2 Nombre de clics: 855
1
Suivre
1617
Abonnés

Stratégie de cycle de tendance Schaff avec suivi de la dynamique

Aperçu

Cette stratégie est basée sur l’indicateur de cycle de tendance de Schaff, combiné avec le principe de sur-achat et de survente de Stoch RSI, permettant de juger et de suivre la tendance à l’aide d’indicateurs dynamiques. Lorsque le prix franchit la zone de survente et entre dans la zone de survente, faites plus; lorsque le prix franchit la zone de survente et entre dans la zone de survente, faites moins.

Principe de stratégie

    1. Calculer le MACD, dont la valeur par défaut de la longueur rapide est de 23 et la valeur par défaut de la longueur lente est de 50. Le MACD reflète la différence entre les moyennes mobiles à court et à long terme, utilisée pour déterminer la dynamique des prix.
    1. Le MACD est traité par le RSI de Stoch pour former une valeur K dont la valeur par défaut de Cycle Length est de 10, qui reflète l’indicateur de dynamique du MACD sur-achat sur-vente.
    1. La moyenne mobile pondérée pour la valeur de K, formant la valeur de D, dont la valeur par défaut de 1st %D Length est 3, supprime le bruit dans la valeur de K.
    1. La valeur D est à nouveau traitée par le RSI de Stoch pour former la valeur initiale de STC, dont la valeur par défaut de 2nd %D Length est de 3, formant un signal d’achat et de vente plus précis.
    1. Une moyenne mobile pondérée de la valeur initiale du STC donne la valeur finale du STC, dans la plage 0-100 ◦ Si le STC est supérieur à 75 c’est une zone de surachat, et inférieur à 25 c’est une zone de surachat ◦
    1. Lorsque le STC dépasse 25 du bas vers le haut, faites plus; lorsque le STC dépasse 75 du haut vers le bas, faites moins.

Avantages stratégiques

    1. L’indicateur STC, combiné à la conception du RSI de Stoch, permet d’identifier clairement les zones de survente et de survente, formant ainsi un signal de tendance plus fort.
    1. Le filtre RSI double Stoch permet de filtrer efficacement les fausses ruptures.
    1. Le STC forme une plage normalisée de 0 à 100, ce qui facilite la formation d’un signal de transaction mécanisé.
    1. La stratégie de rétrospective permet de visualiser les marqueurs de rupture et les alertes de fenêtre contextuelle qui permettent de capturer les opportunités de trading de manière claire et intuitive.
    1. La stratégie utilise une combinaison de paramètres optimisés pour contrôler efficacement les transactions inutiles et éviter les transactions trop sensibles.

Risque stratégique

    1. L’indicateur STC est sensible aux paramètres et doit adapter sa composition aux différentes devises et périodes afin de s’adapter aux caractéristiques du marché.
    1. Les stratégies de rupture sont faciles à piéger et nécessitent des arrêts de perte pour contrôler les risques.
    1. Les fausses percées sur les marchés à faible liquidité peuvent déclencher des signaux erronés et nécessitent un filtrage combiné d’indicateurs tels que le volume de transactions.
    1. La stratégie est basée uniquement sur l’indicateur STC et peut être combinée avec d’autres facteurs pour déterminer la confirmation de la tendance et éviter le blocage de l’inversion.
    1. Attention aux points de résistance de soutien critique pour éviter les fausses signaux dans cette zone.

Orientation de l’optimisation de la stratégie

    1. Optimiser la combinaison de paramètres du MACD pour s’adapter à différents cycles et monnaies.
    1. Optimiser les paramètres K et D du RSI de Stoch, pour lisser la courbe STC.
    1. La combinaison d’indicateurs d’échange permet d’éviter les fausses percées dans les marchés à faible liquidité.
    1. Ajouter d’autres indicateurs de jugement pour confirmer les signaux de tendance, tels que les bandes de Brin.
    1. Augmentation des mécanismes de stop-loss, tels que le stop-loss mobile ou le stop-loss ATR.
    1. Ajustement de la position d’entrée, par exemple un retour d’entrée après une rupture, pour assurer la confirmation de la tendance.

Résumer

La stratégie de cycle de tendance de Schaff détermine les zones de survente et de survente à l’aide d’indicateurs dynamiques et juge ainsi les changements de tendance à court terme dans les prix. La stratégie est simple et claire et peut être ajustée en fonction des paramètres de différents marchés, mais il existe également un risque d’effet de levier.

Code source de la stratégie
/*backtest
start: 2023-10-01 00:00:00
end: 2023-10-31 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
// Copyright (c) 2018-present, Alex Orekhov (everget)
// Schaff Trend Cycle script may be freely distributed under the MIT license.
strategy("Schaff Trend Cycle", shorttitle="STC Backtest", overlay=true)

fastLength = input(title="MACD Fast Length",  defval=23)
slowLength = input(title="MACD Slow Length",  defval=50)
cycleLength = input(title="Cycle Length",  defval=10)
d1Length = input(title="1st %D Length",  defval=3)
d2Length = input(title="2nd %D Length",  defval=3)
src = input(title="Source",  defval=close)
highlightBreakouts = input(title="Highlight Breakouts ?", type=bool, defval=true)

macd = ema(src, fastLength) - ema(src, slowLength)

k = nz(fixnan(stoch(macd, macd, macd, cycleLength)))

d = ema(k, d1Length)

kd = nz(fixnan(stoch(d, d, d, cycleLength)))

stc = ema(kd, d2Length)
stc := 	stc > 100 ? 100 : stc < 0 ? 0 : stc

//stcColor = not highlightBreakouts ? (stc > stc[1] ? green : red) : #ff3013
//stcPlot = plot(stc, title="STC", color=stcColor, transp=0)

upper = input(75, defval=75)
lower = input(25, defval=25)

transparent = color(white, 100)

upperLevel = plot(upper, title="Upper", color=gray)
// hline(50, title="Middle", linestyle=dotted)
lowerLevel = plot(lower, title="Lower", color=gray)

fill(upperLevel, lowerLevel, color=#f9cb9c, transp=90)

upperFillColor = stc > upper and highlightBreakouts ? green : transparent
lowerFillColor = stc < lower and highlightBreakouts ? red : transparent

//fill(upperLevel, stcPlot, color=upperFillColor, transp=80)
//fill(lowerLevel, stcPlot, color=lowerFillColor, transp=80)

long =  crossover(stc, lower) ? lower : na
short = crossunder(stc, upper) ? upper : na

long_filt = long and not short
short_filt = short and not long

prev = 0
prev := long_filt ? 1 : short_filt ? -1 : prev[1]

long_final = long_filt and prev[1] == -1
short_final = short_filt and prev[1] == 1

strategy.entry("long", strategy.long, when = long )
strategy.entry("short", strategy.short, when = short)

plotshape(crossover(stc, lower) ? lower : na, title="Crossover", location=location.absolute, style=shape.circle, size=size.tiny, color=green, transp=0)
plotshape(crossunder(stc, upper) ? upper : na, title="Crossunder", location=location.absolute, style=shape.circle, size=size.tiny, color=red, transp=0)

alertcondition(long_final, "Long", message="Long")
alertcondition(short_final,"Short", message="Short")

plotshape(long_final, style=shape.arrowup, text="Long", color=green, location=location.belowbar)
plotshape(short_final, style=shape.arrowdown, text="Short", color=red, location=location.abovebar)