Tendance suivant une stratégie basée sur des moyennes mobiles

Auteur:ChaoZhang est là., Date: 2023-11-27 15h57 et 15h
Les étiquettes:

img

Résumé

Il utilise l'indicateur Ichimoku Cloud pour déterminer la direction de la tendance combinée à la moyenne mobile de 200 jours pour filtrer les signaux, suivant ainsi la tendance.

Principe de stratégie

La stratégie utilise principalement la ligne de conversion et la ligne de base de Ichimoku Cloud pour juger de la direction de la tendance. La ligne de conversion est la moyenne de prix médiane de 9 jours et la ligne de base est la moyenne de prix médiane de 26 jours. Un signal d'achat est généré lorsque la ligne de conversion traverse au-dessus de la ligne de base et un signal de vente lorsqu'elle traverse en dessous.

La stratégie utilise également la moyenne mobile de 200 jours pour filtrer les signaux. Seulement lorsque le prix de clôture est au-dessus de la ligne de 200 jours, un signal d'achat sera déclenché. Cela filtre la plupart des faux signaux.

Du côté de la sortie, la stratégie utilise simplement la ligne de conversion qui traverse la ligne de base comme signal de clôture.

Analyse des avantages

La stratégie combine l'indicateur de jugement de tendance Ichimoku Cloud et l'indicateur de filtrage de tendance à long terme ligne de 200 jours, qui peut effectivement suivre les tendances et filtrer la plupart des faux signaux.

Comparée à l'utilisation uniquement de moyennes mobiles, cette stratégie permet de mieux saisir les points tournants de la tendance et d'ajuster les positions en temps opportun.

Analyse des risques

La stratégie s'appuie principalement sur le Nuage Ichimoku pour déterminer la direction de la tendance, ce qui peut également générer de faux signaux.

En outre, des paramètres incorrects peuvent également entraîner de mauvaises performances de la stratégie. Si le paramètre de ligne de conversion est trop court, de faux signaux se forment facilement; si le paramètre de ligne de base est trop long, l'effet de suivi se détériore.

Directions d'optimisation

Envisagez d'intégrer d'autres indicateurs pour améliorer la qualité du signal, comme l'indicateur KDJ pour filtrer les signaux dans les zones de surachat/survente.

Sur le côté des paramètres, testez plus de combinaisons, telles que l'ajustement du paramètre de la ligne de conversion à 5 ou 7 jours pour des signaux de trading plus sensibles.

En outre, envisagez de désactiver la stratégie dans certains environnements volatiles pour éviter l'impact des fluctuations sauvages.

Conclusion

La stratégie intègre les avantages du jugement des tendances et des indicateurs de filtrage à long terme, qui peuvent suivre efficacement les tendances à moyen et à long terme. Pendant ce temps, les paramètres et les mesures de contrôle des risques doivent également être continuellement optimisés pour réduire les faux signaux et les impacts des fluctuations.


/*backtest
start: 2023-10-27 00:00:00
end: 2023-11-26 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy(title="TK Cross > EMA200 Strat",  overlay=true)

ema200 = ema(close, 200)
conversionPeriods = input(9, minval=1, title="Conversion Line Periods"),
basePeriods = input(26, minval=1, title="Base Line Periods")
laggingSpan2Periods = input(52, minval=1, title="Lagging Span 2 Periods"),
displacement = input(26, minval=1, title="Displacement")

donchian(len) => avg(lowest(len), highest(len))

conversionLine = donchian(conversionPeriods)
baseLine = donchian(basePeriods)
leadLine1 = avg(conversionLine, baseLine)
leadLine2 = donchian(laggingSpan2Periods)

plot(conversionLine, color=#0496ff, title="Conversion Line", linewidth=3)
plot(baseLine, color=#991515, title="Base Line", linewidth=3)
plot(close, offset = -displacement, color=#459915, title="Lagging Span")

p1 = plot(leadLine1, offset = displacement, color=green,
 title="Lead 1")
p2 = plot(leadLine2, offset = displacement, color=red, 
 title="Lead 2")
fill(p1, p2, color = leadLine1 > leadLine2 ? green : red)

plot(ema200, color=purple, linewidth=4,title='ema200')
strategy.initial_capital = 50000

strategy.entry('tkcross', strategy.long, strategy.initial_capital / close, when=conversionLine>baseLine and close > ema200)
strategy.close('tkcross', when=conversionLine<baseLine)


start = input(2, minval=0, maxval=10, title="Start - Default = 2 - Multiplied by .01")
increment = input(2, minval=0, maxval=10, title="Step Setting (Sensitivity) - Default = 2 - Multiplied by .01" )
maximum = input(2, minval=1, maxval=10, title="Maximum Step (Sensitivity) - Default = 2 - Multiplied by .10")
sus = input(true, "Show Up Trending Parabolic Sar")
sds = input(true, "Show Down Trending Parabolic Sar")
disc = input(false, title="Start and Step settings are *.01 so 2 = .02 etc, Maximum Step is *.10 so 2 = .2")
//"------Step Setting Definition------"
//"A higher step moves SAR closer to the price action, which makes a reversal more likely."
//"The indicator will reverse too often if the step is set too high."

//"------Maximum Step Definition-----")
//"The sensitivity of the indicator can also be adjusted using the Maximum Step."
//"While the Maximum Step can influence sensitivity, the Step carries more weight"
//"because it sets the incremental rate-of-increase as the trend develops"

startCalc = start * .01
incrementCalc = increment * .01
maximumCalc = maximum * .10

sarUp = sar(startCalc, incrementCalc, maximumCalc)
sarDown = sar(startCalc, incrementCalc, maximumCalc)

colUp = close >= sarDown ? lime : na
colDown = close <= sarUp ? red : na

plot(sus and sarUp ? sarUp : na, title="Up Trending SAR", style=circles, linewidth=3,color=colUp)
plot(sds and sarDown ? sarDown : na, title="Up Trending SAR", style=circles, linewidth=3,color=colDown)





Plus de