Stratégie de trading de rupture de la plage de volatilité historique


Date de création: 2023-09-21 20:38:29 Dernière modification: 2023-09-21 20:38:29
Copier: 1 Nombre de clics: 677
1
Suivre
1617
Abonnés

Aperçu

Cette stratégie est basée sur la zone de fluctuation historique des prix pour déterminer les signaux de négociation. Elle calcule la différence entre le prix le plus élevé et le prix le plus bas d’une certaine période et forme une zone de fluctuation à l’aide d’une moyenne mobile.

Principe de stratégie

L’indicateur central de la stratégie est le taux de fluctuation historique des prix.

  1. Calculer la différence entre le prix le plus élevé et le prix le plus bas du dernier bar à N racine, et l’écrire en HL

  2. Calculer la moyenne des plus hauts et des plus bas prix du dernier N-root Bar (avg ((H, L))

  3. Le taux de fluctuation = HL / avg (H, L)

où N est le paramètre de “Volatility Length”。

Après avoir obtenu le taux de volatilité, on calcule le haut et le bas:

En amont = fermeture actuelle + fermeture actuelle * taux de volatilité

La trajectoire descendante = la clôture actuelle - la clôture actuelle * la volatilité

La trajectoire ascendante et descendante est ensuite lissée à travers la ligne uniforme WMA, avec le paramètre “Average Length” [2].

Faire plus quand le prix est en hausse; faire moins quand le prix est en baisse.

Les signaux de plafonnement sont donnés en fonction du paramètre “Exit Type”:

  1. Lorsque le type de sortie est un MA de volatilité, le prix revient à la position de repli de la moyenne WMA;

  2. Exit Type est un Range Crossover et le prix revient à la parité.

Avantages stratégiques

  • Utilisation de la volatilité des prix pour capturer les tendances
  • WMA homogénéisé pour une plus grande stabilité et fiabilité des intervalles
  • L’entrée de gamme permet de saisir les points de basculement
  • Retour à la ligne de parité ou arrêt en temps opportun
  • Les paramètres sont optimisés et adaptés aux différents marchés.

Risque stratégique

  • La rupture de l’intervalle peut entraîner un risque de rechute
  • La tendance à la reprise est plus susceptible de perdre.
  • La moyenne WMA n’est parfois pas assez sensible pour identifier les virages de tendance
  • L’optimisation des paramètres est difficile et nécessite beaucoup d’essais et d’erreurs
  • Les retraits sont plus risqués et nécessitent une meilleure gestion des fonds

Les mesures suivantes peuvent réduire le risque:

  • Optimisation des paramètres pour une stabilité et une fiabilité accrues
  • Ajouter d’autres indicateurs pour éviter le retour en arrière
  • Réduire le SIZE des transactions et mettre l’accent sur la gestion des fonds
  • Considérer le recours à un mécanisme de réadmission

Direction d’optimisation

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

  1. Optimisation des paramètres

Il est possible de trouver la meilleure combinaison de paramètres en testant différents paramètres de Longueur.

  1. Ajouter d’autres critères

Par exemple, si le MACD est aussi le fourche d’or au moment où le prix est sur la voie de la rupture, l’entrée en bourse est plus longue.

  1. Optimisation de la réserve

Il est possible d’optimiser le tracking stop avec de l’élasticité, plutôt qu’un simple break-out intermédiaire.

  1. Ajout d’un mécanisme de réintégration

Après l’arrêt de la perte, si la tendance se poursuit, il est possible de définir des conditions de réentrée et de suivre à nouveau la tendance.

  1. Optimisation de la gestion des positions

Les positions peuvent être ajustées dynamiquement en fonction de la volatilité du marché.

Résumer

Cette stratégie est généralement plus adaptée à la tendance, en déterminant la direction et la force de la tendance par les courbes et les courbes basses sur la volatilité, et en utilisant la moyenne WMA pour former une zone de négociation plus fiable, ce qui crée des points de vente et d’achat. Cependant, il y a quelques problèmes, tels que le retard de la tendance, l’amélioration de la méthode de stop-loss, etc.

Code source de la stratégie
/*backtest
start: 2023-09-13 00:00:00
end: 2023-09-20 00:00:00
period: 5m
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/
// © wbburgin

//@version=5
strategy("Volatility Range Breakout Strategy [wbburgin]", shorttitle = "VRB Strategy [wbburgin]", overlay=true,
 pyramiding=20,max_bars_back=2000,initial_capital=10000)

wma(float priceType,int length,float weight) =>
    norm = 0.0
    sum = 0.0
    for i = 0 to length - 1
        norm := norm + weight
        sum := sum + priceType[i] * weight
    sum / norm

// This definition of volatility uses the high-low range divided by the average of that range.
volatility(source,length) =>
    h = ta.highest(source,length)
    l = ta.lowest(source,length)
    vx = 2 * (h - l) / (h + l)
    vx

vm1 = input.int(100,"Average Length")
volLen = input.int(100,"Volatility Length")
vsrc = input.source(close,"Volatility Source")
cross_type = input.source(close,"Exit Source")
exit_type = input.string("Volatility MA",options=["Volatility MA","Range Crossover"],title="Exit Type")

volatility = volatility(vsrc,volLen)

highband1 = close + (close * volatility)
lowband1 = close - (close * volatility)
hb1 = wma(highband1,vm1,volatility)
lb1 = wma(lowband1,vm1,volatility)
hlavg = math.avg(hb1,lb1)

upcross = ta.crossover(high,hb1)    //Crossing over the high band of historical volatility signifies a bullish breakout
dncross = ta.crossunder(low,lb1)    //Crossing under the low band of historical volatility signifies a bearish breakout

vlong = upcross
vshort = dncross
vlong_exit = switch
    exit_type == "Volatility MA" => ta.crossunder(cross_type,hlavg)
    exit_type == "Range Crossover" => ta.crossunder(cross_type,hb1)
vshort_exit = switch
    exit_type == "Volatility MA" => ta.crossover(cross_type,hlavg)
    exit_type == "Range Crossover" => ta.crossover(cross_type,lb1)

if vlong
    strategy.entry("Long",strategy.long)
if vlong_exit
    strategy.close("Long")
if vshort
    strategy.entry("Short",strategy.short)
if vshort_exit
    strategy.close("Short")

plot(hlavg,color=color.white,title="Weighted Volatility Moving Average")
t = plot(hb1,color=color.new(color.red,50),title="Volatility Reversal Band - Top")
b = plot(lb1,color=color.new(color.green,50),title="Volatility Reversal Band - Bottom")

alertcondition(vlong,"Volatility Long Entry Signal")
alertcondition(vlong_exit,"Volatility Long Exit Signal")
alertcondition(vshort,"Volatility Short Entry Signal")
alertcondition(vshort_exit,"Volatility Short Exit Signal")

fill(t,b,color=color.new(color.aqua,90))