
La stratégie détermine la direction de la tendance à l’aide de l’indicateur MACD Gold Forks Dead Forks et d’un arrêt de perte en combinaison avec l’indicateur ATR, permettant ainsi de suivre la tendance. Le terme Gold Forks Dead Forks dans le nom de la stratégie met en évidence le signal Gold Forks Dead Forks utilisant l’indicateur MACD.
Lorsque la ligne MACD passe de bas en haut à travers la ligne Signal et devient positive, un signal d’achat est généré, c’est-à-dire un signal de fourche, indiquant que la tendance haussière est formée. Lorsque la ligne MACD passe de haut en bas à travers la ligne Signal et devient négative, un signal de vente est généré, c’est-à-dire un signal de fourche, indiquant que la tendance baissière est formée.
La stratégie consiste à exploiter ce principe, en faisant plus lors de la fourche dorée et en faisant moins lors de la fourche morte, pour réaliser le suivi de la tendance. En même temps, la stratégie introduit également l’indicateur ATR pour calculer le stop loss et terminer la construction du système de négociation.
Plus précisément, la stratégie commence par calculer les indicateurs MACD standards tels que les moyennes mobiles rapides, les moyennes mobiles lentes, le décalage MACD et les lignes de signal. Ensuite, en fonction des cinq signaux sélectionnés (signal de continuation, signal de retournement, signal de diagramme colonnade, croisement de faisceau MACD, croisement de faisceau faisceau faisceau) pour déterminer le croisement de faisceau doré. Finalement, en combinaison avec l’indicateur ATR, définissez un stop loss, pour terminer la logique d’entrée et de sortie.
Cette stratégie présente les avantages suivants:
L’indicateur MACD est utilisé pour déterminer la direction de la tendance avec précision et fiabilité. Pendant de nombreuses années, l’indicateur MACD s’est distingué dans la détermination de la tendance.
Le paramètre de stop loss combiné à l’indicateur ATR permet de contrôler efficacement le rapport risque/rendement d’une transaction, réduisant ainsi la probabilité de pertes.
Cinq signaux de choix sont proposés, permettant de choisir des signaux plus adaptés aux différents marchés et d’améliorer l’adaptabilité des stratégies.
Il est possible d’obtenir de meilleurs résultats en optimisant les paramètres.
Cette stratégie comporte aussi des risques:
Les indicateurs MACD sont sujets à des signaux erronés qui peuvent entraîner des pertes inutiles. Ils peuvent être combinés avec d’autres indicateurs pour filtrer les signaux.
L’indicateur ATR ne modélise que les fluctuations de la période la plus récente et ne peut pas faire de stop loss précis pour les situations extrêmes. Des stop loss dynamiques peuvent être introduits pour résoudre ce problème.
L’effet du signal sélectionné peut être instable et nécessite un grand nombre de tests de retour pour déterminer les paramètres optimaux.
Les paramètres de signal et les paramètres de gestion des risques doivent être optimisés simultanément, sinon il est difficile d’obtenir des résultats optimaux. Une approche d’optimisation progressive est recommandée.
La stratégie peut également être optimisée pour:
Essayez d’autres moyennes mobiles, telles que la TMA, la HullMA, etc. et filtrez le signal MACD.
L’idée est d’essayer un mécanisme d’arrêt dynamique des pertes pour mieux gérer les fluctuations de l’extrême.
Optimiser les combinaisons de paramètres traditionnels de l’indicateur MACD à la main pour trouver les meilleurs.
L’utilisation de l’apprentissage automatique pour trouver les multiples optimaux des ATR permet une meilleure gestion des risques.
Les cinq types de signaux ont été testés séparément pour déterminer les meilleurs signaux.
Entraîner le réseau neuronal à juger de l’effet d’un type de signal et à rechercher de nouveaux signaux basés sur le MACD.
Cette stratégie de suivi de la tendance MACD utilise l’indicateur MACD pour déterminer la direction de la tendance, le stop loss est effectué en combinaison avec l’indicateur ATR, ce qui permet d’obtenir efficacement des opportunités de trading de tendance. La stratégie présente plusieurs avantages, tels que l’optimisation des paramètres de l’indicateur, l’intégrité du mécanisme de stop loss et le choix du type de signal. La prochaine étape consistera à améliorer la qualité du signal, l’amélioration du mécanisme de stop loss et l’optimisation du choix des paramètres, afin d’obtenir de meilleurs résultats de rétroaction et de placement.
/*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)