RSI Stratégie dynamique d'arrêt des pertes et de prise de profit

Auteur:ChaoZhang est là., Date: 2024-03-19 15:54:01 Je vous en prie.
Les étiquettes:

img

Résumé de la stratégie: La stratégie est basée sur la relation entre l'indicateur RSI et le prix, optimisant la performance des transactions en ajustant dynamiquement les niveaux de prise de profit et de stop loss.

Principe de stratégie:

  1. Calculer la valeur de l'indicateur RSI et déterminer les seuils de surachat et de survente en fonction des paramètres d'entrée.
  2. Jugez si une formation de pic (isPeak) ou une formation de fond (isBottom) apparaît en comparant la valeur actuelle du RSI avec les valeurs du RSI des quelques bougies précédentes.
  3. Lorsqu'une formation de pic apparaît, si le prix actuel est supérieur au maximum du pic précédent et que le volume des transactions est inférieur au volume des transactions du pic précédent, un signal de vente est généré.
  4. Lorsqu'une formation de fond apparaît, si le prix actuel est inférieur au plus bas du fond précédent et que le volume de négociation est inférieur au volume de négociation du fond précédent, un signal d'achat est généré.
  5. Une fois le signal d'achat déclenché, profitez lorsque le prix revient au plus bas du plus bas précédent ou lorsque le volume des transactions est inférieur au volume des transactions du plus bas précédent.
  6. Une fois qu'un signal de vente est déclenché, profitez lorsque le prix rebondit au plus haut du pic précédent ou que le volume de négociation est inférieur au volume de négociation du pic précédent.
  7. Après ouverture d'une position, fixer le prix de stop loss à un certain pourcentage (2%) du prix d'ouverture afin de contrôler le risque.

Avantages stratégiques:

  1. En prenant dynamiquement des profits, les profits peuvent être verrouillés en temps opportun au début d'un renversement de tendance, améliorant les rendements de la stratégie.
  2. L'utilisation des changements de volume de négociation comme condition auxiliaire de jugement peut filtrer efficacement les faux signaux et améliorer la précision du signal.
  3. La mise en place de stop-loss permet de contrôler efficacement l'exposition au risque d'une seule opération et de réduire les retraits de stratégie.
  4. Les paramètres sont réglables et applicables à différents environnements de marché et variétés de négociation.

Risques stratégiques:

  1. Dans un marché latéral, l'indicateur RSI peut générer des signaux de surachat et de survente fréquents, ce qui entraîne la production de plus de faux signaux par la stratégie.
  2. La mise en place d'un stop-loss peut entraîner des retombées importantes à court terme.
  3. Les performances de la stratégie sur les marchés en tendance peuvent ne pas être aussi bonnes que celles des stratégies qui suivent la tendance.

Direction de l' optimisation:

  1. Il convient d'envisager l'introduction d'autres indicateurs techniques, tels que le MACD, les bandes de Bollinger, etc., pour améliorer la fiabilité des signaux.
  2. Optimiser les seuils de prise de profit et de stop loss et les ajuster dynamiquement en fonction des caractéristiques des différentes variétés et des environnements du marché.
  3. Ajouter un module de gestion de position pour ajuster la taille de la position en fonction de la volatilité du marché et de l'état du risque du compte.
  4. Effectuer une optimisation des paramètres sur la stratégie pour trouver la combinaison optimale de paramètres.

Résumé: La stratégie RSI Dynamic Stop Loss and Take Profit tire profit en temps opportun au début d'une tendance en utilisant la relation de divergence entre l'indicateur RSI et le prix, combinée à des changements dans le volume des transactions, tout en définissant des stop-loss dynamiques pour contrôler le risque. Les avantages de cette stratégie sont qu'elle peut bloquer les profits au début d'un renversement de tendance, réduire les retraits de stratégie et a une certaine adaptabilité. Cependant, dans un marché latéral, la stratégie peut générer plus de faux signaux, il est donc nécessaire d'introduire d'autres indicateurs techniques et d'optimiser les seuils de profit et de stop-loss pour améliorer les performances 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")

Plus de