Stratégie de l'indice de force relative moyenne mobile

Auteur:ChaoZhang est là., Date: 2023-11-28 14:07:46 Je vous en prie.
Les étiquettes:

img

Résumé

La stratégie de l'indice de force relative moyenne mobile est une stratégie de trading quantitative qui utilise à la fois les lignes moyennes mobiles et l'indice de force relative (RSI) comme signaux de trading pour saisir les opportunités dans les tendances du marché.

La logique de la stratégie

Cette stratégie repose principalement sur deux indicateurs:

  1. Moyenne mobile simple (SMA): reflète l'évolution moyenne des prix.
  2. Indice de force relative (RSI): reflète la force ou la faiblesse de la performance des prix.

La logique de base de la stratégie est la suivante:

Lorsque la ligne de l'indicateur RSI est inférieure à la ligne de la moyenne mobile, elle se trouve dans la région de survente et indique que le stock est sous-évalué, générant un signal d'achat.

En d'autres termes, la ligne de la moyenne mobile reflète dans une certaine mesure la juste valeur de l'action, tandis que l'indicateur RSI représente la force ou la faiblesse actuelle du prix.

Plus précisément, cette stratégie génère des signaux de trading à travers les étapes suivantes:

  1. Calculer la valeur du RSI et la moyenne mobile simple du cours de l'action.
  2. Comparez la relation entre la valeur du RSI et la ligne de la moyenne mobile.
  3. Un signal de vente est généré lorsque la ligne RSI traverse au-dessus de la ligne de moyenne mobile.
  4. Un signal d'achat est déclenché lorsque la ligne RSI traverse la ligne de la moyenne mobile.
  5. Mettre en place un stop-loss et un stop-trailing pour contrôler les risques.

Les avantages de la stratégie

En combinant le jugement de tendance des moyennes mobiles et l'indication de surachat/survente du RSI, cette stratégie peut déterminer efficacement les points d'inflexion du marché en tirant parti des forces de différents indicateurs.

Les principaux avantages sont les suivants:

  1. Les moyennes mobiles peuvent indiquer efficacement les tendances des prix.
  2. Le RSI peut refléter des conditions de surachat/survente.
  3. La combinaison de deux indicateurs améliore la précision de l'identification des points tournants du marché.
  4. Le stop loss peut être utilisé pour contrôler les risques.

Risques liés à la stratégie

Cette stratégie comporte également certains risques:

  1. Il existe une probabilité de faux signaux des indicateurs, ce qui peut entraîner des pertes inutiles.
  2. Le stop loss peut être déclenché lors de fortes fluctuations du marché, ce qui entraîne de grosses pertes.
  3. Des paramètres incorrects peuvent également affecter les performances de la stratégie.

Pour gérer les risques, des optimisations peuvent être effectuées de la manière suivante:

  1. Ajuster les paramètres de la moyenne mobile et du RSI pour rendre les signaux des indicateurs plus fiables.
  2. Réglez le stop loss de manière appropriée pour éviter un déclenchement trop fréquent.
  3. Adopter un stop loss dynamique pour rendre le stop loss plus souple.

Directions pour l'optimisation de la stratégie

D'autres orientations d'optimisation incluent:

  1. Testez différentes combinaisons de paramètres à travers les délais pour trouver les paramètres optimaux.
  2. Ajouter d'autres indicateurs comme le volume pour le filtre pour améliorer la fiabilité du signal.
  3. Optimiser les stratégies d'arrêt des pertes pour les rendre plus dynamiques et raisonnables.
  4. Incorporer des modèles d'apprentissage en profondeur pour l'optimisation des paramètres adaptatifs.
  5. Ajouter un module de dimensionnement des positions pour ajuster dynamiquement les positions en fonction des conditions du marché.

Grâce à l'optimisation des paramètres, l'optimisation des indicateurs, l'optimisation de la gestion des risques, etc., la stabilité et la rentabilité de cette stratégie peuvent être continuellement améliorées.

Conclusion

La stratégie RSI de la moyenne mobile utilise à la fois la tendance des prix et l'analyse de surachat / survente pour identifier efficacement les points tournants du marché et saisir les opportunités d'inversion.


