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

Stratégie de rupture de Bollinger Momentum sur plusieurs délais avec moyenne mobile Hull

Auteur:ChaoZhang est là., Date: 2024-11-29 17h00
Les étiquettes:VWMAHMABBMTFIndice de résistance

img

Résumé

Cette stratégie est un système de trading basé sur l'analyse de plusieurs délais, combinant les bandes de Bollinger, la moyenne mobile de Hull et la moyenne mobile pondérée pour générer des signaux de trading. La stratégie fonctionne principalement sur le délai d'une heure tout en intégrant les données du marché de périodes de 5 minutes, 1 heure et 3 heures.

Principes de stratégie

La logique de base est basée sur la confirmation croisée de plusieurs indicateurs techniques. La stratégie surveille les relations de prix avec diverses moyennes mobiles sur plusieurs délais, y compris VWMA de 5 minutes, VWMA d'une heure et HMA de 3 heures. Des signaux longs sont générés lorsque le prix dépasse le seuil supérieur tout en restant au-dessus de tous les indicateurs de délais; inversement, des signaux courts se produisent lorsque le prix dépasse le seuil inférieur tout en restant en dessous de tous les indicateurs. La stratégie intègre des calculs d'écart pour définir des seuils d'entrée et de sortie dynamiques, améliorant la flexibilité du trading.

Les avantages de la stratégie

  1. L'analyse multi-temporelle réduit les risques de fausse rupture et améliore la fiabilité du signal
  2. Les paramètres dynamiques d'arrêt des pertes et de prise de profit s'adaptent aux différentes conditions du marché
  3. La taille des positions basée sur le capital de compte assure une utilisation rationnelle du capital
  4. Les mécanismes de sortie multiples assurent une adaptabilité de la stratégie
  5. L'interface graphique offre une visualisation claire des signaux de trading pour l'analyse
  6. L'intégration de plusieurs indicateurs techniques matures améliore la précision des décisions de négociation

Risques stratégiques

  1. Plusieurs indicateurs peuvent entraîner des signaux de négociation retardés
  2. Faux écarts fréquents possibles sur différents marchés
  3. Les taux de stop-loss et de take profit fixes peuvent ne pas convenir à toutes les conditions du marché
  4. Le traitement des données sur plusieurs périodes peut accroître la complexité de la stratégie
  5. Risque élevé de glissement sur les marchés volatils

Directions d'optimisation

  1. Introduction d'indicateurs de volatilité pour les ajustements dynamiques de stop-loss et de profit
  2. Ajouter la reconnaissance des conditions du marché pour l'adaptation des paramètres
  3. Optimiser le filtrage du signal pour réduire les pertes de fausses ruptures
  4. Incorporer une analyse du volume pour améliorer la fiabilité du signal de rupture
  5. Développer des mécanismes d'optimisation des paramètres adaptatifs pour améliorer la stabilité

Résumé

La stratégie construit un système de trading relativement complet grâce à l'analyse de plusieurs délais et à plusieurs indicateurs techniques. Ses atouts résident dans la fiabilité du signal et la gestion efficace des risques, bien qu'elle soit confrontée à des défis liés au décalage du signal et à l'optimisation des paramètres.


