RSI Stratégie croisée EMA

Auteur:ChaoZhang est là., Date: 2023-10-25 11:46:49 Je suis désolé
Les étiquettes:

img

Résumé

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 logique de la stratégie

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:

  1. Traversement des cours au-dessus des lignes EMA rapides, moyennes et lentes
  2. L'indice des taux d'intérêt s'élève au-dessus du seuil de survente

Les conditions de vente sont les suivantes:

  1. Traverser rapidement la EMA au-dessous de la moyenne
  2. Le RSI franchit la ligne moyenne

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.

Analyse des avantages

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é.

Analyse des risques

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.

Des possibilités d'amélioration

  1. Envisagez d'ajouter une validation sur des délais plus longs pour éviter le bruit.

  2. Attendez de retester les lignes EMA avant d'entrer dans les transactions pour valider le signal.

  3. Incorporer d'autres indicateurs comme le MACD, les bandes de Bollinger pour une confirmation combinée du signal.

  4. Utilisez l'apprentissage automatique pour optimiser les paramètres de robustesse.

  5. Considérez l'ajout d'un stop loss pour sortir rapidement des tendances incertaines.

Conclusion

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)


Plus de