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

Différence haussière Stratégie de recherche de positions à court terme à long terme

Auteur:ChaoZhang est là., Date: 2023-11-10 11h37 et 37 min
Les étiquettes:

img

Résumé

Cette stratégie tente d'identifier les opportunités à court terme où Bitcoin est susceptible de rebondir en recherchant des modèles de divergence haussiers dans l'indicateur RSI, et ainsi déterminer de bons points d'entrée pour les transactions longues.

La logique de la stratégie

  1. Identifier la divergence haussière avec l'indicateur RSI

    • Définir les paramètres de l'indice de résistance (défaut 14 périodes)
    • Calculer la valeur actuelle de l'indice de résistance
    • Vérifiez si la divergence haussière suivante existe:
      • L'indice des taux de rebond a formé un plus bas bas
      • Le prix a formé un plus bas bas en même temps
      • Le RSI a ensuite formé un plus bas
      • Le prix a ensuite formé un plus bas plus élevé
  2. Vérifiez si la valeur de l'indice de résistance est inférieure au seuil

    • Définir le seuil inférieur de l'indice de résistance (par défaut 40)
    • Si l'indice de résistance actuel est inférieur à ce seuil, il peut indiquer un point d'entrée long.
  3. Vérifiez si le prix de clôture est inférieur au niveau le plus bas de la divergence précédente

    • Si oui, valider davantage le signal d'achat de la divergence haussière
  4. Définir les conditions de sortie du stop loss

    • Pourcentage de perte par arrêt (par défaut 5%)
    • Sortie si le tirage atteint ce pourcentage
  5. Définir les conditions de sortie du bénéfice

    • Définir le seuil élevé de l'indice de résistance (par défaut 75)
    • Exit si le RSI dépasse ce seuil

Analyse des avantages

  1. L' utilisation de la divergence de l'indicateur d' indice de volatilité peut effectivement saisir les opportunités de rebond des prix à court terme

  2. La combinaison avec le seuil inférieur de l'indicateur de risque permet de déterminer des points d'entrée spécifiques

  3. Les paramètres Stop Loss et Take Profit aident à gérer le risque et la récompense

  4. La stratégie fait référence à beaucoup d'expérience de trading réelle avec les signaux RSI Bitcoin et est très adapté pour Bitcoin long scalping

  5. Des paramètres raisonnables permettent à la stratégie de s'adapter aux différentes conditions du marché et de bien fonctionner pour la négociation en direct

Analyse des risques

  1. La divergence de l'indice de volatilité peut échouer, entraînant une perte de transactions si elle est mal identifiée

  2. Un seul indicateur tend à générer de faux signaux, doit être combiné avec d'autres

  3. Besoin de choisir les valeurs de paramètres appropriées, les paramètres incorrects affectent la rentabilité

  4. Le trading long doit tenir compte de la tendance globale, éviter le trading contre tendance

  5. Il faut faire attention aux frais de négociation, le trading à haute fréquence affecte les bénéfices

  6. Les paramètres doivent être régulièrement testés et optimisés en fonction de l'évolution des marchés

Directions d'optimisation

  1. Considérez l'ajout d'autres indicateurs tels que les moyennes mobiles pour les conditions de filtrage afin de réduire les faux signaux

  2. Testez différents paramètres de période sur chaque période pour trouver des combinaisons optimales

  3. Incorporer une analyse de tendance à plus long terme pour éviter d'acheter contre un renversement de tendance

  4. Mettre en œuvre un stop loss dynamique qui augmente progressivement les stops à mesure que le niveau de profit augmente

  5. Régler le pourcentage de stop loss en fonction de la dimension spécifique de la position

  6. Introduire l'apprentissage automatique pour l'optimisation automatique des paramètres

Conclusion

Cette stratégie vise à identifier les opportunités de rebond à court terme de Bitcoin en détectant les divergences haussières du RSI et en déterminant les bons points d'entrée longs. La stratégie est simple et efficace, incorporant beaucoup d'expérience de trading pratique, ce qui la rend très adaptée aux longs de scalping Bitcoin. Cependant, la dépendance à un seul indicateur tend à générer de faux signaux, elle doit donc être combinée à d'autres indicateurs.


