Les ressources ont été chargées... Je charge...

RSI et stratégie de divergence haussière de RSI lissée

Auteur:ChaoZhang est là., Date: 2024-03-01 12:11:58 Je suis désolé
Les étiquettes:

img

Résumé

Cette stratégie combine l'indicateur RSI et l'indicateur RSI lissé pour trouver des opportunités d'achat aux bas de prix. Lorsque l'indicateur RSI fait un nouveau bas alors que le prix ne fait pas un nouveau bas, il est considéré comme un signal de divergence haussière.

La logique de la stratégie

  1. Calculer l'indicateur RSI avec 14 périodes.
  2. Calculer le RSI lissé en utilisant une double WMA pour obtenir un effet lissé.
  3. Vérifiez si le RSI est en dessous de 30, survente.
  4. Vérifiez si l'indice de résistance à la corrosion est inférieur à 35, avec une tendance directionnelle plus forte.
  5. Vérifiez si le point le plus bas du RSI est inférieur à 25.
  6. Calculez la divergence haussière du RSI, trouvez le RSI faisant un nouveau bas alors que le prix ne le fait pas.
  7. Exiger un RSI lissé tendance à la baisse dure plus de 3 périodes.
  8. Trigger le signal d'achat lorsque toutes les conditions ci-dessus sont remplies.
  9. Mettez des conditions de stop-loss et de prise de profit.

La stratégie repose principalement sur la caractéristique d'inversion du RSI, combinée à un jugement de tendance du RSI lissé, pour acheter lorsque le prix est sous pression tandis que le RSI est survendu.

Analyse des avantages

  1. La combinaison de deux indicateurs RSI améliore la performance de la stratégie.
  2. Utilisez la fonction d'inversion du RSI, il a un avantage de probabilité.
  3. Un jugement de tendance RSI lissé aide à éviter de faux retours.
  4. Une logique de stop loss et de prise de profit complète peut limiter les risques.

Analyse des risques

  1. La probabilité d'un échec de l'inversion du RSI ne peut être complètement évitée.
  2. L'indice de résistance à l'usure lissé a un effet de retard, peut manquer le meilleur moment d'entrée.
  3. Stop-loss trop lâche, risque d'augmentation des pertes

Peut optimiser le timing d'entrée en ajustant les paramètres du RSI. Resserrer la distance de stop loss pour un arrêt plus rapide. Combiner avec d'autres indicateurs pour juger du risque de tendance, réduire le taux de faux renversement.

Directions d'optimisation

  1. Efficacité de l'essai de l'indicateur RSI sous différents ensembles de paramètres.
  2. Améliorer le calcul de l'indice de résistance à l'usure pour une meilleure qualité de l'usure.
  3. Ajustez le stop loss et les points de profit, trouvez le rapport risque-rendement optimal.
  4. Ajouter des indicateurs de dynamique, etc., pour éviter les situations de faible dynamique.

Améliorer encore les performances de la stratégie en ajustant les paramètres et en combinant davantage d'indicateurs.

Conclusion

La stratégie utilise la caractéristique d'inversion du RSI dans son ensemble. La combinaison de RSI double tire pleinement parti de l'effet d'inversion tout en introduisant également l'incertitude de la divergence des indicateurs. C'est une idée de stratégie d'indicateur typique. Peut améliorer l'adaptabilité de l'indicateur grâce à des tests et une optimisation incessants.


/*backtest
start: 2024-01-30 00:00:00
end: 2024-02-29 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © BigBitsIO

//@version=4
strategy(title="RSI and Smoothed RSI Bull Div Strategy [BigBitsIO]", shorttitle="RSI and Smoothed RSI Bull Div Strategy [BigBitsIO]", overlay=true, pyramiding=1, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=.1, slippage=0)


TakeProfitPercent = input(3, title="Take Profit %", type=input.float, step=.25)
StopLossPercent = input(1.75, title="Stop Loss %", type=input.float, step=.25)

RSICurve = input(14, title="RSI Lookback Period", type=input.integer, step=1)
BuyBelowTargetPercent = input(0, title="Buy Below Lowest Low In RSI Divergence Lookback Target %", type=input.float, step=.05)
BuyBelowTargetSource = input(close, title="Source of Buy Below Target Price", type=input.source)
SRSICurve = input(10, title="Smoothed RSI Lookback Period", type=input.integer, step=1)
RSICurrentlyBelow = input(30, title="RSI Currently Below", type=input.integer, step=1)
RSIDivergenceLookback = input(25, title="RSI Divergence Lookback Period", type=input.integer, step=1)
RSILowestInDivergenceLookbackCurrentlyBelow  = input(25, title="RSI Lowest In Divergence Lookback Currently Below", type=input.integer, step=1)
RSISellAbove = input(65, title="RSI Sell Above", type=input.integer, step=1)
MinimumSRSIDownTrend = input(3, title="Minimum SRSI Downtrend Length", type=input.integer, step=1)
SRSICurrentlyBelow = input(35, title="Smoothed RSI Currently Below", type=input.integer, step=1)

PlotTarget = input(false, title="Plot Target")


RSI = rsi(close, RSICurve)
SRSI = wma(2*wma(RSI, SRSICurve/2)-wma(RSI, SRSICurve), round(sqrt(SRSICurve))) // Hull moving average

SRSITrendDownLength = 0
if (SRSI < SRSI[1])
    SRSITrendDownLength := SRSITrendDownLength[1] + 1

// Strategy Specific
ProfitTarget = (close * (TakeProfitPercent / 100)) / syminfo.mintick
LossTarget = (close * (StopLossPercent / 100)) / syminfo.mintick
BuyBelowTarget = BuyBelowTargetSource[(lowestbars(RSI, RSIDivergenceLookback)*-1)] - (BuyBelowTargetSource[(lowestbars(RSI, RSIDivergenceLookback)*-1)] * (BuyBelowTargetPercent / 100))

plot(PlotTarget ? BuyBelowTarget : na)



bool IsABuy = RSI < RSICurrentlyBelow and SRSI < SRSICurrentlyBelow and lowest(SRSI, RSIDivergenceLookback) < RSILowestInDivergenceLookbackCurrentlyBelow and BuyBelowTargetSource < BuyBelowTarget and SRSITrendDownLength >= MinimumSRSIDownTrend and RSI > lowest(RSI, RSIDivergenceLookback)
bool IsASell = RSI > RSISellAbove

if IsABuy
    strategy.entry("Positive Trend", true) // buy by market
    strategy.exit("Take Profit or Stop Loss", "Positive Trend", profit = ProfitTarget, loss = LossTarget)
if IsASell
    strategy.close("Positive Trend")


Plus de