/*backtest
start: 2023-11-20 00:00:00
end: 2023-11-24 06:00:00
period: 10m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2

strategy(title = "RSI versus SMA", shorttitle = "RSI vs SMA", overlay = false, pyramiding = 0, default_qty_type = strategy.percent_of_equity, default_qty_value = 10, currency = currency.GBP)

// Revision:        1
// Author:          @JayRogers
//
// *** USE AT YOUR OWN RISK ***
// - Nothing is perfect, and all decisions by you are on your own head. And stuff.
//
// Description:
//  - It's RSI versus a Simple Moving Average.. Not sure it really needs much more description.
//  - Should not repaint - Automatically offsets by 1 bar if anything other than "open" selected as RSI source.

// === INPUTS ===
// rsi
rsiSource   = input(defval = open, title = "RSI Source")
rsiLength   = input(defval = 8, title = "RSI Length", minval = 1)
// sma
maLength    = input(defval = 34, title = "MA Period", minval = 1)
// invert trade direction
tradeInvert = input(defval = false, title = "Invert Trade Direction?")
// risk management
useStop     = input(defval = false, title = "Use Initial Stop Loss?")
slPoints    = input(defval = 25, title = "Initial Stop Loss Points", minval = 1)
useTS       = input(defval = true, title = "Use Trailing Stop?")
tslPoints   = input(defval = 120, title = "Trail Points", minval = 1)
useTSO      = input(defval = false, title = "Use Offset For Trailing Stop?")
tslOffset   = input(defval = 20, title = "Trail Offset Points", minval = 1)
// === /INPUTS ===

// === BASE FUNCTIONS ===
// delay for direction change actions
switchDelay(exp, len) =>
    average = len >= 2 ? sum(exp, len) / len : exp[1]
    up      = exp > average
    down    = exp < average
    state   = up ? true : down ? false : up[1]
// === /BASE FUNCTIONS ===

// === SERIES and VAR ===
// rsi
shunt = rsiSource == open ? 0 : 1
rsiUp = rma(max(change(rsiSource[shunt]), 0), rsiLength)
rsiDown = rma(-min(change(rsiSource[shunt]), 0), rsiLength)
rsi = (rsiDown == 0 ? 100 : rsiUp == 0 ? 0 : 100 - (100 / (1 + rsiUp / rsiDown))) - 50 // shifted 50 points to make 0 median
// sma of rsi
rsiMa   = sma(rsi, maLength)
// self explanatory..
tradeDirection = tradeInvert ? 0 <= rsiMa ? true : false : 0 >= rsiMa ? true : false
// === /SERIES ===

// === PLOTTING ===
barcolor(color = tradeDirection ? green : red, title = "Bar Colours")
// hlines
medianLine  = hline(0, title = 'Median', color = #996600,  linewidth = 1)
limitUp     = hline(25, title = 'Limit Up', color = silver,  linewidth = 1)
limitDown   = hline(-25, title = 'Limit Down', color = silver,  linewidth = 1)
// rsi and ma
rsiLine     = plot(rsi, title = 'RSI', color = purple, linewidth = 2, style = line, transp = 50)
areaLine    = plot(rsiMa, title = 'Area MA', color = silver, linewidth = 1, style = area, transp = 70)
// === /PLOTTING ===

goLong() => not tradeDirection[1] and tradeDirection
killLong() => tradeDirection[1] and not tradeDirection
strategy.entry(id = "Buy", long = true, when = goLong())
strategy.close(id = "Buy", when = killLong())

goShort() => tradeDirection[1] and not tradeDirection
killShort() => not tradeDirection[1] and tradeDirection
strategy.entry(id = "Sell", long = false, when = goShort())
strategy.close(id = "Sell", when = killShort())

if (useStop)
    strategy.exit("XSL", from_entry = "Buy", loss = slPoints)
    strategy.exit("XSS", from_entry = "Sell", loss = slPoints)
// if we're using the trailing stop
if (useTS and useTSO) // with offset
    strategy.exit("XSL", from_entry = "Buy", trail_points = tslPoints, trail_offset = tslOffset)
    strategy.exit("XSS", from_entry = "Sell", trail_points = tslPoints, trail_offset = tslOffset)
if (useTS and not useTSO) // without offset
    strategy.exit("XSL", from_entry = "Buy", trail_points = tslPoints)
    strategy.exit("XSS", from_entry = "Sell", trail_points = tslPoints)

Plus de