
La stratégie de croisement d’une moyenne mobile dynamique est une stratégie de suivi de tendance typique. La stratégie consiste à calculer des moyennes mobiles rapides (Fast MA) et des moyennes mobiles lentes (Slow MA) et à générer des signaux d’achat et de vente lorsqu’elles se croisent pour capturer les virages des tendances du marché.
La logique centrale de cette stratégie est la suivante: un signal d’achat est généré lorsque la moyenne mobile rapide traverse la moyenne mobile lente par le bas; un signal de vente est généré lorsque la moyenne mobile rapide traverse la moyenne mobile lente par le haut et par le bas.
Les moyennes mobiles sont plus sensibles aux changements de tendance et captent plus rapidement les changements de tendance. Les moyennes mobiles plus lentes sont plus stables et éliminent plus efficacement les effets des fluctuations à court terme. Lorsque la moyenne rapide se transforme en une fourche dorée (crossing from bottom to top), le marché entre dans un mouvement à plusieurs têtes; lorsque la fourche morte se transforme en un mouvement à vide (crossing from top to bottom).
La stratégie émet un signal de transaction immédiatement après le croisement de la ligne d’équilibre, adopte une stratégie de suivi de la tendance et suit les tendances du marché pour obtenir des bénéfices plus importants. En même temps, la stratégie définit des points de perte et des points d’arrêt, et contrôle strictement le risque.
Les paramètres peuvent être optimisés, la longueur des cycles de la ligne moyenne peut être ajustée ou des conditions de filtrage peuvent être ajoutées.
La stratégie de croisement linéaire dynamique est plus efficace dans l’ensemble. Elle permet d’améliorer encore la performance de la stratégie en ajustant les paramètres de l’optimisation.
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Simple Moving Average Crossover", shorttitle="SMAC", overlay=true)
// Define input parameters
fast_length = input.int(9, title="Fast MA Length")
slow_length = input.int(21, title="Slow MA Length")
stop_loss = input.float(1, title="Stop Loss (%)", minval=0, maxval=100)
take_profit = input.float(2, title="Take Profit (%)", minval=0, maxval=100)
// Calculate moving averages
fast_ma = ta.sma(close, fast_length)
slow_ma = ta.sma(close, slow_length)
// Define conditions for long and short signals
long_condition = ta.crossover(fast_ma, slow_ma)
short_condition = ta.crossunder(fast_ma, slow_ma)
// Plot moving averages on the chart
plot(fast_ma, title="Fast MA", color=color.blue)
plot(slow_ma, title="Slow MA", color=color.red)
// Execute long and short trades
if (long_condition)
strategy.entry("Long", strategy.long)
if (short_condition)
strategy.entry("Short", strategy.short)
// Set stop loss and take profit levels
stop_loss_price = close * (1 - stop_loss / 100)
take_profit_price = close * (1 + take_profit / 100)
strategy.exit("Take Profit/Stop Loss", stop=stop_loss_price, limit=take_profit_price)
// Plot signals on the chart
plotshape(series=long_condition, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small)
plotshape(series=short_condition, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small)