La stratégie de croisement de la moyenne mobile double de position dynamique est une approche quantitative de négociation qui utilise les signaux de croisement de deux moyennes mobiles simples (SMA) avec des périodes différentes pour exécuter des transactions. Cette stratégie tire parti du croisement des moyennes mobiles à court et à long terme pour déterminer les tendances du marché et ajuste dynamiquement la direction de la position en fonction des signaux de croisement et de la relation entre le prix et la moyenne à long terme.
La stratégie Dynamic Position Double Moving Average Crossover est une méthode de trading quantitative classique et pratique qui capture les tendances du marché en tirant parti des signaux de croisement MA et en ajustant dynamiquement les positions. Cette stratégie est simple à comprendre, entièrement automatisée et démontre de bonnes capacités de suivi des tendances avec flexibilité. Cependant, elle fait également face à des risques potentiels tels qu'une mauvaise performance sur les marchés agités et des signaux en retard. En incorporant des indicateurs techniques supplémentaires, en optimisant la sélection des paramètres et en mettant en œuvre des mécanismes de stop-loss, la stabilité et la rentabilité de la stratégie peuvent être encore améliorées. Les traders employant cette stratégie doivent ajuster les paramètres et gérer en fonction d'instruments de trading spécifiques et des environnements de marché pour atteindre des risques à long terme et des résultats de trading stables.
/*backtest start: 2024-06-29 00:00:00 end: 2024-07-29 00:00:00 period: 2h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy(title="MA Cross Backtest", overlay=true, default_qty_type=strategy.cash, default_qty_value=10) // Parâmetros das Médias Móveis shortlen = input.int(9, "Short MA Length", minval=1) longlen = input.int(21, "Long MA Length", minval=1) // Cálculo das Médias Móveis short = ta.sma(close, shortlen) long = ta.sma(close, longlen) // Plotagem das Médias Móveis plot(short, color=color.orange, title="Short MA") plot(long, color=color.green, title="Long MA") // Sinal de Compra baseado no cruzamento das médias móveis buySignal = ta.crossover(short, long) // Sinal de Venda (Short) baseado no cruzamento das médias móveis sellSignal = ta.crossunder(short, long) // Plotagem dos Sinais de Compra e Venda plotshape(series=buySignal, location=location.belowbar, color=color.blue, style=shape.labelup, text="Buy", title="Buy Signal") plotshape(series=sellSignal, location=location.abovebar, color=color.red, style=shape.labeldown, text="Sell", title="Sell Signal") // Condições para alertas alertcondition(buySignal, title="Buy Signal", message="MA Cross Buy Signal") alertcondition(sellSignal, title="Sell Signal", message="MA Cross Sell Signal") // Lógica da Estratégia de Backtest if (buySignal) // Se não há posição aberta ou se a posição atual é curta, feche a posição curta antes de abrir uma nova posição longa if (strategy.position_size < 0) strategy.close("Short", comment="Closing Short Position before Long Entry") strategy.entry("Long", strategy.long) // Alerta de compra alert("MA Cross Buy Signal", alert.freq_once_per_bar_close) if (strategy.position_size > 0) // Se o preço abrir abaixo da média longa if (open < long) strategy.close("Long", comment="Price Opened Below Long MA") strategy.entry("Short", strategy.short, comment="Switched to Short") // Alerta de venda alert("Price Opened Below Long MA - Switched to Short", alert.freq_once_per_bar_close) // Se a média móvel curta cruzar abaixo da média móvel longa else if (sellSignal) strategy.close("Long", comment="Short MA Crossed Below Long MA") strategy.entry("Short", strategy.short, comment="Switched to Short") // Alerta de venda alert("Short MA Crossed Below Long MA - Switched to Short", alert.freq_once_per_bar_close) if (strategy.position_size < 0) // Se o preço abrir acima da média longa if (open > long) strategy.close("Short", comment="Price Opened Above Long MA") strategy.entry("Long", strategy.long, comment="Switched to Long") // Alerta de compra alert("Price Opened Above Long MA - Switched to Long", alert.freq_once_per_bar_close)