/*backtest
start: 2019-12-23 08:00:00
end: 2024-11-28 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("1H- 280, 2.7", overlay=true)


// Fetch the indicator values from different timeframes
vwma5 = request.security(syminfo.tickerid, "5", ta.wma(close, 233), lookahead = barmerge.lookahead_off)
vwma_hourly = request.security(syminfo.tickerid, "60", ta.wma(close, 89), lookahead = barmerge.lookahead_off)
hullma155_3h = request.security(syminfo.tickerid, "180", ta.hma(close, 155), lookahead = barmerge.lookahead_off)


// Calculate the deviation value
deviation = close * 0.032


// Initialize the signal variables
var float signalLine = na
var color lineColor = na


// Long Entry Conditions
longCondition_5min = close > vwma5
longCondition_hourly = close > vwma_hourly
longCondition_3h = close > hullma155_3h


// Short Entry Conditions
shortCondition_5min = close < vwma5
shortCondition_hourly = close < vwma_hourly
shortCondition_3h = close < hullma155_3h


// Long Entry
if longCondition_5min and longCondition_hourly and longCondition_3h
    signalLine := close + deviation
    lineColor := color.rgb(0, 255, 0, 1)


// Short Entry
if shortCondition_5min and shortCondition_hourly and shortCondition_3h
    signalLine := close - deviation
    lineColor := color.rgb(255, 0, 0, 1)


// Plotting the connecting line
plot(signalLine, title="Signal Line", color=lineColor, linewidth=1, style=plot.style_line)


// Colorize the signal line
bgcolor(signalLine > close ? color.rgb(0, 255, 0, 99) : color.rgb(255, 0, 0, 99), transp=90)



// Strategy settings
useTPSL = input(true, "Use TP/SL for closing long positions?")
useDownbreakOutbreak = input(false, "Use Downbreak and Outbreak for closing positions?")
useM7FClosing = input(false, "Use M7F Signal for closing positions?")


length1 = input.int(280, minval=1)
src = input(close, title="Source")
mult = input.float(2.7, minval=0.001, maxval=50, title="StdDev")


basis = ta.vwma(src, length1)
dev = mult * ta.stdev(src, length1)
upper = basis + dev
lower = basis - dev


offset = input.int(0, "Offset", minval = -500, maxval = 500)


length2 = input.int(55, minval=1)
src2 = input(close, title="Source")
hullma = ta.wma(2 * ta.wma(src2, length2 / 2) - ta.wma(src2, length2), math.floor(math.sqrt(length2)))


hullmacrosslower = ta.crossover(hullma, lower)
hullmacrossupper = ta.crossunder(hullma, upper)


breakout = ta.crossover(ohlc4, upper)
breakdown = ta.crossunder(ohlc4, upper)
outbreak = ta.crossover(ohlc4, lower)
downbreak = ta.crossunder(ohlc4, lower)


// Calculate position size and leverage
margin_pct = 1
leverage = 1
position_size = strategy.equity * margin_pct
qty = position_size / close / leverage


// Define take profit and stop loss levels
take_profit = 0.14
stop_loss = 0.06


// Opening a long position
if breakout
    strategy.entry("Long", strategy.long, qty, limit=close*(1+take_profit), stop=close*(1-stop_loss))


// Opening a short position
if downbreak
    strategy.entry("Short", strategy.short, qty, limit=close*(1-take_profit), stop=close*(1+stop_loss))


// Closing positions based on chosen method
if useTPSL
    // Using TP/SL for closing long positions
    if strategy.position_size > 0 and breakdown
        strategy.close("Long", comment="Breakdown")
else if useDownbreakOutbreak
    // Using Downbreak and Outbreak for closing positions
    if strategy.position_size > 0 and (breakdown or downbreak)
        strategy.close("Long", comment="Breakdown")
    if strategy.position_size < 0 and (outbreak or downbreak)
        strategy.close("Short", comment="Outbreak")
else if useM7FClosing
    // Using M7F Signal for closing positions
    if strategy.position_size > 0 and (signalLine < close)
        strategy.close("Long", comment="M7F Signal")
    if strategy.position_size < 0 and (signalLine > close)
        strategy.close("Short", comment="M7F Signal")


// Plotting entry signals
plotshape(hullmacrosslower, title="High Bear Volatility", style=shape.arrowup, text="^^^^^", color=color.rgb(75, 202, 79), location=location.belowbar)
plotshape(hullmacrossupper, title="High Bull Volatility", style=shape.arrowdown, text="-----", color=color.rgb(215, 72, 72), location=location.abovebar)
plotshape(breakout ? 1 : na, title="Breakout", style=shape.arrowup, text="", color=color.rgb(75, 202, 79), location=location.belowbar, size=size.tiny)
plotshape(breakdown ? 1 : na, title="Breakdown", style=shape.arrowdown, text="", color=color.rgb(201, 71, 71), location=location.abovebar, size=size.tiny)
plotshape(outbreak ? 1 : na, title="Outbreak", style=shape.arrowup, text="", color=color.rgb(0, 110, 255), location=location.belowbar, size=size.tiny)
plotshape(downbreak ? 1 : na, title="Downbreak", style=shape.arrowdown, text="", color=color.rgb(255, 111, 0), location=location.abovebar, size=size.tiny)


Relationnée

Plus de