
Cette stratégie utilise la combinaison des indicateurs RSI sur différentes périodes de temps pour juger si le marché est actuellement en sur-achat ou en survente et pour émettre des signaux d’achat et de vente combinés à la relation entre le prix et la moyenne mobile. L’objectif est d’acheter en baisse, de vendre en hausse et de réaliser un profit en liquidation.
Calculer les valeurs RSI à 5 minutes, 15 minutes et 1 heure, lorsque le RSI à 5 minutes, 15 minutes et 1 heure est inférieur à 25 à la fois, juger comme un phénomène de survente, générant un signal d’achat; lorsque le RSI à 5 minutes, 15 minutes et 1 heure est supérieur à 75 à la fois, juger comme un phénomène de survente, générant un signal de vente.
La rupture de la moyenne mobile du 21e jour est également utilisée comme signal de transaction, générant un signal d’achat si le prix est inférieur à la moyenne mobile; générant un signal de vente si le prix est supérieur à la moyenne mobile.
Selon la situation de la position, définissez le nombre de transactions initiales et les règles de mise en position: la première mise en position est fixée à 2 mains, puis à 1 main à chaque mise en position, jusqu’à ce que la position atteigne 2 mains.
La perte s’arrête à 3%. Le profit s’arrête à 1%.
L’utilisation d’une combinaison d’indicateurs RSI sur plusieurs périodes permet de détecter les surachats et les survente, ce qui améliore la fiabilité du signal.
La combinaison de la courbe mobile et de la courbe mobile génère des signaux de change et élargit les opportunités de trading.
Définir des règles de contrôle de position et de stop-loss sur le ratio de gain et de perte, et contrôler les risques.
L’utilisation de la méthode de mise en place quantitative pour augmenter les marges de profit.
Le RSI présente un risque de rebond, c’est-à-dire qu’après que le RSI a atteint le point critique de survente, le prix peut continuer à fonctionner pendant un certain temps sans inversion. Si vous suivez aveuglément le signal RSI, vous risquez de perdre.
Les signaux de négociation générés par la moyenne mobile peuvent être trompeurs. La moyenne mobile ne peut pas suivre les variations de prix en temps opportun lorsque les prix fluctuent fortement.
Les erreurs dans la définition de la taille de position et du ratio profit/perte peuvent entraîner une mauvaise maîtrise des risques.
Il est nécessaire de fixer des conditions raisonnables pour la prise de position. Si la prise de position est trop ouverte, cela peut entraîner une augmentation des pertes.
Ajustez les paramètres du RSI et testez différentes combinaisons de paramètres du RSI cyclique pour trouver des signaux de survente plus fiables.
Test de différents paramètres de la moyenne mobile comme signal de négociation auxiliaire. D’autres indicateurs techniques peuvent également être testés.
Optimiser les règles de contrôle de position et de stop-loss et mettre en place un mécanisme de contrôle des risques plus scientifique.
Optimiser les conditions d’hypothèque pour éviter l’augmentation des pertes. Vous pouvez également envisager d’utiliser une méthode d’hypothèque alternative, plutôt qu’une méthode d’hypothèque indexée.
Cette stratégie utilise la combinaison de plusieurs périodes du RSI pour déterminer le potentiel de la tendance et obtenir un taux de victoire plus élevé. Elle est également complétée par la génération de signaux de négociation avec la moyenne mobile, ce qui élargit les opportunités de négociation.
/*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()