MACD Croix dorée Croix de la mort Tendance suivant la stratégie

Auteur:ChaoZhang est là., Date: 2023-12-22 à 11h45
Les étiquettes:

img

Résumé

Cette stratégie utilise la croix dorée et la croix de la mort de l'indicateur MACD pour déterminer la direction de la tendance, et utilise l'indicateur ATR pour le stop loss et le take profit pour mettre en œuvre la tendance après la négociation.

La logique de la stratégie

Lorsque la ligne MACD traverse au-dessus de la ligne de signal d'en bas et devient positive, un signal d'achat est généré, qui est appelé le signal de croix dorée, indiquant une tendance à la hausse du prix de l'action.

La stratégie va simplement long sur les croix dorées et court sur les croix mortes pour suivre les tendances.

Plus précisément, la stratégie calcule d'abord la moyenne mobile rapide, la moyenne mobile lente, la différence MACD, la ligne de signal et d'autres indicateurs MACD standard. Ensuite, sur la base de l'un des cinq types de signal choisis (signal de continuation, signal de renversement, signal d'histogramme, MACD zero cross, signal de ligne zéro cross), des croix dorées et des croix de mort sont déterminées. Enfin, le stop loss et le take profit sont définis sur la base de l'indicateur ATR pour compléter la logique d'entrée et de sortie.

Analyse des avantages

La stratégie présente les avantages suivants:

  1. L'utilisation de l'indicateur MACD pour déterminer la direction de la tendance est précise et fiable.

  2. Les paramètres stop loss et take profit basés sur l'indicateur ATR permettent de contrôler efficacement le ratio risque/rendement des transactions individuelles et de réduire la probabilité de pertes.

  3. La fourniture de cinq types de signaux facultatifs permet d'utiliser le signal le plus approprié pour différents marchés, ce qui améliore l'adaptabilité de la stratégie.

  4. Il existe de nombreux paramètres d'entrée réglables qui peuvent être optimisés pour de meilleures performances commerciales.

Risques et solutions

Cette stratégie comporte également certains risques:

  1. L'indicateur MACD peut facilement générer de faux signaux et causer des pertes inutiles.

  2. L'indicateur ATR ne modélise que les fluctuations de la période récente et ne peut pas arrêter avec précision les pertes dans des conditions de marché extrêmes.

  3. Les performances des signaux choisis peuvent ne pas être stables. Un backtesting approfondi est nécessaire pour déterminer les paramètres optimaux.

  4. Les paramètres de signal et les paramètres de gestion des risques doivent être optimisés conjointement, faute de quoi il est difficile de trouver les résultats globalement optimaux.

Suggestions d'optimisation

La stratégie peut également être optimisée dans les aspects suivants:

  1. Essayez d'autres moyennes mobiles comme TMA, Hull MA etc pour filtrer les signaux MACD.

  2. Essayez des mécanismes d'arrêt dynamiques qui peuvent mieux gérer les fluctuations dans des conditions de marché extrêmes.

  3. Optimiser de manière exhaustive les paramètres MACD traditionnels pour trouver de meilleures combinaisons.

  4. Utiliser des méthodes d'apprentissage automatique pour trouver des multiples ATR optimaux pour une meilleure gestion des risques.

  5. Test de retour de chacun des cinq types de signaux séparément pour déterminer le signal optimal.

  6. Former les réseaux neuronaux pour juger de la qualité du signal et découvrir de nouveaux signaux basés sur le MACD.

Conclusion

La stratégie de suivi de la tendance MACD utilise l'indicateur MACD pour déterminer la direction de la tendance et définit un stop loss et un profit avec l'indicateur ATR, ce qui peut capturer efficacement les opportunités de trading de tendance. La stratégie présente de multiples avantages tels que des paramètres réglables, des mécanismes de stop complets et des types de signaux optionnels.


