
Le cœur de cette stratégie est basé sur les indicateurs développés par Andrew Abraham dans un article publié en septembre 1998 dans le journal TASC de l’indice des tendances de l’indice de négociation. L’indice utilise la portée réelle moyenne des fluctuations et le canal de prix pour déterminer la direction de la tendance du marché, en combinaison avec l’indice MACD pour le filtrage des signaux de négociation, visant à capturer les tendances de la ligne médiane.
La stratégie commence par calculer une moyenne mobile pondérée de la plage de fluctuation réelle moyenne sur 21 jours (ATR) comme une plage de fluctuation de référence. Ensuite, elle calcule les plus hauts et les plus bas des 21 derniers jours pour comparer le prix de clôture de la ligne K actuelle avec la limite supérieure et inférieure de la plage de fluctuation de référence afin de déterminer si le prix a franchi le canal et ainsi déterminer la direction de la tendance.
Plus précisément, la limite supérieure de la voie est définie comme étant le prix le plus élevé des 21 derniers jours moins 3 fois l’ATR de référence, et la limite inférieure de la voie est la valeur la plus basse des 21 derniers jours plus 3 fois l’ATR de référence. Lorsque le prix de clôture est supérieur à la limite supérieure de la voie, il est jugé comme une tendance haussière; lorsque le prix de clôture est inférieur à la limite inférieure de la voie, il est jugé comme une tendance baissière.
En déterminant la direction de la tendance, la stratégie introduit également un filtre sur l’indicateur MACD. Un signal d’achat est généré uniquement lorsque la colonne MACD est correcte, afin d’éviter de manquer le point d’achat.
Cette stratégie, combinée à un jugement de tendance et à un filtrage d’indicateurs, permet de déterminer efficacement la direction de la tendance de la ligne longue du marché et d’éviter d’être induit en erreur par les fluctuations à court terme du marché. Les avantages spécifiques sont les suivants:
Cette stratégie comporte également des risques, principalement dans les domaines suivants:
Pour cela, il est possible de réduire le risque en optimisant les paramètres, en effectuant un dimensionnement strict de la position et en arrêtant les pertes en temps opportun.
La stratégie peut être optimisée principalement dans les domaines suivants:
Il est possible de tester différentes combinaisons de paramètres de Longueur ou de Multiplicateur pour trouver la combinaison de paramètres qui génère le meilleur rendement sur la base des données de rétro-mesure.
Il est possible de tester le filtrage des signaux en les combinant avec d’autres indicateurs tels que le RSI, le KDJ, etc. pour voir si cela peut améliorer le rendement.
Les paramètres peuvent être ajustés dynamiquement en fonction de la situation du marché, par exemple en élargissant la gamme de canaux de manière appropriée lorsque la tendance est évidente et en resserrant la gamme de canaux de manière appropriée en cas de choc.
Cette stratégie est une stratégie de suivi de tendance relativement robuste dans l’ensemble. Combinée à la méthode de détermination de la direction de la tendance des canaux de prix et aux signaux de filtrage de l’indicateur MACD, elle permet de déterminer efficacement les tendances à long terme du marché et de générer des gains stables. Grâce à l’optimisation des paramètres, à la gestion des risques et à la correction appropriée, cette stratégie peut devenir un élément important du système de trading quantifié.
/*backtest
start: 2023-01-26 00:00:00
end: 2024-02-01 00:00:00
period: 1d
basePeriod: 1h
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/
// © melihtuna
//@version=1
strategy("Trend Trader Strategy with MACD", overlay=true)
// === Trend Trader Strategy ===
Length = input(21),
Multiplier = input(3, minval=1)
MacdControl = input(true, title="Control 'MACD Histogram is positive?' when Buy condition")
avgTR = wma(atr(1), Length)
highestC = highest(Length)
lowestC = lowest(Length)
hiLimit = highestC[1]-(avgTR[1] * Multiplier)
loLimit = lowestC[1]+(avgTR[1] * Multiplier)
ret = iff(close > hiLimit and close > loLimit, hiLimit,
iff(close < loLimit and close < hiLimit, loLimit, nz(ret[1], 0)))
pos = iff(close > ret, 1,
iff(close < ret, -1, nz(pos[1], 0)))
barcolor(pos == -1 ? red: pos == 1 ? green : blue )
plot(ret, color= blue , title="Trend Trader Strategy with MACD")
// === INPUT BACKTEST RANGE ===
FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromYear = input(defval = 2020, title = "From Year", minval = 2017)
ToMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear = input(defval = 9999, title = "To Year", minval = 2017)
// === FUNCTION EXAMPLE ===
start = timestamp(FromYear, FromMonth, FromDay, 00, 00) // backtest start window
finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) // backtest finish window
window() => true
// === MACD ===
[macdLine, signalLine, histLine] = macd(close, 12, 26, 9)
macdCond= MacdControl ? histLine[0] > 0 ? true : false : true
strategy.entry("BUY", strategy.long, when = window() and pos == 1 and macdCond)
strategy.entry("SELL", strategy.short, when = window() and pos == -1)