Cette stratégie combine les indicateurs MACD, EMA et RSI pour mettre en œuvre le trading de suivi de tendance et d'inversion. Elle génère des signaux d'achat lorsque le MACD monte à travers la ligne de signal et que le prix de clôture est au-dessus de l'EMA; et des signaux de vente lorsque le MACD tombe en dessous de la ligne de signal et que le prix de clôture est en dessous de l'EMA pour capturer les tendances. Pendant ce temps, elle négocie des inversions lorsque le RSI atteint des niveaux de surachat ou de survente.
Calculer les écarts MACD et EMA.
fastMA = ema(close, fast)
slowMA = ema(close, slow)
macd = fastMA - slowMA
signal = sma(macd, 9)
ema = ema(close, input(200))
Générer un signal d'achat: le MACD diff (macd - signal) dépasse 0 et le prix de clôture est supérieur à l'EMA.
delta = macd - signal
buy_entry= close>ema and delta > 0
Générer un signal de vente: la différence MACD descend en dessous de 0 et le prix de clôture est en dessous de l'EMA.
sell_entry = close<ema and delta<0
Réversions des échanges lorsque l'indice RSI atteint des niveaux de surachat ou de survente.
if (rsi > 70 or rsi < 30)
reversal := true
Les solutions:
Cette stratégie combine le MACD, l'EMA et le RSI pour mettre en œuvre organiquement le suivi des tendances et le trading d'inversion. Le MACD juge les directions des tendances, l'EMA filtre le bruit et le RSI capte les points d'inversion. Une telle combinaison multi-indicateurs peut mieux déterminer les mouvements du marché, améliorer la rentabilité tout en réduisant les faux signaux. L'optimisation des paramètres et la gestion des pertes d'arrêt pourraient être encore améliorées pour réduire les pertes inutiles.
/*backtest start: 2023-11-17 00:00:00 end: 2023-12-17 00:00:00 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/ // © mbuthiacharles4 //Good with trending markets //@version=4 strategy("CHARL MACD EMA RSI") fast = 12, slow = 26 fastMA = ema(close, fast) slowMA = ema(close, slow) macd = fastMA - slowMA signal = sma(macd, 9) ema = ema(close, input(200)) rsi = rsi(close, input(14)) //when delta > 0 and close above ema buy delta = macd - signal buy_entry= close>ema and delta > 0 sell_entry = close<ema and delta<0 var bought = false var sold = false var reversal = false if (buy_entry and bought == false and rsi <= 70) strategy.entry("Buy",true , when=buy_entry) bought := true strategy.close("Buy",when= delta<0 or rsi > 70) if (delta<0 and bought==true) bought := false //handle sells if (sell_entry and sold == false and rsi >= 30) strategy.entry("Sell",false , when=sell_entry) sold := true strategy.close("Sell",when= delta>0 or rsi < 30) if (delta>0 and sold==true) sold := false if (rsi > 70 or rsi < 30) reversal := true placing = rsi > 70 ? high :low label.new(bar_index, placing, style=label.style_flag, color=color.blue, size=size.tiny) if (reversal == true) if (rsi < 70 and sold == false and delta < 0) strategy.entry("Sell",false , when= delta < 0) sold := true reversal := false else if (rsi > 30 and bought == false and delta > 0) strategy.entry("Buy",true , when= delta > 0) bought := true reversal := false