Stratégie dynamique de stop loss et de take profit RSI


Date de création: 2024-03-19 15:54:01 Dernière modification: 2024-03-19 15:54:01
Copier: 1 Nombre de clics: 623
1
Suivre
1617
Abonnés

Stratégie dynamique de stop loss et de take profit RSI

Une vue d’ensemble de la stratégie: La stratégie est basée sur la relation entre l’indicateur RSI et le prix pour optimiser la performance des transactions en ajustant dynamiquement le point d’arrêt et de perte. L’idée principale de la stratégie est d’utiliser les caractéristiques de survente et de survente de l’indicateur RSI, en combinaison avec les changements de prix et de volume des transactions, en arrêtant à temps en cas de déviation du RSI, tout en contrôlant le risque par un arrêt dynamique.

Le principe de la stratégie:

  1. Calculer la valeur de l’indicateur RSI et déterminer les seuils de survente et de survente en fonction des paramètres entrés.
  2. En comparant le RSI actuel avec le RSI des lignes K précédentes, il est possible de déterminer s’il y a une forme supérieure (isPeak) ou inférieure (isBottom).
  3. Lorsqu’un sommet se produit, un signal de vente est généré si le prix actuel est supérieur au sommet du sommet précédent et si le volume de transactions est inférieur au volume de transactions du sommet précédent.
  4. Lors d’une forme de fond, un signal d’achat est généré si le prix actuel est inférieur au bas du précédent fond et si le volume de transactions est inférieur au volume de transactions du précédent fond.
  5. Après le déclenchement du signal d’achat, il s’arrête lorsque le prix revient à son précédent bas ou lorsque le volume de transaction est inférieur au volume de transaction précédent.
  6. Après le déclenchement du signal de vente, il s’arrête lorsque le prix rebondit au sommet précédent ou lorsque le volume de transaction est inférieur au sommet précédent.
  7. Après l’ouverture de la position, le prix de stop-loss est fixé à un certain pourcentage du prix d’ouverture ((2%)), afin de contrôler le risque.

Avantages stratégiques:

  1. Les stops dynamiques permettent de verrouiller les bénéfices en temps opportun au début d’une inversion de tendance et d’améliorer les gains stratégiques.
  2. L’utilisation de la variation du trafic comme condition de jugement auxiliaire permet de filtrer efficacement les faux signaux et d’améliorer l’exactitude des signaux.
  3. Les paramètres de stop loss permettent de contrôler efficacement l’ouverture de risque d’une transaction et de réduire les retraits stratégiques.
  4. Les paramètres sont réglables pour s’adapter à différents environnements de marché et types de transactions.

Les risques stratégiques:

  1. Dans un marché en crise, le RSI peut avoir de fréquents signaux de sur-achat et de sur-vente, ce qui entraîne une plus grande quantité de faux signaux dans la stratégie.
  2. Le paramètre stop-loss peut entraîner une plus grande retraite de la stratégie à court terme.
  3. Les stratégies de suivi de tendance peuvent être moins efficaces que les stratégies de suivi de tendance dans les marchés tendance.

Les directions d’optimisation

  1. D’autres indicateurs techniques peuvent être envisagés, tels que MACD, les bandes de Brin, etc., pour améliorer la fiabilité du signal.
  2. Optimisation des seuils de stop loss en fonction des caractéristiques des différentes variétés et de la dynamique du marché.
  3. Ajout d’un module de gestion des positions permettant d’ajuster la taille des positions en fonction de la volatilité du marché et de la situation du risque du compte.
  4. Optimiser les paramètres de la stratégie pour trouver la combinaison optimale de paramètres.

Résumé: La stratégie de stop-loss dynamique du RSI utilise l’écart entre l’indicateur RSI et le prix pour combiner les variations de la quantité de transaction et la mise en place d’un stop-loss dynamique au début de la tendance afin de contrôler le risque. L’avantage de cette stratégie est qu’elle peut bloquer les bénéfices au début du renversement de la tendance, réduire le retrait de la stratégie et avoir une certaine adaptabilité. Cependant, dans les marchés en turbulence, la stratégie peut présenter de nombreux faux signaux.

