La stratégie de croisement de la moyenne mobile double est une stratégie de trading classique qui suit les tendances. Elle utilise deux moyennes mobiles: une moyenne mobile rapide et une moyenne mobile lente. Lorsque la moyenne mobile rapide dépasse la moyenne mobile lente, elle est appelée une croix dorée, indiquant une tendance haussière potentielle, et une position longue est ouverte. Lorsque la moyenne mobile rapide dépasse la moyenne mobile lente, elle est appelée une croix de mort, indiquant une tendance baissière potentielle, et une position courte est ouverte.
Le noyau de cette stratégie est d'utiliser les caractéristiques de tendance des moyennes mobiles et des signaux de croisement pour déterminer la direction de la tendance et le moment de l'entrée.
/*backtest start: 2023-05-11 00:00:00 end: 2024-05-16 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 //============================================================================== // A baseline strategy with a well known concept, golden cross & death cross. // Support for both Simple & Exponential moving averages. // Support for long & short stop losses as a percentage.:well //============================================================================== strategy("Basic Moving Average Crosses", overlay=true) //------------------------------------------------------------------------------ // configuration //------------------------------------------------------------------------------ maQuickLength = input(50, title="Quick MA Length") maSlowLength = input(200, title="Quick MA Length") useSma = input(true, title="Use SMA? If false, EMA is used.") maQuick = useSma ? ta.sma(close, maQuickLength) : ta.ema(close, maQuickLength) maSlow = useSma ? ta.sma(close, maSlowLength) : ta.ema(close, maSlowLength) stop_loss_percentage = input(2.0, title="Stop Loss (%)") var float longStopLevel = na var float shortStopLevel = na bool isGoldenCross = ta.crossover(maQuick, maSlow) bool isDeathCross = ta.crossunder(maQuick, maSlow) //------------------------------------------------------------------------------ // position opening logic //------------------------------------------------------------------------------ if(strategy.position_size == 0) // Golden cross, enter a long position if(isGoldenCross) strategy.entry("Buy", strategy.long) longStopLevel := close - close * stop_loss_percentage/100.0 strategy.exit("StopLossLong", "Buy", stop=longStopLevel) // Death cross, enter short position else if(isDeathCross) strategy.entry("Sell", strategy.short) shortStopLevel := close + close * stop_loss_percentage/100.0 strategy.exit("StopLossShort", "Sell", stop=shortStopLevel) //------------------------------------------------------------------------------ // position closing logic //------------------------------------------------------------------------------ else // Close long position on death cross if(strategy.position_size > 0 and isDeathCross) strategy.close("Buy") // Close short position on golden cross else if(strategy.position_size < 0 and isGoldenCross) strategy.close("Sell") //------------------------------------------------------------------------------ // ploting //------------------------------------------------------------------------------ plot(maQuick, color=color.yellow) plot(maSlow, color=color.blue)