RSI Stratégie de négociation sur le solde long court

Auteur:ChaoZhang est là., Date: le 30 octobre 2023 à 15h49
Les étiquettes:

img

Résumé

Cette stratégie utilise une combinaison d'indicateurs RSI à travers différents délais pour déterminer si le marché actuel est suracheté ou survendu, et combine la relation entre le prix et la moyenne mobile pour générer des signaux d'achat et de vente.

La logique de la stratégie

  1. Calculez les valeurs du RSI des périodes de 5 minutes, 15 minutes et 1 heure. Lorsque le RSI de 5 minutes, 15 minutes et 1 heure est inférieur à 25 en même temps, il est jugé comme une condition de survente et génère un signal d'achat. Lorsque le RSI de 5 minutes, 15 minutes et 1 heure est supérieur à 75 en même temps, il est jugé comme une condition de survente et génère un signal de vente.

  2. Si le prix est inférieur à la moyenne mobile, un signal d'achat est généré. Si le prix est supérieur à la moyenne mobile, un signal de vente est généré.

  3. En fonction de la position actuelle, la taille initiale de la transaction et les règles pyramidales sont fixées: 2 contrats pour la première entrée, puis 1 contrat est ajouté à chaque fois jusqu'à ce que la position atteigne 2 contrats.

  4. Le stop loss est déclenché lorsque la perte atteint 3%.

Les avantages

  1. L'utilisation d'indicateurs RSI sur plusieurs délais pour déterminer les conditions de surachat et de survente améliore la fiabilité du signal.

  2. La combinaison des moyennes mobiles génère des signaux de négociation supplémentaires et élargit les opportunités de négociation.

  3. Le contrôle de la taille de la position et le ratio profit/perte pour le stop loss et le take profit gèrent les risques.

  4. La mise à l'échelle avec une quantité fixe élargit le potentiel de profit.

Les risques

  1. Risque de divergence du RSI. Le prix peut continuer à évoluer pendant une période après que le RSI atteigne le seuil de surachat ou de survente avant de s'inverser. Suivre aveuglément le signal du RSI peut entraîner des pertes.

  2. Le signal de négociation de la moyenne mobile peut être trompeur.

  3. Une dimension incorrecte des positions et des paramètres incorrects du ratio bénéfice/perte conduisent à un contrôle incorrect des risques.

  4. Les conditions de pyramide doivent être fixées de manière raisonnable pour éviter de grossir les pertes.

Directions d'optimisation

  1. Ajustez les paramètres du RSI et testez différentes combinaisons de périodes pour trouver des signaux de surachat/survente plus fiables.

  2. Tester différentes moyennes mobiles comme signaux de trading auxiliaires ou autres indicateurs techniques.

  3. Optimiser la taille des positions et les règles de stop loss/take profit afin de créer des mécanismes de contrôle des risques plus scientifiques.

  4. Optimiser les conditions de pyramide pour éviter les pertes de grossissement.

Résumé

Cette stratégie utilise le RSI sur plusieurs délais pour déterminer le potentiel de tendance et atteindre un taux de gain plus élevé. Des signaux supplémentaires sont générés avec des moyennes mobiles pour élargir les opportunités de trading. Le risque est géré grâce à la dimensionnement des positions, au stop loss/take profit et à la pyramide de quantité fixe.


/*backtest
start: 2023-09-29 00:00:00
end: 2023-10-29 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("5M_RSI_Strategy", overlay=true, pyramiding = 1)
len =14 
Initial_Trade_Size = 2
up = rma(max(change(close), 0), len)
down = rma(-min(change(close), 0), len)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))
RSI_1h = request.security(syminfo.tickerid, "60", rsi)
RSI_3h = request.security(syminfo.tickerid, "180", rsi)
RSI_15m = request.security(syminfo.tickerid, "15", rsi)
RSI_5m = request.security(syminfo.tickerid, "5", rsi)
RSI_1m = request.security(syminfo.tickerid, "1", rsi)
ema21_5 = ema(request.security(syminfo.tickerid, "5", close), 21)
ema21_15 = ema(request.security(syminfo.tickerid, "15", close), 21)
//(RSI_3h<=25) and  (RSI_1h<=25) and (RSI_15m<=25) and
Positive = ((RSI_5m<=25) and (RSI_15m<=25) and (RSI_1h<=25))?true:false
//alertcondition(Positive, title='POS', message='POS')        
//plotshape(Positive, style=shape.triangleup,location=location.belowbar, color=green,size =size.tiny)
Negative = (( RSI_5m>=75) and ( RSI_15m>=75) and ( RSI_1h>=75))?true:false
//alertcondition(Negative, title='NEG', message='NEG')
//plotshape(Negative, style=shape.triangledown,location=location.abovebar, color=red,size=size.tiny)          Positive and   Negative and 

lastordersize = abs(strategy.position_size)>=Initial_Trade_Size?abs(strategy.position_size):Initial_Trade_Size
//lastordersize =1
// and ((ema21_15-low)/ema21_15) > 0.077
//Adding to position rules
if (abs(strategy.position_size) >= Initial_Trade_Size and (abs(close - strategy.position_avg_price)/abs(strategy.position_avg_price)>0.03))
    if(strategy.position_avg_price > close and strategy.position_size > 0)
        strategy.entry("Add", strategy.long , qty = lastordersize , when = true)
    if(strategy.position_avg_price < close and strategy.position_size < 0)
        strategy.entry("Add", strategy.short, qty = lastordersize , when = true)
if (strategy.position_size == 0)
    if (Positive or ((ema21_5-low)/ema21_5) > 0.07)
        strategy.entry("1St Entry", strategy.long , qty = lastordersize , when = true)
    // and ((high-ema21_15)/ema21_15) > 0.077
    if (Negative or ((high-ema21_5)/ema21_5) > 0.07)
        strategy.entry("1St Entry", strategy.short, qty = lastordersize , when = true)
//lastordersize := lastordersize * 2
//or (strategy.openprofit / abs(strategy.position_size * close))>=0.01
if(cross(ema21_5, high) or cross(ema21_5, low))
    strategy.close_all()

Plus de