Stratégie de bande cible de volatilité lissée


Date de création: 2024-01-29 16:22:14 Dernière modification: 2024-01-29 16:22:14
Copier: 0 Nombre de clics: 591
1
Suivre
1617
Abonnés

Stratégie de bande cible de volatilité lissée

Aperçu

Cette stratégie est basée sur une fluctuation lisse des prix, générant des bandes cibles de prix et des signaux de négociation lorsque les prix franchissent la bande cible.

Principe de stratégie

Cette stratégie commence par calculer l’amplitude moyenne des fluctuations du prix sur une période donnée, puis traite l’amplitude des fluctuations de manière fluide à l’aide d’une moyenne mobile indicielle, générant un taux de fluctuation de fluctuation. Le taux de fluctuation de fluctuation multiplié par un facteur donne la portée de la bande cible.

Plus précisément, la stratégie utilise la fonction smoothrng pour calculer le taux de fluctuation lisse smrng, puis pour calculer les bandes h et l de la bande de la bande cible en fonction de la valeur de smrng. Sur cette base, les conditions de position longue longCondition et de position courte sont définies. Lorsque les conditions de position longue sont remplies, un signal d’achat est généré; lorsque les conditions de position courte sont remplies, un signal de vente est généré.

Analyse des avantages

Cette stratégie présente les avantages suivants:

  1. L’utilisation de la volatilité des prix pour construire des signaux de négociation permet de suivre efficacement les changements du marché.

  2. L’indice de fluctuation de la moyenne mobile peut filtrer le bruit et générer des signaux de trading plus fiables.

  3. La portée de la bande cible peut être ajustée par le coefficient de volatilité, ce qui rend la stratégie plus flexible.

  4. La combinaison de la détection de la rupture de prix permet de saisir les opportunités de négociation en temps opportun lorsque la tendance se retourne.

Analyse des risques

Cette stratégie comporte aussi des risques:

  1. En cas de fluctuation anormale du marché, le taux de fluctuation de l’équilibrage peut ne pas refléter avec précision les fluctuations réelles, ce qui entraîne des signaux erronés. Le modèle peut être optimisé en ajustant les paramètres.

  2. La plage de la bande cible peut entraîner une fréquence de transaction trop élevée ou un signal insuffisant si elle est mal réglée. Différents paramètres peuvent être testés pour trouver la plage optimale.

  3. Les signaux de rupture sont jugés en retard de temps, ce qui peut entraîner une entrée trop tôt ou trop tard. Ils peuvent être confirmés en combinaison avec d’autres indicateurs.

Direction d’optimisation

Cette stratégie peut être optimisée dans les directions suivantes:

  1. Testez différents cycles de données sur les prix pour trouver le paramètre de cycle le plus approprié pour calculer la volatilité.

  2. Essayez différentes méthodes de calcul de la moyenne mobile, comme la moyenne mobile linéaire pondérée.

  3. Introduisez le volume de transactions ou d’autres indicateurs pour confirmer le signal de rupture.

  4. Le stop loss ou le trailing stop est utilisé pour contrôler les pertes individuelles.

  5. Optimiser la valeur du coefficient de fluctuation mult pour déterminer le meilleur rayon de bande cible.

Résumer

L’idée générale de cette stratégie est claire, la zone cible est construite à partir de la volatilité des prix, la rupture des prix est utilisée pour générer des signaux de transaction, la tendance des changements de marché peut être suivie efficacement. Cependant, il existe une certaine marge d’amélioration, la stratégie peut être rendue plus stable et plus fiable par des moyens tels que l’optimisation des paramètres et l’introduction d’indicateurs de confirmation.

Code source de la stratégie
/*backtest
start: 2023-01-22 00:00:00
end: 2024-01-28 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("1SmSm1 Strategy", shorttitle="1SmSm1", overlay=true)

// Source
src = input(defval=close, title="Source")

// Sampling Period
per = input(defval=100, minval=1, title="Sampling Period")

// Range Multiplier
mult = input(defval=3.0, minval=0.1, title="Range Multiplier")

// Smooth Average Range
smoothrng(x, t, m) =>
    wper = (t * 2) - 1
    avrng = ema(abs(x - x[1]), t)
    smoothrng = ema(avrng, wper) * m
    smoothrng

smrng = smoothrng(src, per, mult)

// Range Filter
rngfilt(x, r) =>
    rngfilt = x
    rngfilt := x > nz(rngfilt[1]) ? ((x - r) < nz(rngfilt[1]) ? nz(rngfilt[1]) : (x - r)) : ((x + r) > nz(rngfilt[1]) ? nz(rngfilt[1]) : (x + r))
    rngfilt

filt = rngfilt(src, smrng)

// Filter Direction
upward = 0.0
upward := filt > filt[1] ? nz(upward[1]) + 1 : filt < filt[1] ? 0 : nz(upward[1])

downward = 0.0
downward := filt < filt[1] ? nz(downward[1]) + 1 : filt > filt[1] ? 0 : nz(downward[1])

// Target Bands
hband = filt + smrng
lband = filt - smrng

// Breakouts
longCondition = (src > filt) and (src > src[1]) and (upward > 0)
shortCondition = (src < filt) and (src < src[1]) and (downward > 0)

strategy.entry("Buy", strategy.long, when = longCondition)
strategy.entry("Sell", strategy.short, when = shortCondition)

// Plotting
plot(filt, color=upward > 0 ? color.lime : downward > 0 ? color.red : color.orange, linewidth=3, title="Range Filter")
hbandplot = plot(hband, color=color.aqua, transp=100, title="High Target")
lbandplot = plot(lband, color=color.fuchsia, transp=100, title="Low Target")

// Fills
fill(hbandplot, lbandplot, color=color.aqua, title="Target Range")

// Bar Color
barcolor(longCondition ? color.green : shortCondition ? color.red : na)

// Alerts
alertcondition(longCondition, title="Buy Alert", message="BUY")
alertcondition(shortCondition, title="Sell Alert", message="SELL")