
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.
Les stratégies permettent aux traders de définir les paramètres clés suivants:
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.
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.
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.
L’optimisation peut être réalisée en raccourcissant de manière appropriée le cycle SMA et en aidant d’autres indicateurs.
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é.
/*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")