Cette stratégie utilise le principe des croisements de la moyenne mobile exponentielle (EMA), combiné à l'indicateur RSI, pour déterminer la direction de la tendance pour les entrées et les sorties.
La stratégie utilise 3 lignes EMA avec des périodes différentes - lignes rapides, moyennes et lentes. Un signal d'achat est généré lorsque l'EMA rapide traverse au-dessus de l'EMA moyenne et un signal de vente est généré lorsque l'EMA rapide traverse au-dessous de l'EMA moyenne.
L'indicateur RSI est utilisé pour mesurer les conditions de surachat et de survente. L'indicateur RSI calcule un rapport entre les jours moyens de hausse et les jours moyens de baisse sur une période pour montrer la force relative d'un actif. Les valeurs supérieures au seuil de surachat signalent les conditions de surachat, tandis que les valeurs inférieures au seuil de survente signalent les conditions de survente.
Les conditions d'achat de la stratégie sont les suivantes:
Les conditions de vente sont les suivantes:
Cette stratégie utilise les croisements EMA pour déterminer la direction de la tendance combinés à l'indicateur RSI pour identifier les opportunités d'inversion à court terme, en utilisant à la fois les concepts de suivi de tendance et de réversion moyenne.
Cette stratégie combine les croisements EMA et le RSI pour mesurer à la fois la tendance et les niveaux de surachat/survente, filtrant les fausses ruptures et les transactions bruyantes.
Les paramètres de l'indice de volatilité permettent à la stratégie de chronométrer les entrées et les sorties dans des zones de surachat/survente avantageuses.
L'exigence pour le prix de franchir les 3 lignes EMA avant d'entrer dans les transactions aide à éviter d'être fouetté.
Comme toutes les stratégies testées en arrière-plan, cette stratégie présente le risque d'une suradaptation aux tests arrière-plan.
Dans les marchés à variations, la stratégie peut générer de faux signaux et subir des pertes.
Un mauvais réglage des paramètres du RSI peut entraîner des opportunités manquées ou de faux signaux.
Envisagez d'ajouter une validation sur des délais plus longs pour éviter le bruit.
Attendez de retester les lignes EMA avant d'entrer dans les transactions pour valider le signal.
Incorporer d'autres indicateurs comme le MACD, les bandes de Bollinger pour une confirmation combinée du signal.
Utilisez l'apprentissage automatique pour optimiser les paramètres de robustesse.
Considérez l'ajout d'un stop loss pour sortir rapidement des tendances incertaines.
Cette stratégie combine les croisements EMA et RSI pour identifier la tendance tout en profitant des renversements à court terme. Elle utilise efficacement les concepts de suivi de tendance et de réversion moyenne.
/*backtest start: 2023-09-24 00:00:00 end: 2023-10-24 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/ // © chadsadachai //@version=5 strategy("EMA Cross V1", overlay= true) //rsi length = input.int(title = "Rsi Lenght" , defval=26 , minval=1, maxval=50) overS = input.int(title = "Rsi OVS line" , defval=30 , minval=1, maxval=40) overB = input.int(title = "Rsi OVB line" , defval=70 , minval=1, maxval=100) mLine = input.int(title = "Rsi Medium line" , defval=42 , minval=1, maxval=60) price = close vrsi = ta.rsi(price, length) co = vrsi >= mLine and vrsi < overB cu = ta.crossunder(vrsi, overB) //ema F = input.int(title = "EMA Fast" , defval=17 , minval=1, maxval=50) M = input.int(title = "EMA Medium" , defval=35, minval=1, maxval=100) S = input.int(title = "EMA Slow" , defval=142, minval=1, maxval=200) emaF = ta.ema(price , F) emaM = ta.ema(price , M) emaS = ta.ema(price , S) //plot plot(emaF , color = color.green , linewidth=1) plot(emaM , color = color.yellow , linewidth=1) plot(emaS , color = color.red , linewidth=1) //Time Stamp start = timestamp(input.int(title = "Start Year" , defval=2011 , minval=2011, maxval=2025), input.int(title = "Start Month" , defval=1 , minval=1, maxval=12), input.int(title = "Start Day" , defval=1 , minval=1, maxval=31), 0, 0) end = timestamp(input.int(title = "End Year" , defval=2025 , minval=2011, maxval=2025), input.int(title = "End Month" , defval=1 , minval=1, maxval=12), input.int(title = "End Day" , defval=1 , minval=1, maxval=31), 0, 0) // years = input.int(title = "Year" , defval=2018 , minval=2011, maxval=2025) // months = input.int(title = "Month" , defval=1 , minval=1, maxval=12) // days = input.int(title = "Day" , defval=1 , minval=1, maxval=31) //longCondition Default // longCondition1 = EMA_Fast >= EMA_Slow and EMA_Fast >= EMA_Medium//ta.crossover(EMA_Fast, EMA_Slow) EMA_Fast > EMA_Slow and EMA_Medium > EMA_Slow // longCondition3 = price >= EMA_Medium and price > EMA_Slow // longCondition2 = vrsi >= overSold and vrsi <= overBought //longCondition & shortCondition ETHUSD // 1.price > emaF > emaM > emaS // 2.rsi overcross overS longC1 = price > emaF and price > emaM and price > emaS // longC1 = ta.crossover(emaF, emaM) longC2 = if longC1 co // shortC1 = EMA_Fast < EMA_Medium //and EMA_Fast < EMA_Slow and EMA_Medium < EMA_Slow //and cu // shortC2 = overBought > vrsi //and vrsi < overBought //overSold < vrsi and vrsi < mediumLine // exitLong Condition // 1.price < emaF < emaM < emaS // 2.rsi overcross mediumLine exitLong1 = ta.crossunder(emaF, emaM) //or emaF < emaM//and price < emaM and price < emaF exitLong2 = ta.crossunder(vrsi,mLine) //exitLong3 = price < emaM //strategy.entry if time >=start and time <=end strategy.entry("Buy", strategy.long , when = longC1 and longC2) // if(exitLong1 or exitLong2) strategy.close("Buy" , when = exitLong1 or exitLong2) // exitShort1 = EMA_Fast > EMA_Medium // //exitShort2 = ta.crossover(vrsi , mediumLine) // exitShort2 = ta.crossunder (vrsi,mediumLine) // strategy.close("Short" , when = exitShort1 or exitShort2) // //shortCondition = cu // //if (shortCondition1 and shortCondition2) // //strategy.entry("My Short Entry Id", strategy.short)