La stratégie est appelée
La stratégie utilise l'EMA à 5 jours et l'EMA à 21 jours pour former un canal EMA. Lorsque l'EMA à 5 jours dépasse l'EMA à 21 jours, il est considéré comme un signe haussier. Lorsque l'EMA à 5 jours dépasse l'EMA à 21 jours, il est considéré comme un signe baissier. L'histogramme MACD peut filtrer les faux signaux. Les signaux d'achat ne sont générés que lorsque l'histogramme MACD est supérieur à 0. Les signaux de vente ne sont générés que lorsque l'histogramme MACD est inférieur à 0. Une fois les signaux déclenchés, les ordres sont passés avec un stop-loss fixe et un profit. Si le prix revient dans le canal EMA, les signaux seront à nouveau déclenchés pour suivre la tendance.
La stratégie combine l'identification des tendances et le filtrage des indicateurs, ce qui permet d'identifier efficacement les directions de tendance à court terme. L'utilisation du canal EMA pour déterminer la direction de la tendance majeure et de l'histogramme MACD pour filtrer les faux signaux peut grandement améliorer la rentabilité. Le mécanisme fixe de stop loss et de prise de profit garantit également un bon rapport risque-rendement.
La stratégie est principalement adaptée au trading à court terme et présente de mauvaises performances sur les marchés à long terme et à long terme. Dans les marchés latéraux à long terme, les croisements de canaux EMA se produisent fréquemment, mais la plupart sont de faux signaux. Bien que l'histogramme MACD puisse jouer un rôle dans le filtrage, son efficacité est encore limitée.
La stratégie peut être optimisée dans les aspects suivants:
Optimiser les paramètres EMA pour trouver des combinaisons de paramètres qui maximisent les rendements pour des instruments de négociation spécifiques.
Optimiser les paramètres MACD pour améliorer l'efficacité du filtrage.
Incorporer des indicateurs de volatilité pour élargir la plage de stop loss lorsque la volatilité du marché augmente.
Ajouter un mécanisme de stop loss pour rapprocher le stop loss du prix, réduisant ainsi le déclencheur inutile du stop loss tout en assurant la rentabilité.
La stratégie a une rentabilité relativement élevée et est particulièrement adaptée au trading à court terme. C'est un bon choix parmi les stratégies de trading quantitatives à haute fréquence.
/*backtest start: 2023-12-01 00:00:00 end: 2023-12-31 23:59:59 period: 1h basePeriod: 15m 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/ // © moondevonyt //@version=5 strategy("Scalping with EMA channel and MACD", overlay=true) // Exponential moving average inputs ema21 = ta.ema(close, 21) ema5 = ta.ema(close, 5) // MACD inputs fastLength = 18 slowLength = 34 signalSmoothing = 12 [macdLine, signalLine, _] = ta.macd(close, fastLength, slowLength, signalSmoothing) macdHistogram = macdLine - signalLine // Buy and sell conditions buyCondition = ta.crossover(ema5, ema21) and macdHistogram > 0 sellCondition = ta.crossunder(ema5, ema21) and macdHistogram < 0 // Re-entry conditions reEntryBuyCondition = close > ema21 reEntrySellCondition = close < ema21 // Set stop loss and take profit stopLoss = 8 takeProfit = 15 // Execute Strategy if buyCondition strategy.entry("Buy", strategy.long) strategy.exit("Take Profit/Stop Loss", "Buy", stop=close - stopLoss, limit=close + takeProfit) if reEntryBuyCondition strategy.entry("Re-Enter Buy", strategy.long) strategy.exit("Take Profit/Stop Loss", "Re-Enter Buy", stop=close - stopLoss, limit=close + takeProfit) if sellCondition strategy.entry("Sell", strategy.short) strategy.exit("Take Profit/Stop Loss", "Sell", stop=close + stopLoss, limit=close - takeProfit) if reEntrySellCondition strategy.entry("Re-Enter Sell", strategy.short) strategy.exit("Take Profit/Stop Loss", "Re-Enter Sell", stop=close + stopLoss, limit=close - takeProfit) // Plotting EMAs and MACD plot(ema21, color=color.blue, title="21 EMA") plot(ema5, color=color.orange, title="5 EMA") plot(macdHistogram, color=color.red, title="MACD Histogram") // Plot buy and sell signals plotshape(series=buyCondition, style=shape.triangleup, location=location.belowbar, color=color.green, size=size.small, title="Buy Signal") plotshape(series=sellCondition, style=shape.triangledown, location=location.abovebar, color=color.red, size=size.small, title="Sell Signal")