
La stratégie utilise un ensemble de trois indicateurs, le MACD, l’EMA et le RSI, pour suivre la tendance et inverser les transactions. Elle génère un signal d’achat lorsque le MACD passe à la hausse par la ligne de signal et que le prix de clôture est supérieur à la moyenne de l’EMA. Elle génère un signal de vente lorsque le MACD descend et que le prix de clôture est inférieur à la moyenne de l’EMA, afin de capturer la tendance.
fastMA = ema(close, fast)
slowMA = ema(close, slow)
macd = fastMA - slowMA
signal = sma(macd, 9)
ema = ema(close, input(200))
delta = macd - signal
buy_entry= close>ema and delta > 0
sell_entry = close<ema and delta<0
if (rsi > 70 or rsi < 30)
reversal := true
La solution est simple:
Cette stratégie utilise les indicateurs MACD, EMA et RSI de manière intégrée, permettant une combinaison organique de suivi de la tendance et de retournement des transactions. La MACD détermine la direction de la tendance principale, le bruit des ondes EMA et l’indicateur RSI capture les points de retournement. Cette combinaison de plusieurs indicateurs permet de déterminer avec plus de précision l’évolution du marché, tout en réduisant les transactions erronées et en augmentant la probabilité de réaliser des bénéfices.
/*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