Stratégie de négociation quantitative basée sur la SMA et la ligne de tendance en rotation

Auteur:ChaoZhang est là., Date: 2024-02-04 15:18:12 Je suis désolé.
Les étiquettes:

img

Résumé

Cette stratégie combine la moyenne mobile simple (SMA) et la ligne de tendance de régression linéaire tournante. Elle définit la condition d'entrée longue lorsque le prix de clôture est au-dessus de la ligne de tendance et de la ligne de tendance, et la condition de sortie lorsque le prix de clôture est en dessous.

La logique de la stratégie

Les éléments clés de cette stratégie sont les suivants:

  1. SMA: moyenne mobile simple, calculant le prix de clôture moyen sur une période (smaPeriod) sous forme de ligne de signal.

  2. Rolling Trendline: Adaptation de la meilleure ligne de régression linéaire sur une fenêtre (fenêtre) comme signal de tendance. Calculé par la méthode ordinaire du moindre carré.

  3. Condition d'entrée: long lorsque le prix de clôture est supérieur à la SMA et à la tendance.

  4. Condition de sortie: position fermée lorsque le prix de clôture est < SMA et ligne de tendance.

Ainsi, la stratégie repose principalement sur la rupture du signal SMA pour l'entrée et la rupture du canal pour la sortie.

Analyse des avantages

Cette stratégie intègre un double filtre de MA et de ligne de tendance, ce qui peut réduire efficacement les faux écarts commerciaux.

  1. Le mécanisme à double filtre évite une fausse rupture et améliore la précision des décisions.
  2. La ligne de tendance en rotation offre un support dynamique des canaux pour des transactions plus précises.
  3. Une logique de trading simple et intuitive, facile à comprendre et à mettre en œuvre.
  4. Les paramètres personnalisables s'adaptent aux différents environnements du marché.

Analyse des risques

Cette stratégie comporte également certains risques:

  1. Les paramètres incorrects de la SMA et de la ligne de tendance peuvent entraîner des transactions manquantes ou trop de fausses ruptures.
  2. Dans les marchés très volatils, le support du canal par la SMA et la tendance peut s'affaiblir.
  3. L'échec de l'évasion peut entraîner des pertes, un stop loss strict est requis.

Quelques orientations d'optimisation pour ces risques:

  1. Optimiser les paramètres pour différents produits.
  2. Augmenter la plage d'arrêt des pertes pour réduire les pertes uniques.
  3. Arrêtez de négocier sur un marché volatil pour ne pas être pris au piège.

Optimisation de la stratégie

Cette stratégie peut être optimisée dans les aspects suivants:

  1. Ajouter des fonctions d'ajustement dynamique pour la période SMA, des paramètres de glissement basés sur les régimes de marché.

  2. Développer un mécanisme d'arrêt de perte élastique.

  3. Ajouter un filtre à partir d'autres indicateurs, par exemple le volume, le RSI pour améliorer la précision des décisions.

  4. Développez une version inverse. Allez long lorsque le prix atteint le bas et rompt le canal à la baisse.

Conclusion

Cette stratégie intègre les signaux de trading de la moyenne mobile et du support de canal de la ligne de tendance en rotation pour mettre en œuvre les opérations suivant la tendance. Le double filtre réduit la probabilité de fausse rupture et améliore la qualité des décisions. Il a des paramètres simples et une logique claire, ce qui est facile à mettre en œuvre et à optimiser. En résumé, cette stratégie constitue un système de trading de rupture de tendance fiable, simple et intuitif.


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

//@version=4
strategy("SMA Strategy with Rolling Trendline", overlay=true)

// Input parameters
smaPeriod = input(14, title="SMA Period")
window = input(20, title="Trendline Window")
startDate = input(timestamp("2023-01-01"), title="Start Date")
endDate = input(timestamp("2023-12-31"), title="End Date")

// Calculating SMA
sma = sma(close, smaPeriod)

// Function to calculate linear regression trendline for a window
linreg_trendline(window) =>
    sumX = 0.0
    sumY = 0.0
    sumXY = 0.0
    sumX2 = 0.0
    for i = 0 to window - 1
        sumX := sumX + i
        sumY := sumY + close[i]
        sumXY := sumXY + i * close[i]
        sumX2 := sumX2 + i * i
    slope = (window * sumXY - sumX * sumY) / (window * sumX2 - sumX * sumX)
    intercept = (sumY - slope * sumX) / window
    slope * (window - 1) + intercept

// Calculating the trendline
trendline = linreg_trendline(window)

// Entry and Exit Conditions
longCondition = close > sma and close < trendline
exitLongCondition = close < sma and close > trendline

// Strategy logic
if (true)
    if (longCondition)
        strategy.entry("Long", strategy.long)
    if (exitLongCondition)
        strategy.close("Long")

// Plotting
plot(sma, title="Simple Moving Average", color=color.blue)
plot(trendline, title="Rolling Trendline", color=color.red)
plotshape(series=longCondition, title="Enter Trade", location=location.belowbar, color=color.green, style=shape.triangleup)
plotshape(series=exitLongCondition, title="Exit Trade", location=location.abovebar, color=color.red, style=shape.triangledown)


Plus de