La stratégie de négociation de la fourchette mobile est une stratégie de négociation quantitative qui suit les croisements des moyennes mobiles à court et à long terme (EMA) et effectue des opérations d’achat et de vente lors de la fourchette et de la fourchette. Cette stratégie est combinée avec l’indicateur MACD pour juger des signaux de négociation.
La stratégie repose principalement sur les indices 12 jours EMA, 26 jours EMA et MACD. La logique est la suivante:
La stratégie impose également des conditions de filtrage:
Cette stratégie, combinée à une croisée des moyennes mobiles et à l’indicateur MACD, permet de capturer efficacement les points de basculement des tendances du marché à court et à moyen terme. Les principaux avantages sont:
Cette stratégie comporte aussi des risques:
Les méthodes d’atténuation correspondantes:
La stratégie peut être optimisée principalement dans les domaines suivants:
La stratégie de négociation en moyenne mobile combinée à la stratégie de négociation MACD, qui forme un signal de négociation grâce à un simple suivi de la tendance, est facile à mettre en œuvre et, combinée à un contrôle du risque de conditions de filtrage appropriées, est une stratégie de négociation quantitative efficace. La stratégie peut être améliorée par l’optimisation des paramètres, l’augmentation du mécanisme de stop-loss et l’ajout d’autres indicateurs auxiliaires.
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("EMMA", max_bars_back = 200)
var up1 = #26A69A
var up2 = #B2DFDB
var down1 = #FF5252
var down2 = #FFCDD2
var confirmationLength = 2
var earliest = timestamp("20 Jan 2024 00:00 +0000")
// Regn u
shortEMA = ta.ema(close, 12)
longEMA = ta.ema(close, 26)
macd = shortEMA - longEMA
signal = ta.ema(macd, 9)
delta = macd - signal
absDelta = math.abs(delta)
previousDelta = delta[1]
signalCrossover = ta.crossover(macd, signal)
signalCrossunder = ta.crossunder(macd, signal)
harskiftetdag = hour(time[confirmationLength]) > hour(time)
enterLongSignal = signalCrossover[confirmationLength] and (macd > signal) and (absDelta >= 0.08)
exitLongSignal = signalCrossunder[confirmationLength] and (macd < signal)
enterShortSignal = signalCrossunder[confirmationLength] and (macd < signal) and (absDelta >= 0.08)
exitShortSignal = signalCrossover[confirmationLength] and (macd > signal)
// Så er det tid til at købe noe
qty = math.floor(strategy.equity / close)
if time >= earliest and not harskiftetdag
if exitLongSignal
strategy.close("long")
else if enterLongSignal
strategy.close("short")
strategy.entry("long", strategy.long, qty = qty)
if exitShortSignal
strategy.close("short")
else if enterShortSignal
strategy.close("long")
strategy.entry("short", strategy.short, qty = qty)
// Så er det tid til at vise noe
plot(macd, color=color.blue)
plot(signal, color=color.orange)
// bgcolor(color = delta > 0.1 ? color.new(color.green, 90) : color.new(color.green, 100))
// bgcolor(color = signalCrossover ? color.purple : signalCrossunder ? color.aqua : color.new(color.green, 100))
histogramColor = delta > 0 ? (previousDelta < delta ? up1 : up2) : (previousDelta > delta ? down1 : down2)
plot(
delta,
style=plot.style_columns,
color=histogramColor
)