Volatilité du momentum suivant la stratégie


Date de création: 2023-11-28 16:57:28 Dernière modification: 2023-11-28 16:57:28
Copier: 1 Nombre de clics: 630
1
Suivre
1619
Abonnés

Volatilité du momentum suivant la stratégie

Aperçu

Cette stratégie est basée sur la dynamique de suivi des fluctuations des bandes de Brin. Elle combine les indicateurs de bandes de Brin pour déterminer les tendances du marché et les points de retournement, et pour suivre les fluctuations du marché en définissant des positions de plus en plus ouvertes.

Principe de stratégie

La courbe de bourling est l’indicateur central de la stratégie. La courbe de bourling est composée d’un milieu, d’un haut et d’un bas. Le milieu est une moyenne mobile de n jours, le haut et le bas étant respectivement le décalage de l’écart standard de la moyenne.

La stratégie comporte à la fois des positions tendancielles et des positions inverses, correspondant respectivement à différentes opportunités de négociation. Les positions tendancielles requièrent la voie médiane comme référence de résistance au support, ce qui crée un effet de déviation de rupture. Les positions inverses se forment directement sur la bande de Brin et se retournent vers la voie inférieure. La stratégie, en combinant ces deux révélations, permet à la fois le suivi de la tendance et le fonctionnement inverse.

Analyse des avantages

La stratégie combine les caractéristiques de sur-achat et de sur-vente de la ceinture de Brin avec le jugement du point de basculement. Cela lui permet de s’appliquer à la fois aux marchés tendanciels et aux marchés choc et de capturer différents types d’opportunités de négociation. Le paramètre Stop Loss Exit de la stratégie empêche l’expansion des pertes.

Par rapport à la simple stratégie de la ceinture de Brin, le jugement logique de la tendance ajouté à cette stratégie rend la position plus stable, tout en saisissant les opportunités de revers. Cela améliore le rapport entre le signal et le bruit. Deuxièmement, la négociation bidirectionnelle en libre-échange exploite également plus complètement les opportunités de négociation sur les différents marchés.

Analyse des risques

La stratégie repose principalement sur les caractéristiques de survente et de survente des bandes de Brin. Ainsi, lorsque les prix fluctuent fortement, les bandes de Brin s’étendent de manière continue, ce qui peut entraîner de nombreuses prises de position à perte.

Pour les cas de défaillance de la courbe de Bourin, on peut réduire le paramètre de n jours, ce qui rend la courbe de Bourin plus sensible. Ou réduire sa gamme d’amplitude, ce qui réduit la possibilité de causer des pertes. Pour le jugement de la courbe de renversement, on peut réduire les erreurs en optimisant les paramètres de la rupture.

Direction d’optimisation

La stratégie peut être optimisée dans les domaines suivants:

  1. Les paramètres de la ceinture de Brin peuvent être ajustés en fonction des différents marchés pour trouver la meilleure combinaison de paramètres.
  2. Les autres options peuvent être testées pour déterminer l’amplitude et la moyenne de l’écart de tendance.
  3. Ajouter plus de filtres pour juger les signaux de stockage et réduire la probabilité d’erreur.
  4. D’autres modes de stop-loss peuvent être testés, tels que le stop-loss de trail.
  5. Les paramètres peuvent être ajustés en fonction de la variété et du cycle.

Résumer

Cette stratégie est une extension et une optimisation efficace de la stratégie standard de la ceinture de Brin. L’ajout de jugements d’écart de tendance améliore la stabilité et profite des opportunités de reprise.

Code source de la stratégie
/*backtest
start: 2023-11-20 00:00:00
end: 2023-11-27 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=3
strategy("Noro's Bollinger Strategy v1.3", shorttitle = "Bollinger str 1.3", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100.0, pyramiding = 5)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")

length = input(20, defval = 20, minval = 1, maxval = 1000, title = "Bollinger Length")
mult = input(2.0, defval = 2.0, minval = 0.001, maxval = 50, title = "Bollinger Mult")
source = input(ohlc4, defval = ohlc4, title = "Bollinger Source")

uset = input(true, defval = true, title = "Use trend entry")
usect = input(true, defval = true, title = "Use counter-trend entry")

fromyear = input(2018, defval = 2018, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")
showbands = input(true, defval = true, title = "Show Bollinger Bands")

//Bollinger Bands
basis = sma(source, length)
dev = mult * stdev(source, length)
upper = basis + dev
lower = basis - dev

//Lines
col = showbands ? black : na 
plot(upper, linewidth = 1, color = col)
plot(basis, linewidth = 1, color = col)
plot(lower, linewidth = 1, color = col)

//Body
body = abs(close - open)
abody = ema(body, 30)

//Signals
bar = close > open ? 1 : close < open ? -1 : 0 
up1 = bar == -1 and ohlc4 >= basis and ohlc4 < upper and (close < strategy.position_avg_price or strategy.position_size == 0) and uset
dn1 = bar == 1 and ohlc4 <= basis and ohlc4 > lower and (close > strategy.position_avg_price or strategy.position_size == 0) and uset
up2 = close <= lower and usect
dn2 = close >= upper and usect
exit = ((strategy.position_size > 0 and close > open) or (strategy.position_size < 0 and close < open)) and body > abody / 2

//Trading
if up1 or up2
    strategy.entry("Long", strategy.long, needlong == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))

if dn1 or dn2
    strategy.entry("Short", strategy.short, needshort == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
    
if time > timestamp(toyear, tomonth, today, 23, 59) or exit
    strategy.close_all()