
Aperçu
Cette stratégie est appelée stratégie de trading RSI à double indice. Elle utilise la moyenne mobile à double indice (Double EMA) et l’indice relativement faible (RSI) comme indicateur de trading principal pour automatiser les transactions.
Principe de stratégie
La stratégie commence par calculer une moyenne mobile bi-indicateur du prix (MA), puis calcule le RSI sur la base de la MA, puis calcule la moyenne mobile indicateur du RSI (Smooth). Elle génère un signal d’achat lorsque le RSI dépasse sa moyenne mobile. Elle génère un signal de vente lorsque le RSI dépasse sa moyenne mobile.
Avantages stratégiques
- L’utilisation d’une moyenne mobile à deux indices permet de répondre plus rapidement aux variations de prix et de filtrer une partie du bruit.
- Le RSI est calculé sur la base d’une moyenne mobile pour la rendre plus stable et éviter les erreurs de trading.
- Les moyennes mobiles du RSI aident à confirmer les signaux de négociation et à filtrer les fausses ruptures.
- La définition d’un nombre maximal de transactions peut aider à contrôler le risque quotidien.
- Définir le montant de la transaction afin d’éviter des pertes individuelles excessives.
- Il s’agit de définir des périodes de négociation, d’éviter les nœuds de temps critiques et de contrôler les risques de liquidité.
- Le nombre de points stop-loss peut aider à limiter les pertes.
- Le suivi du nombre de points de stop-loss peut aider à bloquer les gains et à réduire les retraits.
Risque stratégique
- Les moyennes mobiles binaires sont plus lentes à réagir aux événements inattendus du marché et risquent de manquer des opportunités de négociation à court terme.
- Le RSI est susceptible de créer des signaux trompeurs de forks morts et de croix d’or.
- Le ratio de fonds de transactions fixes ne peut pas répondre aux fluctuations du marché et il existe un risque d’utilisation insuffisante des fonds.
- Les barrières fixes sont difficiles à adapter à différentes variétés et conditions de marché, et il existe un risque de barrières ou de barrières prématurées.
- Le stop de traçage peut être déclenché trop souvent lors d’une secousse.
La réponse:
- Une réduction appropriée des cycles des moyennes mobiles et une sensibilité accrue.
- Combiné à d’autres indicateurs tels que le filtrage de la quantité de trafic.
- Le ratio de fonds de transaction est ajusté de manière dynamique.
- La marge d’arrêt-perte est ajustée en fonction de la volatilité et des variations du marché.
- Une certaine flexibilité dans le suivi des points d’arrêt.
Orientation de l’optimisation de la stratégie
- Tester des combinaisons de moyennes mobiles binaires de différentes longueurs de temps pour trouver le paramètre optimal.
- Test des paramètres de cycle calculés du RSI pour améliorer la fiabilité des signaux d’or/dead fork.
- Ajouter des indicateurs tels que le volume des transactions, les bandes de blur et le filtrage du bruit.
- Le ratio de fonds de transaction et le stop-loss sont ajustés en fonction de la volatilité du cours de clôture du jour et de la volatilité de la position.
- Le système de suivi des pertes est optimisé en fonction des caractéristiques des différentes variétés et de l’environnement du marché.
Résumer
Cette stratégie a des règles de mécanique globales claires, de haute fiabilité et s’applique aux variétés de tendances de ligne moyenne et longue. Après optimisation, elle peut servir de base à la stratégie de trading mécanique de suivi des tendances.
Code source de la stratégie
/*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)