/*backtest
start: 2023-11-02 00:00:00
end: 2023-11-09 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Bullish Divergence Short-term Long Trade Finder", overlay=false)

max_range = 50 
min_range = 5
///pivot_left = 25
pivot_right = 5

//Inputs
src = input(close, title="Source")
rsiBearCondMin = input.int(50, title="RSI Bearish Condition Minimum")
rsiBearCondSellMin = input.int(60, title="RSI Bearish Condition Sell Min")
rsiBullCondMin = input.int(40, title="RSI Bull Condition Minimum")
pivot_left = input.int(25, title="Look Back this many candles")
SellWhenRSI = input.int(75, title="RSI Sell Value")
StopLossPercent = input.int(5, title="Stop loss Percentage")
rsiPeriod = input.int(14, title="RSI Length")
rsiOversold = input.int(30, title="RSI Oversold Level")
rsiOverbought = input.int(70, title="RSI Overbought Level")

//RSI Function/ value 
rsi_value = ta.rsi(src, rsiPeriod)
rsi_hour = request.security(syminfo.tickerid,'60',rsi_value)
rsi_4hour = request.security(syminfo.tickerid,'240',rsi_value)
rsi_Day = request.security(syminfo.tickerid,'D',rsi_value)
plot(rsi_value, title="RSI", linewidth = 2, color = color.black, display =display.all)
hline(50, linestyle = hline.style_dotted)
rsi_ob = hline(70, linestyle=hline.style_dotted)
rsi_os = hline(30, linestyle=hline.style_dotted)
fill(rsi_ob, rsi_os, color.white)
SL_percent = (100-StopLossPercent)/100 

pivot_low_true = na(ta.pivotlow(rsi_value, pivot_left, pivot_right)) ? false : true

//create a function that returns truee/false
confirm_range(x) => 
    bars = ta.barssince(x == true) //counts the number of bars since thee last time condition was true
    min_range <= bars and bars <= max_range // makees sure bars is less than max_range(50) and greater than min_range(5) 


// RSI higher check / low check
RSI_HL_check = rsi_value<rsiBullCondMin and rsi_value > ta.valuewhen(pivot_low_true and rsi_value<rsiBullCondMin, rsi_value,1) and confirm_range(pivot_low_true[1]) 

// price check for lower low
price_ll_check = low < ta.valuewhen(pivot_low_true, low, 1)

bullCond = price_ll_check and RSI_HL_check and pivot_low_true

//pivot_high_true = na(ta.pivothigh(rsi_value, pivot_left, pivot_right))  ? false : true
pivot_high_true = na(ta.pivothigh(rsi_value, pivot_left, pivot_right))   ? false : true

// RSI Lower check / high check ensuring that the RSI dips below 30 to start divergence 
RSI_LH_check = rsi_value < ta.valuewhen(pivot_high_true and rsi_value>rsiBearCondMin, rsi_value,1) and confirm_range(pivot_high_true[1]) //and rsi_value[pivot_right] >= 65

// price check for lower low
price_hh_check = high > ta.valuewhen(pivot_high_true, high, 1)

bearCond = price_hh_check and RSI_LH_check and pivot_high_true and rsi_value[3] > rsiBearCondSellMin

plot(pivot_low_true ? rsi_value : na, offset=-5, linewidth=3, color=(bullCond ? color.green : color.new(color.white, 100)))

plotshape(bullCond ? rsi_value : na , text = "BUY", style =  shape.labelup, location = location.absolute, color = color.green, offset =0, textcolor = color.white )

plot(pivot_low_true ? rsi_value : na, offset=-5, linewidth=3, color=(bearCond ? color.red : color.new(color.white, 100)))

plotshape(bearCond ? rsi_value : na , text = "Sell", style =  shape.labelup, location = location.absolute, color = color.red, offset =0, textcolor = color.white )
//[bbUpperBand, bbMiddleBand, bbLowerBand] = ta.bb(src, bbPeriod, bbDev)

//Entry Condition
longCondition = false

//bullEntry = bullCond and RSI_HL_check and confirm_range(pivot_low_true[1])
if bullCond and close < ta.valuewhen(pivot_low_true, low, 1) and rsi_hour <40 ///and rsi_4hour<40 //and rsi_Day<50
    strategy.entry("Long", strategy.long)
    
//Exit Condition
if (strategy.position_size > 0 and close < strategy.position_avg_price*SL_percent)
    strategy.close("Long")
if (strategy.position_size > 0 and (rsi_value > SellWhenRSI or bearCond))
    strategy.close("Long")


Plus de