Cette stratégie est une stratégie composite basée sur la différence EMA et l'indicateur MACD pour le trading à court terme de BTC. Elle combine les signaux de l'EMA et du MACD pour générer des signaux d'achat et de vente dans certaines conditions.
Il génère des signaux d'achat lorsque la différence est négative et inférieure à un seuil et que le MACD a un croisement baissier.
En combinant les signaux de la différence EMA et du MACD, certains faux signaux peuvent être filtrés et la fiabilité des signaux est améliorée.
/*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)