Stratégie de tendance croisée dynamique de la SMA

Auteur:ChaoZhang est là., Date: 2024-02-05 12:14:12 Les résultats de l'enquête
Les étiquettes:

img

Résumé

Cette stratégie est une stratégie de croisement simple de moyenne mobile (SMA) adaptée aux marchés de crypto-monnaie. Elle utilise des SMA rapides, moyennes et lentes pour identifier les signaux d'entrée et de sortie potentiels. Lorsque le SMA rapide traverse le SMA moyen, un signal d'achat est généré. Lorsque le SMA rapide traverse le SMA moyen, un signal de vente est généré.

La logique de la stratégie

Paramètres définis

La stratégie permet aux opérateurs de définir les paramètres clés suivants:

  • Source de prix: prix de clôture ou autres prix
  • Considérez les barres incomplètes ou non
  • Méthode de prévision de la SMA: prédiction de décalage ou prédiction de régression linéaire
  • Longueur de SMA rapide: par défaut 7
  • Longueur moyenne de la SMA: 30 par défaut
  • Longueur de la SMA lente: 50 par défaut
  • Fonds du compte
  • Pourcentage de risque par transaction

Calcul de la SMA

Les SMA rapides, moyennes et lentes sont calculées sur la base des longueurs de SMA définies par l'utilisateur.

Signaux de négociation

Lorsque la SMA rapide traverse la SMA moyenne, un signal d'achat est généré.

Risque et dimensionnement des positions

La stratégie calcule le principal nominal par transaction en fonction des fonds du compte et du pourcentage de risque acceptable par transaction.

Analyse des avantages

  • Utilise plusieurs SMA pour identifier les tendances avec une plus grande conviction
  • Méthodes facultatives de prévision de la SMA pour une plus grande adaptabilité
  • Des signaux commerciaux simples et clairs faciles à mettre en œuvre
  • Inclut la gestion scientifique des risques et des positions

Analyse des risques

  • La nature en retard des SMA peut manquer les points d'inversion des prix
  • Seules les indications techniques sont prises en considération sans combiner les indicateurs fondamentaux
  • Ne tient pas compte de l'impact d'événements soudains

Peut optimiser en raccourcissant les périodes de SMA, en ajoutant d'autres indicateurs, etc.

Directions d'optimisation

  • Ajouter d'autres indicateurs pour filtrer les faux signaux
  • Incorporer l'analyse fondamentale
  • Optimiser les paramètres de la période SMA
  • Optimiser les paramètres de dimensionnement des risques et des positions

Conclusion

Cette stratégie intègre les règles de croisement SMA, la gestion des risques et le dimensionnement des positions pour un système de suivi de tendance robuste adapté aux marchés cryptographiques.


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


Plus de