Stratégie de négociation de crypto-monnaie basée sur les indicateurs MACD et stochastiques

Auteur:ChaoZhang est là., Date: 2024-02-01 11:52:15 Je suis désolé
Les étiquettes:

img

Résumé

Cette stratégie est une stratégie de trading de crypto-monnaie basée sur une combinaison de l'indicateur MACD et des indicateurs stochastiques.

La logique de la stratégie

La stratégie calcule d'abord l'indicateur MACD. Le MACD est l'abréviation de Moving Average Convergence Divergence, qui est un indicateur de tendance. Il se compose d'une ligne rapide et d'une ligne lente, où la ligne rapide est une moyenne mobile exponentielle à court terme et la ligne lente est une moyenne mobile exponentielle à long terme. Lorsque la ligne rapide traverse au-dessus de la ligne lente, elle génère un signal de croix dorée, indiquant un marché haussier. Lorsque la ligne rapide traverse en dessous de la ligne lente, elle génère un signal de croix de mort, indiquant un marché baissier.

Après avoir calculé l'indicateur MACD, la stratégie applique l'indicateur stochastique %K sur le MACD lui-même.

%K = (clôture actuelle - plus bas niveau sur N périodes) / (plus haut niveau sur N périodes - plus bas niveau sur N périodes) * 100

L'indicateur stochastique reflète l'écart de prix par rapport à sa fourchette récente. La fluctuation de %K entre 20-80 représente le prix est négocié en consolidation. Lorsque %K dépasse 20 par le bas, il génère un signal d'achat. Lorsque %K dépasse 80 par le haut, il génère un signal de vente.

Cette stratégie combine les signaux de trading du MACD et du stochastique %K pour trader sur le marché des crypto-monnaies. Elle génère un signal d'achat lorsque %K dépasse 20 et un signal de vente lorsque %K dépasse 80.

Les avantages de la stratégie

Cette stratégie combine l'analyse des tendances et des indicateurs de surachat-survente, qui peuvent identifier efficacement les points de basculement importants sur le marché.

En outre, cette stratégie applique des indicateurs techniques couramment utilisés sur les marchés boursiers au trading de crypto-monnaie.

Risques et solutions

Le plus grand risque de cette stratégie est la forte volatilité du marché des crypto-monnaies, qui produit facilement de faux signaux et conduit à des pertes commerciales.

Pour contrôler ces risques, il est conseillé d'utiliser un stop loss mobile pour verrouiller les bénéfices et éviter de nouvelles pertes.

Directions d'optimisation

Premièrement, la stratégie peut essayer de combiner des moyennes mobiles avec des indicateurs de volatilité tels que les bandes de Bollinger, en établissant des paramètres de volatilité pour identifier la validité des écarts et éviter les faux signaux.

Deuxièmement, des modèles d'apprentissage automatique peuvent être introduits pour s'entraîner sur les données historiques et établir des modèles de réseaux neuronaux de forêt aléatoire ou LSTM pour aider à juger de l'efficacité des signaux d'indicateur.

Troisièmement, ajoutez un mécanisme de stop loss. Lorsque les prix dépassent une certaine plage dans une direction défavorable, déclenchez automatiquement le stop loss pour contrôler les risques.

Conclusion

Cette stratégie combine l'indicateur MACD et l'indicateur stochastique %K, en utilisant la méthode de vérification mutuelle des signaux de deux indicateurs pour formuler une stratégie de trading de crypto-monnaie. Cette stratégie d'indicateur de combinaison peut améliorer la précision des signaux dans une certaine mesure. Mais nous devons également être conscients du risque de sur-complication des indicateurs, ce qui peut introduire des effets de bruit et de retard.


/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("Schaff Trend Cycle Strategy", 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

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

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

//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)

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


Plus de