Stratégie de trading BTC basée sur la moyenne mobile EMA et l'indicateur MACD


Date de création: 2024-01-25 12:54:16 Dernière modification: 2024-01-25 12:54:16
Copier: 0 Nombre de clics: 593
1
Suivre
1617
Abonnés

Stratégie de trading BTC basée sur la moyenne mobile EMA et l’indicateur MACD

Aperçu

Cette stratégie est une stratégie composite basée sur la différence de la moyenne EMA et l’indicateur MACD pour les transactions à court terme sur BTC. Elle combine les signaux de la moyenne EMA et du MACD pour générer des signaux d’achat et de vente dans certaines conditions.

Principe de stratégie

Un signal d’achat est généré lorsque la différence est négative et inférieure à la limite, et que le MACD est en tête-à-tête. Un signal de vente est généré lorsque la différence est positive et supérieure à la limite, et que le MACD est en tête-à-tête.

En combinant les signaux utilisant le décalage moyen EMA et l’indicateur MACD, il est possible de filtrer certains faux signaux et d’améliorer la fiabilité du signal.

Analyse des avantages

  1. Les signaux sont plus fiables grâce à l’utilisation d’indicateurs composites
  2. Prise en compte des paramètres de courte période pour les transactions en ligne courte
  3. Il y a un arrêt de perte et un arrêt d’arrêt pour contrôler les risques.

Analyse des risques

  1. Les stop-loss peuvent être dépassés en cas de fortes fluctuations du marché
  2. Optimiser les paramètres pour les rendre plus adaptés aux différents environnements de marché
  3. La nécessité de tester différentes devises et différentes bourses

Direction d’optimisation

  1. Optimiser les paramètres des EMA et du MACD pour les rendre plus adaptés à l’environnement volatile de BTC
  2. Augmentation des positions ouvertes et des stratégies de réduction des positions, optimisation de l’efficacité de l’utilisation des fonds
  3. Augmentation des méthodes d’arrêt des pertes, telles que l’arrêt des déplacements, l’arrêt des oscillations, etc., pour réduire le risque
  4. Tester l’efficacité de différentes bourses et de différentes monnaies

Résumer

Cette stratégie intègre les avantages des deux indicateurs de la ligne moyenne et du MACD, utilise des signaux composés et permet de filtrer efficacement les faux signaux. Des gains stables peuvent être obtenus grâce à des paramètres d’optimisation et à une stratégie d’ouverture de position.

Code source de la stratégie
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-24 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("EMA50Diff & MACD Strategy", overlay=false)
EMA = input(18, step=1)
MACDfast = input(12)
MACDslow = input(26)
EMADiffThreshold = input(8)
MACDThreshold = input(80)
TargetValidityThreshold = input(65, step=5)
Target = input(120, step=5)
StopLoss = input(650, step=5) 
ema = ema(close, EMA)
hl = plot(0, color=white, linewidth=1)
diff = close - ema
clr = color(blue, transp=100)
if diff>0
    clr := lime
else 
    if diff<0
        clr := red

fastMA = ema(close, MACDfast)
slowMA = ema(close, MACDslow)
macd = (fastMA - slowMA)*3
signal = sma(macd, 9)
plot(macd, color=aqua, linewidth=2)
plot(signal, color=purple, linewidth=2)

macdlong = macd<-MACDThreshold and signal<-MACDThreshold and crossover(macd, signal)
macdshort = macd>MACDThreshold and signal>MACDThreshold and crossunder(macd, signal)
position = 0.0
position := nz(strategy.position_size, 0.0)
long = (position < 0 and close < strategy.position_avg_price - TargetValidityThreshold and macdlong) or 
     (position == 0.0 and diff < -EMADiffThreshold and diff > diff[1] and diff[1] < diff[2] and macdlong)

short = (position > 0 and close > strategy.position_avg_price + TargetValidityThreshold and macdshort) or 
      (position == 0.0 and diff > EMADiffThreshold and diff < diff[1] and diff[1] > diff[2] and macdshort)
amount = (strategy.equity / close) //- ((strategy.equity / close / 10)%10)
bgclr = color(blue, transp=100) //#0c0c0c
if long
    strategy.entry("long", strategy.long, amount)
    bgclr := green
if short
    strategy.entry("short", strategy.short, amount)
    bgclr := maroon
bgcolor(bgclr, transp=20)
strategy.close("long", when=close>strategy.position_avg_price + Target)
strategy.close("short", when=close<strategy.position_avg_price - Target)
strategy.exit("STOPLOSS", "long", stop=strategy.position_avg_price - StopLoss)
strategy.exit("STOPLOSS", "short", stop=strategy.position_avg_price + StopLoss)
//plotshape(long, style=shape.labelup, location=location.bottom, color=green)
//plotshape(short, style=shape.labeldown, location=location.top, color=red)
pl = plot(diff, style=histogram, color=clr)
fill(hl, pl, color=clr)