
Cette stratégie, combinant les signaux de rupture des moyennes mobiles indicielles et du MACD, impose deux longues périodes de détention et permet de réaliser des gains en suivant la tendance et en effectuant des transactions inversées.
La stratégie est basée sur les principes suivants:
Calculer la moyenne mobile à 200 jours de l’indice pour déterminer la direction de la tendance majeure. Les prix de clôture supérieurs à cette moyenne sont positifs et inférieurs à la baisse.
Le prix moyen est une moyenne mobile indexée basée sur le prix le plus élevé, le prix le plus bas et le prix de clôture, calculant la différence entre cette moyenne et le prix le plus élevé et le prix le plus bas, construisant un diagramme en colonnes MACD.
Calculer la moyenne mobile à 9 jours du diagramme de la colonne MACD et construire une ligne de signal MACD.
Le MACD génère un signal d’achat lorsqu’il franchit une ligne de signal de bas en haut; un signal de vente lorsqu’il franchit une ligne de signal de haut en bas.
En combinant la direction de la grande tendance, il est possible de déterminer si la tendance est à la longueur ou à la courte ligne.
Cette stratégie, combinant le trading de tendance et le trading de revers, permet de suivre les tendances sur des périodes plus longues et de saisir les occasions de revers sur des lignes courtes, et de répondre de manière flexible aux différentes conditions du marché.
Les avantages spécifiques sont les suivants:
Il est préférable d’utiliser la moyenne mobile à 200 jours pour déterminer la direction des principales tendances et d’éviter les opérations de revers.
L’indicateur MACD est plus sensible aux variations de prix à court terme et peut capturer des occasions de reprise plus efficaces.
La combinaison de MACDs avec différents paramètres permet de réaliser des signaux de transaction sur plusieurs périodes.
La combinaison de la stratégie Stop Loss permet de contrôler efficacement les pertes individuelles.
La stratégie présente principalement les risques suivants:
Il peut y avoir un décalage temporel entre les signaux de négociation des indicateurs à long terme et ceux à court terme, ce qui nécessite une analyse globale des grandes tendances.
Le MACD, en tant qu’indicateur de revers, diminue son pouvoir d’interprétation en cas de forte tendance.
Le point d’arrêt n’est pas correctement réglé, ce qui peut entraîner un arrêt prématuré ou un arrêt excessif.
Les signaux de rupture ont été jugés trop fréquents et peuvent générer davantage de faux signaux.
La réponse:
Optimiser les paramètres MACD et ajuster la sensibilité des indicateurs
En combinaison avec d’autres indicateurs, évitez de suivre aveuglément les signaux MACD.
Tester et optimiser les paramètres de la stratégie de stop loss.
Les conditions de filtrage ont été améliorées pour éviter de nombreux faux signaux.
Cette stratégie peut être optimisée dans les directions suivantes:
Optimiser les paramètres des moyennes mobiles et du MACD pour obtenir des signaux de négociation plus efficaces.
Ajouter d’autres indicateurs pour améliorer l’efficacité de la stratégie
Établissez une stratégie de dimensionnement des positions plutôt que des lots fixes pour chaque transaction.
Ajouter des règles d’exit plus avancées plutôt que des règles de stop loss.
Backtest with more complex fee settings to better simulate real trading environoment. Backtest avec des réglages de frais plus complexes pour mieux simuler un environnement de trading réel.
Walk forward analysis, robustness test among multiple products to enhance reliability. Analyses de marche en avant, tests de robustesse parmi plusieurs produits pour améliorer la fiabilité.
La stratégie prend en compte à la fois la tendance et le trading inversé. La clé réside dans l’exactitude de la définition des paramètres de l’indicateur et de la compréhension des grandes tendances. Par des moyens tels que l’optimisation continue des paramètres, l’augmentation des conditions de fléchissement, la stratégie peut être rendue plus précise et plus stable.
/*backtest
start: 2022-12-01 00:00:00
end: 2023-12-07 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("Strategia EMA + Impulse MACD", shorttitle="EMA+IMACD", overlay=true)
// Impostazioni
ema_length = input(200, title="Periodo EMA a 200", type=input.integer)
lengthMA = input(34, title="Periodo EMA", type=input.integer)
lengthSignal = input(9, title="Periodo Signal", type=input.integer)
lengthImpulseMACD = input(12, title="Periodo Impulse MACD", type=input.integer)
lengthImpulseMACDSignal = input(9, title="Periodo Impulse MACD Signal", type=input.integer)
stopLossPeriod = input(20, title="Periodo Stop Loss", type=input.integer)
var float ema200 = na
if bar_index >= ema_length
ema200 := ema(close, ema_length)
// Impulse MACD
var float hi = na
var float lo = na
var float mi = na
var float impulseMACD = na
var float impulseMACDSignal = na
calc_smma(src, len) =>
var float smma = na
if na(smma)
smma := sma(src, len)
else
smma := (smma[1] * (len - 1) + src) / len
smma
calc_zlema(src, length) =>
ema1 = ema(src, length)
ema2 = ema(ema1, length)
d = ema1 - ema2
ema1 + d
if bar_index >= lengthMA
src = hlc3
hi := calc_smma(high, lengthMA)
lo := calc_smma(low, lengthMA)
mi := calc_zlema(src, lengthMA)
impulseMACD := (mi > hi) ? (mi - hi) : (mi < lo) ? (mi - lo) : 0
impulseMACDSignal := sma(impulseMACD, lengthSignal)
// Calcolo dello stop loss
var float stopLossLong = na
var float stopLossShort = na
stopLossLong := lowest(low, stopLossPeriod)
stopLossShort := highest(high, stopLossPeriod)
// Calcolo del take profit
var float takeProfitLong = na
var float takeProfitShort = na
if not na(stopLossLong)
takeProfitLong := close + (close - stopLossLong) * 1.5
if not na(stopLossShort)
takeProfitShort := close - (stopLossShort - close) * 1.5
// Condizioni per aprire una posizione long
longCondition = not na(ema200) and not na(impulseMACD) and not na(impulseMACDSignal) and close > ema200 and impulseMACD < 0 and impulseMACDSignal < 0 and crossover(impulseMACD, impulseMACDSignal)
// Condizioni per aprire una posizione short
shortCondition = not na(ema200) and not na(impulseMACD) and not na(impulseMACDSignal) and close < ema200 and impulseMACD > 0 and impulseMACDSignal > 0 and crossunder(impulseMACD, impulseMACDSignal)
// Disegna l'EMA 200 sul grafico
plot(ema200, color=color.blue, title="EMA 200")
// Imposta lo stop loss e il take profit
strategy.entry("Long", strategy.long, when=longCondition)
strategy.entry("Short", strategy.short, when=shortCondition)
strategy.exit("Take Profit/Stop Loss Long", from_entry="Long", stop=stopLossLong, limit=takeProfitLong)
strategy.exit("Take Profit/Stop Loss Short", from_entry="Short", stop=stopLossShort, limit=takeProfitShort)
// Impulse MACD
plot(0, color=color.gray, linewidth=1, title="MidLine")
plot(impulseMACD, color=color.red, linewidth=2, title="ImpulseMACD", style=plot.style_histogram)
plot(impulseMACDSignal, color=color.blue, linewidth=2, title="ImpulseMACDSignal", style=plot.style_histogram)
// Disegna le operazioni long e short sul grafico
plotshape(series=longCondition, location=location.belowbar, color=color.green, style=shape.triangleup, title="Long Entry")
plotshape(series=shortCondition, location=location.abovebar, color=color.red, style=shape.triangledown, title="Short Entry")