Tendance à la suite de la stratégie EMA et RSI

Auteur:ChaoZhang est là., Date: le 26 septembre 2023 15:39:48
Les étiquettes:

Résumé

Cette stratégie tire pleinement parti des moyennes mobiles et de l'indice de force relative pour identifier et suivre les tendances. Elle n'a besoin que de deux indicateurs pour déterminer la tendance et trouver le bon moment d'entrée/sortie.

La logique de la stratégie

La stratégie utilise trois EMA avec des périodes différentes, avec EMA-A ayant la période la plus courte, EMA-B moyenne et EMA-C la plus longue. Lorsque la plus courte EMA-A traverse au-dessus de la plus longue EMA-B, elle signale une tendance à la hausse, donc aller long. Inversement, lorsque EMA-A traverse en dessous de EMA-B, elle signale une tendance à la baisse, donc aller court. Pour filtrer les faux signaux, elle utilise également la plus longue EMA-C - en considérant seulement l'entrée après que le prix a brisé EMA-C.

La stratégie utilise également le RSI pour localiser les points de sortie. Lorsqu'il est long, il ferme la position si le RSI dépasse 70. Lorsqu'il est court, il sort si le RSI tombe en dessous de 30.

Analyse des avantages

  • Utilise la force de l'EMA pour identifier les tendances
  • L'indicateur RSI aide à déterminer le moment d'entrée et de sortie
  • Stratégie simple avec seulement 2 indicateurs
  • Paramètres personnalisables pour ajuster le style de stratégie
  • Les bénéfices des premières, moyennes et dernières phases de la tendance

Analyse des risques

  • Les baisses des tendances majeures peuvent générer de faux signaux
  • Vulnérables aux piqûres de fouet sur différents marchés
  • Des paramètres RSI incorrects peuvent entraîner des sorties prématurées
  • Les périodes EMA doivent être soigneusement sélectionnées, trop courtes peuvent être sensibles au bruit, trop longes peuvent manquer les tendances

Ces risques peuvent être réduits en optimisant les paramètres RSI, en ajoutant des filtres et en les combinant avec l'analyse des tendances.

Directions d'optimisation

  • Optimiser les paramètres RSI pour une meilleure prise de profit et un meilleur contrôle des risques
  • Testez différentes combinaisons de périodes EMA
  • Ajouter des indicateurs de volume ou autres indicateurs de confirmation
  • Utiliser l'ATR pour le dimensionnement du stop loss
  • Envisager de réduire la taille de la position au milieu de la tendance
  • Optimiser le timing d'entrée avec les ruptures, le volume, etc.
  • Examiner les mécanismes de rentrée

Résumé

Cette stratégie combine des indicateurs de suivi de tendance et d'oscillateur pour l'identification et la capture de tendance. Avec un paramètre simple et une optimisation logique, elle peut être grandement améliorée tout en maintenant la simplicité.


/*backtest
start: 2023-08-26 00:00:00
end: 2023-09-25 00:00:00
period: 2h
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/
//@author Alorse

//@version=5
// strategy(title='Tendency EMA + RSI [Alorse]', shorttitle='Tendece EMA + RSI [Alorse]', overlay=true, pyramiding=0, currency=currency.USD, default_qty_type=strategy.percent_of_equity, initial_capital=1000, default_qty_value=20, commission_type=strategy.commission.percent, commission_value=0.01)

// Bollinger Bands
len = input.int(14, minval=1, title='Length', group='RSI')
src = input.source(close, 'Source', group='RSI')
rsi = ta.rsi(src, len)

// Moving Averages
len_a = input.int(10, minval=1, title='EMA A Length', group='Moving Averages')
out_a = ta.ema(close, len_a)
plot(out_a, title='EMA A', color=color.purple)

len_b = input.int(20, minval=1, title='EMA B Length', group='Moving Averages')
out_b = ta.ema(close, len_b)
plot(out_b, title='EMA B', color=color.orange)

len_c = input.int(100, minval=1, title='EMA C Length', group='Moving Averages')
out_c = ta.ema(close, len_c)
plot(out_c, title='EMA B', color=color.green)

// Strategy Conditions
stratGroup = 'Strategy'
showLong = input.bool(true, title='Long entries', group=stratGroup)
showShort = input.bool(false, title='Short entries', group=stratGroup)
closeAfterXBars = input.bool(true, title='Close after X # bars', tooltip='If trade is in profit', group=stratGroup)
xBars = input.int(24, title='# bars')

entryLong = ta.crossover(out_a, out_b) and out_a > out_c and close > open
exitLong = rsi > 70

entryShort = ta.crossunder(out_a, out_b) and out_a < out_c and close < open
exitShort = rsi < 30


bought = strategy.opentrades[0] == 1 and strategy.position_size[0] > strategy.position_size[1]
entry_price = ta.valuewhen(bought, open, 0)
var int nPastBars = 0
if strategy.position_size > 0
    nPastBars := nPastBars + 1
    nPastBars
if strategy.position_size == 0
    nPastBars := 0
    nPastBars
if closeAfterXBars
    exitLong := nPastBars >= xBars and close > entry_price ? true : exitLong
    exitLong
    exitShort := nPastBars >= xBars and close < entry_price ? true : exitShort
    exitShort

// Long Entry
strategy.entry('Long', strategy.long, when=entryLong and showLong)
strategy.close('Long', when=exitLong)

// Short Entry
strategy.entry('Short', strategy.short, when=entryShort and showShort)
strategy.close('Short', when=exitShort)



Plus de