La stratégie est basée sur l’indicateur de dispersion de la moyenne mobile logarithmique (Logarithmic MACD) pour générer des signaux de négociation. Elle détermine les tendances et les opportunités du marché en calculant la différence entre les moyennes mobiles logarithmiques rapides et lentes.
La principale logique de cette stratégie est la suivante:
Calculer les moyennes mobiles rapides ((12 jours par défaut) et les moyennes mobiles lentes ((26 jours par défaut)
Le MACD est la différence entre les deux, exprimant la dynamique du marché
La ligne de signal est une moyenne mobile lisse du MACD (par défaut 9 jours)
Le MACD fait plus quand il dépasse la ligne de signal en bas
La ligne MACD est vide lorsque la ligne de signal est cassée par le haut
Différences entre le MACD et les lignes de signal exprimées sous forme de diagramme colonnade
Par rapport à la moyenne mobile simple, la MACD symétrique peut mettre en évidence les tendances changeantes du marché de la croissance à l’échelle de l’indicateur. Après la conversion symétrique, les valeurs plus volatiles peuvent rester relativement comparables sur le graphique.
La conversion logarithmique permet de détecter les variations de prix au niveau de l’indice
Le MACD symétrique met en évidence les informations sur les fluctuations de prix
Les lignes de signaux sont lisses MACD, formant un signal de transaction
Le MACD colonnade est une expression intuitive de la direction de la tendance
La conversion symétrique pourrait amplifier les fluctuations des prix
Les signaux sont fréquents et les transactions sont excessives.
La gestion des pertes n’a pas été prise en compte, les contrôles des risques sont incomplets
Les mesures prises:
Ajustez les paramètres pour réduire la fréquence du signal
Augmentation des conditions de filtrage pour éviter la génération de signaux lors des secousses
Définir une stratégie de stop-loss pour maîtriser les pertes individuelles
Optimisation des paramètres et amélioration de la stabilité
Essayez d’utiliser d’autres méthodes de conversion comme la moyenne mobile.
Filtrage des signaux combiné avec un indicateur de tendance
Augmentation des stratégies de réduction des pertes
Utilisation de l’apprentissage automatique pour déterminer la fiabilité du signal
La stratégie utilise la conversion symétrique pour améliorer la sensibilité de l’indicateur MACD, permettant de détecter plus tôt les changements de tendance. Cependant, il faut veiller à contrôler la fréquence des transactions. Grâce à l’optimisation des paramètres, au contrôle du vent, etc., la stratégie peut devenir un système de trading quantifié stable et personnalisé.
/*backtest
start: 2022-09-14 00:00:00
end: 2023-09-20 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
strategy(title="Logarithmic Moving Average Convergence Divergence Strategy", shorttitle="LMACD Strategy")
// Getting inputs
fast_length = input(title="Fast Length", defval=12)
slow_length = input(title="Slow Length", defval=26)
src = input(title="Source", defval=close)
signal_length = input(title="Signal Smoothing", minval = 1, maxval = 50, defval = 9)
sma_source = input(title="Simple MA(Oscillator)", defval=false)
sma_signal = input(title="Simple MA(Signal Line)", 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)
lmacd = log(fast_ma) - log(slow_ma)
signal = sma_signal ? sma(lmacd, signal_length) : ema(lmacd, signal_length)
hist = lmacd - signal
plot(hist, title="Histogram", 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(lmacd, title="LMACD", color=col_macd, transp=0)
plot(signal, title="Signal", color=col_signal, transp=0)
if (crossover(hist, 0))
strategy.entry("Long", strategy.long, comment="LMACD long")
if (crossunder(hist, 0))
strategy.entry("Short", strategy.short, comment="LMACD short")