Code source de la stratégie
/*backtest
start: 2024-03-11 00:00:00
end: 2024-03-15 09:00:00
period: 3m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("RMM_byMR", overlay=true)

// RSI uzunluğu girişi
rsiLength = input(14, title="RSI Uzunluğu")

// Tepe ve dip seviyeleri için girişler
overboughtLevel = input(70, title="Aşırı Alım Seviyesi")
oversoldLevel = input(30, title="Aşırı Satım Seviyesi")

// RSI hesaplama
rsiValue = rsi(close, rsiLength)

// Son tepe noktalarını tespit etme // Son dip noktalarını tespit etme
isPeak = rsiValue[2] > overboughtLevel and rsiValue[2] > rsiValue[1] and rsiValue[2] > rsiValue[3] and (rsiValue[1] > rsiValue or rsiValue[3] > rsiValue[4])
isBottom = rsiValue[2] < oversoldLevel and rsiValue[2] < rsiValue[1] and rsiValue[2] < rsiValue[3] and (rsiValue[1] < rsiValue or rsiValue[3] < rsiValue[4])

// Önceki tepe noktalarını tespit etme
prevPeak = valuewhen(isPeak, rsiValue[2], 1)
prevPeakHighPrice = valuewhen(isPeak, high[2], 1)
volumePeak = valuewhen(isPeak, volume[1]+volume[2]+volume[3], 1)
prevPeakBarIndex = valuewhen(isPeak, bar_index, 1)

// Önceki dip noktalarını tespit etme
prevBottom = valuewhen(isBottom, rsiValue[2], 1)
prevBottomLowPrice = valuewhen(isBottom, low[2], 1)
volumeBottom = valuewhen(isBottom, volume[1]+volume[2]+volume[3], 1)
prevBottomBarIndex = valuewhen(isBottom, bar_index, 1)

// Tepe noktasında satış sinyali
isSellSignal = prevPeakBarIndex > prevBottomBarIndex and isPeak and rsiValue[2] < prevPeak and high[2] > prevPeakHighPrice and (volume[1]+volume[2]+volume[3]) < volumePeak
isBuyTakeProfit = isPeak and ((rsiValue[2] < prevPeak and high[2] > prevPeakHighPrice) or (rsiValue[2] < prevPeak and (volume[1]+volume[2]+volume[3]) < volumePeak))

// Dip noktasında alış sinyali
isBuySignal = prevBottomBarIndex > prevPeakBarIndex and isBottom and rsiValue[2] > prevBottom and low[2] < prevBottomLowPrice and (volume[1]+volume[2]+volume[3]) < volumeBottom
isSellTakeProfit = isBottom and ((rsiValue[2] > prevBottom and low[2] < prevBottomLowPrice) or (rsiValue[2] > prevBottom and (volume[1]+volume[2]+volume[3]) < volumeBottom))

sellTakeProfit = valuewhen(isSellTakeProfit, low, 1)
buyTakeProfit = valuewhen(isBuyTakeProfit, high, 1)

// isSellTakeProfit koşulu için işaretlemeyi yap
plotshape(isSellTakeProfit, style=shape.triangleup, location=location.abovebar, color=color.green, size=size.small, title="Sell Take Profit", offset=-2) 

// isBuyTakeProfit koşulu için işaretlemeyi yap
plotshape(isBuyTakeProfit, style=shape.triangledown, location=location.belowbar, color=color.red, size=size.small, title="Buy Take Profit", offset=-2)

buyComment = "Buy \n Rsi:" + tostring(round(rsiValue[2], 2)) + " \n Low:" + tostring(round(low[2],2)) + " \n Hacim:" + tostring(round(volume[1]+volume[2]+volume[3],2))
sellComment = "Sell \n Rsi:" + tostring(round(rsiValue[2], 2)) + " \n High:" + tostring(round(high[2],2)) + " \n Hacim:" + tostring(round(volume[1]+volume[2]+volume[3],2)) 

// Alış sinyali durumunda uzun pozisyon aç
if (isBuySignal)
    strategy.entry("Buy", strategy.long, comment = buyComment )
    strategy.exit("SL", "Buy", stop=close * 0.98)

// Satış sinyali durumunda kısa pozisyon aç
if (isSellSignal)
    strategy.entry("Sell", strategy.short, comment = sellComment )
    strategy.exit("SL","Sell", stop=close * 1.02)
// Limit değerini sonradan belirleme


// Alış sinyali durumunda uzun pozisyon kapat
if (isBuyTakeProfit)
    strategy.close("Buy", comment="TP")

// Satış sinyali durumunda kısa pozisyon kapat
if (isSellTakeProfit)
    strategy.close("Sell", comment="TP")