Cette stratégie est une approche quantitative de négociation basée sur le croisement entre l'oscillateur de prix décentralisé (DPO) et sa moyenne mobile exponentielle (EMA) à 4 périodes. Le concept de base est de capturer les changements de tendance du marché en comparant la relation entre le DPO et sa EMA à 4 périodes pour générer des signaux d'achat et de vente.
La logique de base comprend les étapes clés suivantes: 1. Calculer la moyenne mobile simple (SMA) à 24 périodes comme référence 2. Déplacer la SMA vers l'avant par (longueur/2+1) périodes pour obtenir la valeur SMA déplacée Soustraire la SMA déplacée du prix de clôture pour obtenir la valeur de la DPO 4. Calculer l'EMA à 4 périodes du DPO 5. Générer un signal d'achat lorsque le DPO dépasse sa EMA à 4 périodes 6. Générer un signal de vente lorsque le DPO dépasse son EMA à 4 périodes
La DPO-EMA Trend Crossover Strategy est une stratégie de trading quantitative structurellement simple mais efficace. En combinant l'oscillateur détressé avec des moyennes mobiles, la stratégie capte efficacement les changements de tendance du marché. Bien qu'il existe des risques inhérents, la stratégie conserve une valeur pratique grâce à des mesures d'optimisation et de gestion des risques appropriées. Pour les traders à moyen et long terme, cette stratégie représente une approche de trading viable qui mérite d'être considérée.
/*backtest start: 2019-12-23 08:00:00 end: 2024-12-04 00:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("DPO 4,24 Strategy", shorttitle="DPO Strategy", overlay=true) // Define a fixed lookback period and EMA length length = 24 ema_length = 4 // Calculate the Simple Moving Average (SMA) of the closing prices sma = ta.sma(close, length) // Calculate the shifted SMA value shifted_sma = sma[length / 2 + 1] // Calculate the Detrended Price Oscillator (DPO) dpo = close - shifted_sma // Calculate the 4-period Exponential Moving Average (EMA) of the DPO dpo_ema = ta.ema(dpo, ema_length) // Generate buy and sell signals based on crossovers buy_signal = ta.crossover(dpo, dpo_ema) sell_signal = ta.crossunder(dpo, dpo_ema) // Overlay buy and sell signals on the candlestick chart plotshape(series=buy_signal, location=location.belowbar, color=color.green, style=shape.labelup, text="BUY") plotshape(series=sell_signal, location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL") // Strategy entry and exit conditions if (buy_signal) strategy.entry("Buy", strategy.long) if (sell_signal) strategy.close("Buy")