
Cette stratégie combine une moyenne mobile simple (SMA) et une ligne de tendance de retour linéaire en roulant. La condition d’achat est que le prix de clôture soit supérieur à la SMA et à la ligne de tendance, et la condition de sortie est que le prix de clôture soit inférieur à la SMA et à la ligne de tendance.
La stratégie repose principalement sur les éléments suivants:
SMA: moyenne mobile simple calculant la moyenne des prix de clôture sur une période donnée (smaPeriod) comme ligne de signal.
Ligne de tendance en rotation: la ligne droite de la meilleure adéquation dans une fenêtre de temps donnée, calculée en fonction de la régression linéaire. La méthode de calcul est la plus petite puissance.
Conditions d’entrée: faire une entrée supplémentaire lorsque le prix de clôture est supérieur à la moyenne SMA et à la ligne de tendance en rotation.
Conditions de sortie: Sortie à zéro lorsque la clôture est inférieure à la moyenne SMA et à la ligne de tendance en rotation.
Ainsi, la stratégie repose principalement sur des entrées de rupture de signaux de négociation linéaire, ainsi que sur des sorties de rupture de passage. Les opérations de rupture de suivi de tendance sont réalisées en utilisant les caractéristiques de régression de la moyenne des moyennes mobiles et la prise en charge de la moyenne des canaux de régression linéaire.
La stratégie intègre un double filtrage des lignes de tendance et des lignes de tendance, ce qui réduit efficacement les opérations de fausse rupture. En même temps, les lignes de tendance en rotation offrent un support de canal plus précis et rendent les décisions de négociation plus fiables. Les principaux avantages sont les suivants:
Cette stratégie comporte également des risques, principalement liés aux points suivants:
Pour optimiser ces risques, on peut commencer par:
Cette stratégie peut être optimisée à partir des dimensions suivantes:
Ajout d’une fonction d’ajustement dynamique des paramètres des cycles SMA et des points de glissement. Optimisation automatique des paramètres dans différentes conditions de marché.
Augmentation du mécanisme d’élasticité des arrêts de perte.
En combinaison avec d’autres indicateurs de filtrage, tels que les indicateurs de capacité, de force et de faiblesse, il améliore la précision de la prise de décision.
Développer des versions inversées. Faire plus lorsque le prix est proche du bas et qu’il franchit le canal descendant.
La stratégie intègre les signaux de négociation en moyenne mobile et la prise en charge des canaux de lignes de tendance en mouvement, permettant des opérations de suivi de la tendance. Le mécanisme de double filtrage réduit la probabilité de faux bris et améliore la qualité des décisions.
/*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)