Stratégie de tendance croisée de moyenne mobile dynamique


Date de création: 2024-02-05 12:14:12 Dernière modification: 2024-02-05 12:14:12
Copier: 0 Nombre de clics: 589
1
Suivre
1617
Abonnés

Stratégie de tendance croisée de moyenne mobile dynamique

Aperçu

Cette stratégie est une stratégie de croisement de moyenne mobile simple (SMA) applicable au marché des crypto-monnaies. Elle utilise trois groupes de SMA: rapide, moyen et lent pour identifier les signaux potentiels d’entrée et de sortie. Lorsqu’un SMA rapide traverse un SMA moyen, il génère un signal d’achat; lorsqu’un SMA rapide traverse un SMA moyen, il génère un signal de vente.

Principe de stratégie

Réglages des paramètres

Les stratégies permettent aux traders de définir les paramètres clés suivants:

  • Sources de données sur les prix: prix de clôture ou autres prix
  • Est-ce que la ligne K incomplète est prise en compte
  • Prévisions par SMA: projection horizontale ou projection de régression linéaire
  • Durée du SMA rapide: 7 par défaut
  • Longueur moyenne SMA: 30 par défaut
  • Longueur SMA lente: 50 par défaut
  • Les fonds du compte
  • Pourcentage de risque par transaction

Calcul du SMA

Les SMA rapides, les SMA moyens et les SMA lents sont calculés en fonction de la longueur de SMA définie par l’utilisateur.

Signaux de négociation

Un signal de vente est généré lorsque le SMA rapide traverse le SMA moyen. Un signal de vente est généré lorsque le SMA rapide traverse le SMA moyen.

Gestion des risques et des positions

La stratégie combine les fonds du compte et le ratio de risque supporté par chaque transaction pour calculer le capital nominal de chaque transaction. La stratégie est ensuite combinée avec l’ATR pour calculer la marge de stop loss et définir la position spécifique de chaque transaction.

Analyse des avantages

  • Plus de jugement en utilisant des groupes de SMA pour identifier les tendances
  • Les méthodes de prévision de la SMA sont facultatives et plus adaptables
  • Les signaux de transaction sont simples, clairs et faciles à mettre en œuvre
  • Une gestion intégrée des risques et des positions, plus scientifique

Analyse des risques

  • Le SMA lui-même étant en retard, il peut manquer le point de basculement
  • Il n’y a pas d’indicateurs de base, seulement des indicateurs techniques.
  • L’impact des événements imprévus n’est pas pris en compte

L’optimisation peut être réalisée en raccourcissant de manière appropriée le cycle SMA et en aidant d’autres indicateurs.

Direction d’optimisation

  • Combinaison avec d’autres indicateurs pour filtrer les fausses signaux
  • Ajouter un jugement fondamental
  • Optimiser les paramètres de la période SMA
  • Optimisation des paramètres de calcul du risque et de la position

Résumer

Cette stratégie intègre plusieurs fonctions de jugement croisé SMA, de gestion des risques et d’optimisation des positions. C’est une stratégie de suivi des tendances adaptée au marché crypto. Les traders peuvent ajuster les paramètres en fonction de leur propre style de négociation et de l’environnement du marché.

Code source de la stratégie
/*backtest
start: 2024-01-05 00:00:00
end: 2024-02-04 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Onchain Edge Trend SMA Strategy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10)

// Configuration Parameters
priceSource = input(close, title="Price Source")
includeIncompleteBars = input(true, title="Consider Incomplete Bars")
maForecastMethod = input(defval="flat", options=["flat", "linreg"], title="Moving Average Prediction Method")
linearRegressionLength = input(3, title="Linear Regression Length")
fastMALength = input(7, title="Fast Moving Average Length")
mediumMALength = input(30, title="Medium Moving Average Length")
slowMALength = input(50, title="Slow Moving Average Length")
tradingCapital = input(100000, title="Trading Capital")
tradeRisk = input(1, title="Trade Risk (%)")

// Calculation of Moving Averages
calculateMA(source, period) => sma(source, period)
predictMA(source, forecastLength, regressionLength) => 
    maForecastMethod == "flat" ? source : linreg(source, regressionLength, forecastLength)

offset = includeIncompleteBars ? 0 : 1
actualSource = priceSource[offset]

fastMA = calculateMA(actualSource, fastMALength)
mediumMA = calculateMA(actualSource, mediumMALength)
slowMA = calculateMA(actualSource, slowMALength)

// Trading Logic
enterLong = crossover(fastMA, mediumMA)
exitLong = crossunder(fastMA, mediumMA)

// Risk and Position Sizing
riskCapital = tradingCapital * tradeRisk / 100
lossThreshold = atr(14) * 2
tradeSize = riskCapital / lossThreshold

if (enterLong)
    strategy.entry("Enter Long", strategy.long, qty=tradeSize)

if (exitLong)
    strategy.close("Enter Long")

// Display Moving Averages
plot(fastMA, color=color.blue, linewidth=2, title="Fast Moving Average")
plot(mediumMA, color=color.purple, linewidth=2, title="Medium Moving Average")
plot(slowMA, color=color.red, linewidth=2, title="Slow Moving Average")