/*backtest
start: 2023-11-21 00:00:00
end: 2023-12-21 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © vuagnouxb

//@version=4
strategy("BV's MACD SIGNAL TESTER", overlay=true)

//------------------------------------------------------------------------
//----------            Confirmation Calculation              ------------ INPUT
//------------------------------------------------------------------------

// Getting inputs
fast_length = input(title="Fast Length", type=input.integer, defval=12)
slow_length = input(title="Slow Length", type=input.integer, defval=26)
src = input(title="Source", type=input.source, defval=close)
signal_length = input(title="Signal Smoothing", type=input.integer, minval = 1, maxval = 50, defval = 9)
sma_source = input(title="Simple MA(Oscillator)", type=input.bool, defval=false)
sma_signal = input(title="Simple MA(Signal Line)", type=input.bool, defval=false)

// Plot colors
col_grow_above = #26A69A
col_grow_below = #FFCDD2
col_fall_above = #B2DFDB
col_fall_below = #EF5350
col_macd = #0094ff
col_signal = #ff6a00

// Calculating
fast_ma = sma_source ? sma(src, fast_length) : ema(src, fast_length)
slow_ma = sma_source ? sma(src, slow_length) : ema(src, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal ? sma(macd, signal_length) : ema(macd, signal_length)
hist = macd - signal

// plot(hist, title="Histogram", style=plot.style_columns, color=(hist>=0 ? (hist[1] < hist ? col_grow_above : col_fall_above) : (hist[1] < hist ? col_grow_below : col_fall_below) ), transp=0 )
// plot(macd, title="MACD", color=col_macd, transp=0)
// plot(signal, title="Signal", color=col_signal, transp=0)

// -- Trade entry signals

signalChoice = input(title = "Choose your signal", defval = "Continuation", options = ["Continuation", "Reversal", "Histogram", "MACD Line ZC", "Signal Line ZC"])

continuationSignalLong = signalChoice == "Continuation" ? crossover(macd, signal) and macd > 0 :
   signalChoice == "Reversal" ? crossover(macd, signal) and macd < 0 : 
   signalChoice == "Histogram" ? crossover(hist, 0) : 
   signalChoice == "MACD Line ZC" ? crossover(macd, 0) :
   signalChoice == "Signal Line ZC" ? crossover(signal, 0) :
   false
   
continuationSignalShort = signalChoice == "Continuation" ? crossunder(macd, signal) and macd < 0 :
   signalChoice == "Reversal" ? crossover(signal, macd) and macd > 0 : 
   signalChoice == "Histogram" ? crossunder(hist, 0) : 
   signalChoice == "MACD Line ZC" ? crossunder(macd, 0) :
   signalChoice == "Signal Line ZC" ? crossunder(signal, 0) :
   false

longCondition = continuationSignalLong

shortCondition = continuationSignalShort

//------------------------------------------------------------------------
//----------             ATR MONEY MANAGEMENT                 ------------
//------------------------------------------------------------------------

SLmultiplier = 1.5
TPmultiplier = 1

JPYPair = input(type = input.bool, title = "JPY Pair ?", defval = false)
pipAdjuster = JPYPair ? 1000 : 100000


ATR = atr(14) * pipAdjuster // 1000 for jpy pairs : 100000
SL = ATR * SLmultiplier
TP = ATR * TPmultiplier

//------------------------------------------------------------------------
//----------                  TIME FILTER                     ------------
//------------------------------------------------------------------------

YearOfTesting = input(title = "How many years of testing ?" , type = input.integer, defval = 3)

_time = 2020 - YearOfTesting

timeFilter = (year > _time) 

//------------------------------------------------------------------------
//---------                 ENTRY FUNCTIONS                    ----------- INPUT
//------------------------------------------------------------------------

if (longCondition and timeFilter)  
    strategy.entry("Long", strategy.long)

if (shortCondition and timeFilter) 
    strategy.entry("Short", strategy.short)
    
//------------------------------------------------------------------------
//---------                 EXIT  FUNCTIONS                    -----------
//------------------------------------------------------------------------


strategy.exit("ATR", from_entry = "Long", profit = TP, loss = SL)  

strategy.exit("ATR", from_entry = "Short", profit = TP, loss = SL)  

Plus de