Stratégie de négociation du RSI à moyenne mobile exponentielle double

Auteur:ChaoZhang est là., Date: 2024-01-30 15:44:11 Je vous en prie.
Les étiquettes:

img

Résumé

La stratégie s'appelle Double Exponential Moving Average RSI Trading Strategy. Elle utilise la double EMA et l'indice de force relative (RSI) comme principaux indicateurs de trading pour mettre en œuvre le trading automatisé.

Principe de stratégie

La stratégie calcule d'abord la moyenne mobile exponentielle double (MA) du prix, puis calcule le RSI basé sur MA, et calcule ensuite la moyenne mobile exponentielle du RSI (Smooth). Elle génère des signaux d'achat lorsque le RSI dépasse sa moyenne mobile et des signaux de vente lorsque le RSI dépasse sa moyenne mobile.

Points forts de la stratégie

  1. Le double EMA réagit plus rapidement aux variations de prix et filtre un peu de bruit.
  2. Le calcul du RSI basé sur l'AM le rend plus stable et évite les faux trades.
  3. La moyenne mobile du RSI aide à confirmer les signaux de négociation et à éviter les fausses ruptures.
  4. Le nombre maximal de transactions par jour permet de contrôler le risque quotidien.
  5. Le fait de définir la taille des transactions en pourcentage des capitaux propres permet d'éviter une perte excessive pour une seule transaction.
  6. La définition de l'heure de la session de négociation évite les nœuds de temps clés et contrôle le risque de liquidité.
  7. Les points de profit et de stop-loss aident à limiter le P&L du commerce unique.
  8. L'arrêt de la traînée dans les points aide à verrouiller les bénéfices flottants et à réduire les retraits.

Risques stratégiques

  1. La double EMA réagit plus lentement aux événements du marché, manquant ainsi des opportunités de négociation à court terme.
  2. Le RSI est enclin à former de faux signaux de mort/croix dorée.
  3. Le pourcentage fixe des capitaux propres ne peut pas s'adapter à la volatilité variable du marché, ce qui risque une utilisation insuffisante des fonds.
  4. Les objectifs fixes de stop-loss/profit ne s'adaptent pas aux différents produits et conditions du marché, ce qui risque une sortie prématurée.
  5. L'arrêt de traînée a tendance à se déclencher trop souvent sur les marchés agités.

Les contre-mesures:

  1. Réduire les périodes de MA pour améliorer la sensibilité.
  2. Ajoutez d'autres indicateurs comme le volume pour filtrer les signaux.
  3. Ajustez dynamiquement la taille des transactions.
  4. Adapter les objectifs de stop-loss/profit en fonction de la volatilité du marché.
  5. Détendez les points de stop-loss en arrière de manière appropriée.

Directions d'optimisation

  1. Testez différentes combinaisons de double EMA à court/long terme pour trouver les paramètres optimaux.
  2. Test des paramètres de la période de calcul du RSI pour améliorer la fiabilité du signal mort/croix dorée.
  3. Ajoutez des indicateurs comme le volume, les bandes de Bollinger pour filtrer le bruit du signal.
  4. Ajustez dynamiquement la taille des transactions et les objectifs stop loss/profit en fonction du prix de clôture quotidien, de la volatilité, etc.
  5. Optimiser les mécanismes d'arrêt de trail pour différents produits et environnements de marché.

Résumé

La stratégie a des règles mécaniques claires et une fiabilité globale élevée, adaptée aux produits de tendance à moyen et long terme.


/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy(title='[STRATEGY][RS]DemaRSI V0', shorttitle='D', overlay=false, initial_capital=100000, currency=currency.USD)
src = input(close)
ma_length = input(21)
rsi_length = input(4)
rsi_smooth = input(4)

ma = ema(ema(src, ma_length), ma_length)
marsi = rsi(ma, rsi_length)
smooth = ema(marsi, rsi_smooth)
plot(title='M', series=marsi, color=black)
plot(title='S', series=smooth, color=red)
hline(0)
hline(50)
hline(100)

max_order_per_day = input(6)
// strategy.risk.max_intraday_filled_orders(max_order_per_day)
trade_size_as_equity_factor = input(false)
trade_size = input(type=float, defval=10000.00) * (trade_size_as_equity_factor ? strategy.equity : 1)
take_profit_in_points = input(100000)
stop_loss_in_points = input(100000)
trail_in_points = input(150)

USE_SESSION = input(true)
trade_session = input(title='Trade Session:', defval='0400-1500', confirm=false)
istradingsession = not USE_SESSION ? true : not na(time('1', trade_session))

buy_entry = istradingsession and crossover(marsi, smooth)
sel_entry = istradingsession and crossunder(marsi, smooth)

strategy.entry('buy', long=true, qty=1, when=buy_entry)
strategy.entry('sel', long=false, qty=1, when=sel_entry)

strategy.exit('buy.Exit', from_entry='buy', profit=take_profit_in_points, loss=stop_loss_in_points, trail_points=trail_in_points, trail_offset=trail_in_points)
strategy.exit('sel.Exit', from_entry='sel', profit=take_profit_in_points, loss=stop_loss_in_points, trail_points=trail_in_points, trail_offset=trail_in_points)
strategy.close_all(when=not istradingsession)

Plus de