Stratégie de négociation de l'oscillation dynamique du RSI

Auteur:ChaoZhang est là., Date: 2023-11-02 16:04:07 Je vous en prie
Les étiquettes:

img

Résumé

Cette stratégie combine les niveaux de support/résistance dynamiques et l'indicateur de force relative (RSI). Elle fixe des seuils de surachat/survente pour le RSI et génère des signaux d'achat/vente lorsque le prix dépasse les niveaux de support/résistance dynamiques alors que le RSI n'est pas dans la zone de surachat/survente.

Principaux

1. Soutien/résistance dynamique

Utilisez la fonction de sécurité pour obtenir le prix de clôture en tant que niveaux de support/résistance dynamiques.

2. Indicateur RSI

Calculer le gain moyen et la perte moyenne sur une certaine période pour générer des valeurs de l'indice de volatilité et déterminer si l'indice de volatilité atteint la zone de surachat/survente.

3. Les signaux commerciaux

Lorsque le prix dépasse les niveaux dynamiques, si le RSI n'est pas dans la zone de surachat/survente, des signaux d'achat/vente sont générés. Sinon, les signaux de rupture sont ignorés.

4. Signaux de sortie

Fermez les positions lorsque le prix retombe au niveau dynamique ou lorsque l'indice RSI revient à une fourchette normale.

Analyse des avantages

  1. Utilisez un support/résistance dynamique pour déterminer la direction de la tendance pour un taux de gain plus élevé.

  2. RSI filtre les fausses fuites et évite les fausses entrées.

  3. La combinaison de tendance et d'indicateur rend la stratégie adaptable aux différentes conditions du marché.

  4. Des règles simples et claires le rendent facile à mettre en œuvre.

Risques et solutions

  1. Des tests multiples de niveaux dynamiques peuvent générer de faux signaux.

  2. L'indicateur RSI solo peut entraîner une erreur de jugement.

  3. La fréquence de négociation sur le marché de la fourchette entraîne des coûts plus élevés.

  4. Des paramètres incorrects entraînent des signaux manquants ou faux.

Directions d'optimisation

  1. Utilisez l'apprentissage automatique pour optimiser automatiquement les paramètres RSI.

  2. Ajoutez une stratégie stop loss/profit taking pour verrouiller les bénéfices et réduire les pertes.

  3. Incorporer davantage d'indicateurs pour le filtrage combiné afin d'améliorer la stabilité.

  4. L'indicateur de volatilité est ajouté à la taille de position inférieure lorsque la volatilité est faible.

  5. Optimiser l'algorithme de dimensionnement des positions afin d'ajuster dynamiquement les positions pour différents environnements de marché.

Résumé

Cette stratégie combine le jugement de tendance et le filtrage des indicateurs pour identifier efficacement l'inversion de tendance autour des niveaux clés tout en contrôlant les risques.


/*backtest
start: 2022-10-26 00:00:00
end: 2023-11-01 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=2
strategy(title = "Noro's Levels+RSI Strategy v1.0", shorttitle = "Levels+RSI str 1.0", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 3)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Capital, %")
tf = input('W', title = "timeframe 1")
src = input(ohlc4, "Source")
ap = input(true, defval = true, title = "antipila")
cf = input(true, defval = true, title = "color filter")
rsiperiod = input(7, defval = 7, minval = 2, maxval = 100, title = "RSI Period")
rsilimit = input(30, defval = 30, minval = 1, maxval = 50, title = "RSI Limit")
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

//Level
level = request.security(syminfo.tickerid, tf, src[1])
plot(level, linewidth = 3, color = silver)

//RSI
uprsi = rma(max(change(close), 0), rsiperiod)
dnrsi = rma(-min(change(close), 0), rsiperiod)
rsi = dnrsi == 0 ? 100 : uprsi == 0 ? 0 : 100 - (100 / (1 + uprsi / dnrsi))

//Level Signals
ls = close > level and ap == false ? true : low > level ? true : false
up1 = strategy.position_size == 0 and ls and (close < open or cf == false)
exit1 = close < level and ap == false ? true : high < level ? true : false 

//RSI Signal

up2 = rsi < rsilimit and (close < open or cf == false)
exit2 = rsi > rsilimit and ls == false

//Trading
lot = strategy.position_size != strategy.position_size[1] ? strategy.equity / close * capital / 100 : lot[1]

if up1 or up2 
    strategy.entry("Long", strategy.long, needlong == false ? 0 : lot)
    
if  (exit1 and rsi > rsilimit) or exit2
    strategy.close_all()

Plus de