Cette stratégie utilise l’indicateur RSI pour déterminer la tendance du marché et émettre des signaux de négociation dans les zones de survente et de survente, dans le but de capturer le mouvement de raccourcissement de la courte ligne du marché. Elle combine à la fois l’indicateur de la courbe égale et la logique de stop-loss pour filtrer les signaux de négociation et contrôler les risques.
Calculez le RSI ((14) et définissez une ligne de survente de 67 et une ligne de survente de 44.
Le RSI émet un signal de vente lorsqu’il dépasse la ligne de vente; il émet un signal d’achat lorsqu’il dépasse la ligne de vente.
Les filtres de ligne moyenne superposée ne signalent des achats et des ventes au-dessus du RSI que lorsque le cours de clôture est inférieur au cours moyen d’hier; et des achats au-dessus du RSI que lorsque le cours de clôture est supérieur au cours moyen d’hier.
La logique de stop loss est configurée. Le stop loss peut être sélectionné en fonction du nombre de points fixes, ou en fonction de la valeur RSI.
L’indicateur RSI peut être utilisé pour juger si une position est trop achetée ou trop vendue et pour saisir les opportunités de correction de la courte ligne.
Le filtrage est effectué en ligne droite, afin d’éviter toute inversion de tendance.
Il est possible de régler le stop loss et de contrôler les pertes individuelles.
Le taux d’inflation est en train de baisser, mais il est possible de saisir les opportunités de reprise à la veille d’une reprise.
Le RSI est rétrograde et il peut y avoir des déviations qui entraînent de faux signaux. La solution consiste à ajuster les paramètres de manière appropriée ou à les utiliser en combinaison avec d’autres indicateurs.
Le nombre de points d’arrêt fixes peut être trop grand ou trop petit. Le trailing stop est plus flexible que le stop dynamique.
Les arrêts fixes peuvent être prématurés ou trop petits. Des arrêts peuvent être envisagés en fonction des valeurs RSI ou ATR.
L’incapacité à filtrer efficacement les tendances à la volatilité peut entraîner des ouvertures et des pertes fréquentes. Les paramètres du RSI peuvent être ajustés de manière appropriée ou d’autres conditions de filtrage peuvent être ajoutées.
Test de l’efficacité de l’indicateur RSI sur différents paramètres de périodes.
Ajustez les paramètres du RSI pour tester différentes lignes de surachat et de survente
Essayez différents types de moyennes mobiles ou d’autres indicateurs filtrants.
Tester l’effet de l’arrêt de freinage fixe et de l’arrêt de freinage dynamique.
Optimiser les valeurs de stop loss pour les rendre plus conformes aux lois de la volatilité du marché.
Les conditions de filtrage de l’entrée de jeu ont été ajoutées pour éviter que les tremblements de terre ne se propagent.
Envisagez de combiner plusieurs périodes de validation pour améliorer la qualité du signal.
Cette stratégie utilise l’indicateur RSI pour juger de la situation de survente et de survente. Elle est utilisée pour effectuer des transactions bidirectionnelles en combinaison avec la ligne de parité et le stop-loss.
/*backtest
start: 2022-09-21 00:00:00
end: 2023-09-27 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//© профешинил хомячело
//@version = 4
strategy("RSI Strategy Professional Хомячело", overlay=false)
length = input( 14 )
overSold = input( 44 )
overBought = input( 67 )
price = open
rsi = rsi(price, length)
band1 = hline(overSold, "overSold12", color=#C0C0C0)
band0 = hline(overBought, "overBought12", color=#C0C0C0)
plot(rsi, "RSI", color=color.red)
fill(band1, band0, color=color.black, transp=90, title="Background")
src = close
a = sma(src, 1)
aaa = strategy.opentrades + 1
n = input(defval = 0.0576923077, title = "AvgPrice - n")
//n = 0.0576923077
buysignal = crossover(rsi, overSold) and (a < (strategy.position_avg_price - n) or strategy.opentrades == 0)
sellsignal = crossunder(rsi, overBought) and (a > (strategy.position_avg_price + n) or strategy.opentrades == 0)
// crossover(rsi, overSold)
// crossunder(rsi, overBought)
if (not na(rsi))
if(buysignal)
strategy.entry("LONG", strategy.long, comment = tostring(a) + "\n(" + tostring(aaa) + ")")
n += 1000
if(sellsignal)
strategy.entry("SHORT", strategy.short, comment = tostring(a) + "\n(" + tostring(aaa) + ")")
n += 1000
//лонги орні
if(rsi < 15 and strategy.opentrades != 5 and a < (strategy.position_avg_price - n))
strategy.entry("LONG", strategy.long, comment = "ЙОБАНИЙ НАСРАВ ТА БЕРИ ЛОНГ НА ВСЬО ШО Є НАХУЙ\n" + tostring(a) + "\n(" + tostring(aaa) + "!!!)")
if(rsi < 20 and strategy.opentrades != 5 and a < (strategy.position_avg_price - n))
strategy.entry("LONG", strategy.long, comment = "ЛОНГ НА ВСЮ КОТЛЄТУ\n" + tostring(a) + "\n(" + tostring(aaa) + "!!!)")
//шорти орні
if(rsi > 85 and strategy.opentrades != 5 and a < (strategy.position_avg_price - n))
strategy.entry("SHORT", strategy.short, comment = "ЙОБАНИЙ НАСРАВ ТА БЕРИ ШОРТ НА ВСЬО ШО Є НАХУЙ\n" + tostring(a) + "\n(" + tostring(aaa) + "!!!)")
if(rsi > 80 and strategy.opentrades != 5 and a < (strategy.position_avg_price - n))
strategy.entry("SHORT", strategy.short, comment = "ШОРТ НА ВСЮ КОТЛЄТУ\n" + tostring(a) + "\n(" + tostring(aaa) + "!!!)")
//стоп-лосс і ціль
//rsi
rsion = input(defval = false, title = "Тейк-профіт по RSI")
rcl = input(defval = 73.0, title = "RSI тейк по лонгу")
rcs = input(defval = 44.0, title = "RSI тейк по шорту")
possize = input(defval = 250.0, title = "Маржа")
posp = input(defval = 3.0, title = "Плече")
//tick
ut = input(defval = false, title = "Тейк-профіт")
tar = input(defval = 4500.0, title = "Тейк-профіт у тіках")
us = input(defval = false, title = "Стоп-лосс")
stop = input(defval = 0.0, title = "Стоп-лосс у тіках")
tar:=tar/syminfo.mintick
stop:=stop/syminfo.mintick
if(ut==true and us==false)
strategy.exit(id="LX", from_entry = "LONG", profit = tar, comment = "ТейкL")
strategy.exit(id="SX", from_entry = "SHORT", profit = tar, comment = "ТейкS")
if(us==true and ut==false)
strategy.exit(id="LX", from_entry = "LONG", loss = stop, comment = "СтопL")
strategy.exit(id="SX", from_entry = "SHORT", loss = stop, comment = "СтопS")
if(ut==true and us==true)
strategy.exit(id="LX", from_entry = "LONG", profit = tar, loss = stop, comment ="Тейк/СтопL")
strategy.exit(id="SX", from_entry = "SHORT", profit = tar, loss = stop, comment ="Тейк/СтопS")
//закриття по rsi
if(rsion == 1 )
pr = round(((a / strategy.position_avg_price - 1) * possize * posp), 2)
ppr = round(((a / strategy.position_avg_price - 1) * 100 * posp), 2)
spr = round((1 - (a / strategy.position_avg_price)) * possize * posp, 2)
sppr = round((100 - (a / strategy.position_avg_price * 100)) * posp, 2)
if(rsi > rcl)
strategy.close(id="LONG", comment = "LT\n" + tostring(ppr) + "%\n" + tostring(pr) + "$\n" + tostring(a))
if(rsi < rcs)
strategy.close(id="SHORT", comment = "ST\n" + tostring(sppr) + "%\n" + tostring(spr) + "$\n" + tostring(a))