
Il s’agit d’une stratégie de trading quantitative basée sur des signaux de croisement de deux lignes homogènes. La stratégie utilise deux moyennes mobiles, l’une comme ligne de signal principale et l’autre comme ligne de signal lisse.
La stratégie utilise deux niveaux de calcul des moyennes mobiles: d’abord, une moyenne mobile de base est calculée (la période par défaut est de 9) et ensuite, une deuxième ligne d’équilibrage est effectuée (la période par défaut est de 5). La stratégie offre un choix de plusieurs méthodes de calcul des moyennes, y compris les moyennes mobiles simples (SMA), les moyennes mobiles indicielles (EMA), les moyennes mobiles lisse (SMMA), les moyennes mobiles pondérées (WMA) et les moyennes mobiles pondérées (VWMA).
Il s’agit d’une version améliorée de la stratégie classique de suivi des tendances, qui offre une stabilité accrue tout en conservant la simplicité de la stratégie grâce à une conception à deux couches de moyennes mobiles. La stratégie a une bonne extensibilité et flexibilité, et peut s’adapter à différents environnements de marché grâce à l’optimisation des paramètres et à l’extension des fonctionnalités.
/*backtest
start: 2019-12-23 08:00:00
end: 2024-11-25 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Moving Average 1.0 Strategy", overlay=true)
// Input for Moving Average Length
len = input.int(9, minval=1, title="Length")
src = input(close, title="Source")
offset = input.int(title="Offset", defval=0, minval=-500, maxval=500)
// Calculate the Moving Average
out = ta.sma(src, len)
// Plot the Moving Average
plot(out, color=color.blue, title="MA", offset=offset)
// Function to choose the type of moving average
ma(source, length, type) =>
switch type
"SMA" => ta.sma(source, length)
"EMA" => ta.ema(source, length)
"SMMA (RMA)" => ta.rma(source, length)
"WMA" => ta.wma(source, length)
"VWMA" => ta.vwma(source, length)
// Input for Smoothing Method and Length
typeMA = input.string(title="Method", defval="SMA", options=["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"], group="Smoothing")
smoothingLength = input.int(title="Smoothing Length", defval=5, minval=1, maxval=100, group="Smoothing")
// Calculate the Smoothing Line
smoothingLine = ma(out, smoothingLength, typeMA)
// Plot the Smoothing Line
plot(smoothingLine, title="Smoothing Line", color=color.rgb(120, 66, 134, 35), offset=offset)
// Strategy Logic
if (ta.crossover(close, smoothingLine))
strategy.entry("Buy", strategy.long)
if (ta.crossunder(close, smoothingLine))
strategy.entry("Sell", strategy.short)