
La stratégie est une version améliorée de la stratégie de trading basée sur l’indicateur MACD. Elle combine les caractéristiques de suivi de tendance de l’indicateur MACD et la pensée du trading dynamique pour générer des signaux de trading en analysant les différences entre les moyennes mobiles rapides et les moyennes mobiles lentes.
Le cœur de la stratégie est l’indicateur MACD, qui est constitué de la différence entre une moyenne mobile rapide (EMA) et une moyenne mobile lente (EMA). Un signal d’achat ou de vente est généré lorsque l’EMA rapide se trouve en croisement avec l’EMA lente. Plus précisément, un signal d’achat est généré lorsque la ligne MACD franchit la ligne de signal de bas en haut; un signal de vente est généré lorsque la ligne MACD franchit la ligne de signal de haut en bas.
En plus du signal de croisement MACD de base, la stratégie introduit un mécanisme de confirmation de tendance. Il juge si le marché actuel est en tendance haussière ou baissière en le comparant à la moyenne mobile simple (SMA). Les opérations de négociation ne sont réellement exécutées que si un signal d’achat apparaît dans une tendance haussière ou un signal de vente dans une tendance baissière.
En outre, la stratégie prolonge la fenêtre de confirmation du signal. La transaction correspondante n’est exécutée que lorsque la ligne K actuelle satisfait aux conditions d’achat ou de vente et que la ligne K précédente satisfait aux mêmes conditions. Cela améliore encore la fiabilité du signal.
Enfin, la stratégie définit un pourcentage fixe de stop loss et de stop loss. Une fois la transaction effectuée, le stop loss et le stop loss sont calculés en fonction du prix d’ouverture de la position et la position est automatiquement liquidée une fois que ces prix sont atteints. Cela aide à contrôler les risques et les gains d’une seule transaction.
La stratégie est une stratégie de trading améliorée basée sur les indicateurs MACD, qui améliore la stabilité et le potentiel de profit de la stratégie grâce à des méthodes telles que la confirmation de tendance, la confirmation de retard de signal et le stop loss fixe. Cependant, il existe également des risques liés à l’optimisation des paramètres, à l’identification des tendances, à l’indicateur unique et au suivi des données. À l’avenir, il est possible d’envisager l’optimisation de la stratégie en combinaison avec d’autres indicateurs, le stop loss dynamique, la gestion de la position et l’apprentissage automatique, afin d’améliorer encore son efficacité dans les applications réelles.
/*backtest
start: 2023-05-08 00:00:00
end: 2024-05-13 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © sligetit
//@version=5
strategy("Improved MACD_VXI Strategy", overlay=true)
// Calculate MACD and Signal Line
fastLength = input.int(13, title="Fast Length")
slowLength = input.int(21, title="Slow Length")
signalLength = input.int(8, title="Signal Length")
fastMA = ta.ema(close, fastLength)
slowMA = ta.ema(close, slowLength)
macd = fastMA - slowMA
signal = ta.sma(macd, signalLength)
// Plot MACD and Signal Line
plot(macd, color=color.red, linewidth=1)
plot(signal, color=color.blue, linewidth=2)
// Calculate Cross Signals with Trend Confirmation
smaPeriod = input.int(50, title="SMA Period")
sma = ta.sma(close, smaPeriod)
trendUp = close > sma
trendDown = close < sma
crossOver = ta.crossover(signal, macd)
crossUnder = ta.crossunder(signal, macd)
buySignal = crossOver and trendUp
sellSignal = crossUnder and trendDown
// Execute Buy/Sell Operations
if buySignal
strategy.entry("Buy", strategy.long)
if sellSignal
strategy.entry("Sell", strategy.short)
// Extend Signal Confirmation Time Window
longSignal = crossOver[1] and trendUp[1]
shortSignal = crossUnder[1] and trendDown[1]
if longSignal
strategy.entry("Buy", strategy.long)
if shortSignal
strategy.entry("Sell", strategy.short)
// Set Fixed Percentage Stop Loss and Take Profit
stopLossPercent = input.float(1, title="Stop Loss (%)") / 100
takeProfitPercent = input.float(2, title="Take Profit (%)") / 100
stopLossPrice = strategy.position_avg_price * (1 - stopLossPercent)
takeProfitPrice = strategy.position_avg_price * (1 + takeProfitPercent)
strategy.exit("Stop Loss/Profit", "Buy", stop=stopLossPrice, limit=takeProfitPrice)
strategy.exit("Stop Loss/Profit", "Sell", stop=stopLossPrice, limit=takeProfitPrice)