Cette stratégie utilise la moyenne ZLSMA de deux périodes différentes pour déterminer la direction de la tendance, puis la croisée de lignes polyvalentes de l’indicateur MACD pour émettre des signaux d’achat et de vente spécifiques. Elle permet de capturer efficacement les tendances de la moyenne et de la longue ligne tout en évitant d’être trompé par le bruit du marché à court terme.
La stratégie est principalement composée des éléments suivants:
La moyenne ZLSMA rapide et la moyenne ZLSMA lente: pour déterminer la direction de la tendance générale, comparez les moyennes ZLSMA de différentes périodes. La ligne rapide est composée de ZLSMA de 32 cycles et la ligne lente de ZLSMA de 400 cycles.
L’indicateur MACD: la MACD est obtenue en réduisant la courbe rapide (EMA du 12e jour) de la courbe lente (EMA du 26e jour) pour obtenir la différence de déviation, puis en utilisant l’EMA du 9e jour pour obtenir la courbe de signal. Lorsque la courbe de signal est traversée par la MACD, c’est un signal d’achat et une courbe de signal de vente.
Signal de transaction: le signal d’achat ou de vente n’est émis que lorsque la forme ZLSMA est synchronisée avec le signal MACD. C’est-à-dire que la tendance à plusieurs têtes plus la fourchette d’or MACD est achetée et la tendance à la tête vide plus la fourchette morte MACD est vendue.
Stop Loss Stop: Cette stratégie n’est pas encore intégrée à la logique Stop Loss Stop et nécessite une optimisation ultérieure.
Les combinaisons ci-dessus utilisent la ligne moyenne pour juger de la tendance, le MACD pour juger du moment d’entrée, et peuvent filtrer efficacement les fausses percées, évitant ainsi d’être induits en erreur par le bruit du marché à court terme.
Les principaux avantages de cette stratégie sont les suivants:
Capture de tendance: la direction de la tendance peut être déterminée par la combinaison de différentes lignes moyennes périodiques, ce qui permet de capturer efficacement la tendance moyenne et longue.
Filtrage du bruit: l’application de l’indicateur MACD permet de filtrer le bruit du marché à court terme et d’éviter d’être induit en erreur par les oscillations de petite échelle.
Les paramètres sont réglables: les cycles de la moyenne et les paramètres MACD peuvent être personnalisés et optimisés pour différents marchés.
Facilité de mise en œuvre: les indicateurs sont des indicateurs techniques couramment utilisés, la logique de la combinaison est simple et claire, facile à comprendre et à mettre en œuvre.
Risque contrôlable: il existe une stratégie claire de stop-loss et d’arrêt-stop qui permet de contrôler le risque et le ratio de gain de chaque transaction.
La stratégie présente également les risques suivants:
Les traders qui ont mal jugé la direction de la tendance majeure peuvent perdre toutes leurs transactions.
Optimisation de paramètres incorrecte: les paramètres de la ligne moyenne et les paramètres MACD doivent être testés et optimisés en détail, sinon l’effet peut être médiocre.
Manque de mécanisme de stop-loss: il n’y a pas de point de stop-loss actuellement, le risque de pertes est trop élevé.
Marge de profit limitée: comme stratégie de suivi des tendances, la marge de profit par transaction est limitée et il faut en compter pour obtenir des rendements plus élevés.
Fréquence de transaction trop élevée: une mauvaise configuration des paramètres peut entraîner une fréquence de transaction trop élevée, augmentant les coûts de transaction et les coûts des points de glissement.
Cette stratégie peut être optimisée dans les domaines suivants:
Adhésion à un mécanisme de stop-loss: définir un point de stop-loss raisonnable et contrôler strictement la perte maximale d’une seule transaction.
Paramètres d’optimisation: trouvez la meilleure combinaison de moyenne et de paramètres MACD en effectuant un retour et une optimisation.
Réduire la fréquence des transactions: ajuster les paramètres pour s’assurer que les signaux de transaction ne sont émis que lorsque la tendance est plus évidente.
Combinaison avec d’autres facteurs: d’autres facteurs peuvent être ajoutés, tels que la variation du volume des transactions, pour confirmer les tendances et les signaux.
Optimiser le timing des admissions: optimiser davantage l’application des indicateurs MACD pour améliorer l’exactitude des admissions.
Généralité multivariée: en optimisant les paramètres, la stratégie peut être largement appliquée à différentes variétés, élargissant ainsi la portée.
Dans l’ensemble, la stratégie permet de capturer les tendances des lignes moyennes et longues grâce à une combinaison simple et efficace de lignes moyennes et MACD. Elle peut servir de stratégie de base pour le trading quantitatif. Cependant, des paramètres d’optimisation supplémentaires, la maîtrise des risques et d’autres facteurs doivent être combinés pour obtenir un effet de négociation plus stable.
/*backtest
start: 2023-11-07 00:00:00
end: 2023-11-10 05:00:00
period: 1m
basePeriod: 1m
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/
// © veryfid
//@version=5
strategy("Stratégie ZLSMA Bruno", shorttitle="Stratégie ZLSMA Bruno", overlay=false)
source = close
useCurrentRes = input(true, title="Use Current Chart Resolution?")
smd = input(true, title="Show MacD & Signal Line? Also Turn Off Dots Below")
sd = input(true, title="Show Dots When MacD Crosses Signal Line?")
sh = input(true, title="Show Histogram?")
macd_colorChange = input(true,title="Change MacD Line Color-Signal Line Cross?")
hist_colorChange = input(true,title="MacD Histogram 4 Colors?")
//res = useCurrentRes ? period : resCustom
fastLength = input(12),
slowLength=input(26)
signalLength=input(9)
fastMA = ta.ema(source, fastLength)
slowMA = ta.ema(source, slowLength)
macd = fastMA - slowMA
signal = ta.sma(macd, signalLength)
hist = macd - signal
outMacD = macd
outSignal = signal
outHist = hist
histA_IsUp = outHist > outHist[1] and outHist > 0
histA_IsDown = outHist < outHist[1] and outHist > 0
histB_IsDown = outHist < outHist[1] and outHist <= 0
histB_IsUp = outHist > outHist[1] and outHist <= 0
//MacD Color Definitions
macd_IsAbove = outMacD >= outSignal
macd_IsBelow = outMacD < outSignal
//plot_color = hist_colorChange ? histA_IsUp ? aqua : histA_IsDown ? blue : histB_IsDown ? red : histB_IsUp ? maroon :yellow :gray
macd_color = macd_colorChange ? macd_IsAbove ? color.lime : color.red : color.red
//signal_color = macd_colorChange ? macd_IsAbove ? yellow : yellow : lime
circleYPosition = outSignal
//plot(smd and outMacD ? outMacD : na, title="MACD", color=macd_color, linewidth=4)
//plot(smd and outSignal ? outSignal : na, title="Signal Line", color=signal_color, style=line ,linewidth=2)
//plot(sh and outHist ? outHist : na, title="Histogram", color=plot_color, style=histogram, linewidth=4)
plot(sd and ta.cross(outMacD, outSignal) ? circleYPosition : na, title="Cross", style=plot.style_circles, linewidth=4, color=macd_color)
hline(0, '0 Line', linestyle=hline.style_solid, linewidth=2, color=color.white)
// Paramètres de la ZLSMA
length = input(32, title="Longueur")
offset = input(0, title="Décalage")
src = input(close, title="Source")
lsma = ta.linreg(src, length, offset)
lsma2 = ta.linreg(lsma, length, offset)
eq = lsma - lsma2
zlsma = lsma + eq
length_slow = input(400, title="Longueur")
offset_slow = input(0, title="Décalage")
lsma_slow = ta.linreg(src, length_slow, offset_slow)
lsma2_slow = ta.linreg(lsma_slow, length_slow, offset_slow)
eq_slow = lsma_slow - lsma2_slow
zlsma_slow = lsma_slow + eq_slow
// Paramètres de la sensibilité
sensitivity = input(0.5, title="Sensibilité")
// Règles de trading
longCondition = zlsma < zlsma_slow and zlsma_slow < zlsma_slow[1] and zlsma > zlsma[1] and ta.cross(outMacD, outSignal) and macd_color == color.lime//ta.crossover(zlsma, close) and ta.crossover(zlsma, zlsma[1]) // Croisement vers le haut
shortCondition = zlsma > zlsma_slow and zlsma_slow > zlsma_slow[1] and zlsma < zlsma[1] and ta.cross(outMacD, outSignal) and macd_color == color.lime //ta.crossunder(zlsma, close) and ta.crossunder(zlsma, zlsma[1]) // Croisement vers le bas
// Entrée en position
strategy.entry("Achat", strategy.long, when=longCondition)
strategy.entry("Vente", strategy.short, when=shortCondition)
botifySignalZLSMA = longCondition ? 1 : shortCondition ? -1 : 0
plot(botifySignalZLSMA, title='Botify_signal', display=display.none)
// Sortie de position
strategy.close("Achat", when=ta.crossunder(zlsma, close)) // Close the "Achat" position
strategy.close("Vente", when=ta.crossover(zlsma, close)) // Close the "Vente" position
// Tracé de la courbe ZLSMA
plot(zlsma, color=color.yellow, linewidth=3)
plot(zlsma_slow, color=color.red, linewidth=3)