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

Stratégie statistique de négociation de rupture par déviation standard double VWAP

Auteur:ChaoZhang est là., Date: 2025-01-06 16h31 et 36h
Les étiquettes:VWAPSDVOLHL2

img

Résumé

Cette stratégie est un système de rupture de tendance basé sur le VWAP (prix moyen pondéré par volume) et les canaux d'écart type. Elle construit une fourchette de prix dynamique en calculant le VWAP et les bandes d'écart type pour capturer les opportunités de rupture ascendante.

Principes de stratégie

  1. Calcul des indicateurs de base:
  • Calcul du VWAP à l'aide des prix et du volume HL2 journaliers
  • Calcul de l'écart type basé sur la volatilité des prix
  • Réglez les bandes supérieures et inférieures de 1,28 fois l'écart-type
  1. Logique de négociation:
  • Condition d'entrée: le prix dépasse la fourchette inférieure puis dépasse celle-ci
  • Condition de sortie: atteint l'objectif de bénéfice prédéfini
  • Intervalle minimum d'ordre pour éviter les opérations fréquentes

Les avantages de la stratégie

  1. Fondation statistique
  • Référence du centre des prix basée sur le VWAP
  • Mesure de la volatilité à l'aide de l'écart type
  • Ajustement de la fourchette de négociation dynamique
  1. Contrôle des risques
  • Fixation de l'objectif de bénéfice fixe
  • Contrôle de la fréquence de négociation
  • La stratégie à long terme réduit les risques

Risques stratégiques

  1. Risques de marché
  • Faux écarts lors d'une volatilité élevée
  • Difficulté à synchroniser avec précision les renversements de tendance
  • Augmentation des pertes sur les marchés en baisse
  1. Risques liés aux paramètres
  • Sensibilité aux réglages du multiplicateur d'écart type
  • Optimisation de l'objectif de profit nécessaire
  • L'intervalle de négociation affecte les performances

Directions d'optimisation

  1. Optimisation du signal
  • Ajouter un filtre de tendance
  • Incorporer une confirmation de changement de volume
  • Inclure des indicateurs techniques supplémentaires
  1. Optimisation de la gestion des risques
  • Placement dynamique de stop-loss
  • Taille des positions basée sur la volatilité
  • Système de gestion des commandes amélioré

Résumé

Il s'agit d'une stratégie de trading quantitative combinant des principes statistiques et une analyse technique. Grâce à la combinaison de VWAP et de bandes d'écart type, il construit un système de trading relativement fiable.


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

//@version=5 
strategy("VWAP Stdev Bands Strategy (Long Only)", overlay=true)

// Standard Deviation Inputs
devUp1 = input.float(1.28, title="Stdev above (1)")
devDn1 = input.float(1.28, title="Stdev below (1)")

// Show Options
showPrevVWAP = input(false, title="Show previous VWAP close?")
profitTarget = input.float(2, title="Profit Target ($)", minval=0) // Profit target for closing orders
gapMinutes = input.int(15, title="Gap before new order (minutes)", minval=0) // Gap for placing new orders

// VWAP Calculation
var float vwapsum = na
var float volumesum = na
var float v2sum = na
var float prevwap = na // Track the previous VWAP
var float lastEntryPrice = na // Track the last entry price
var int lastEntryTime = na // Track the time of the last entry

start = request.security(syminfo.tickerid, "D", time)
newSession = ta.change(start)

vwapsum := newSession ? hl2 * volume : vwapsum[1] + hl2 * volume
volumesum := newSession ? volume : volumesum[1] + volume
v2sum := newSession ? volume * hl2 * hl2 : v2sum[1] + volume * hl2 * hl2

myvwap = vwapsum / volumesum
dev = math.sqrt(math.max(v2sum / volumesum - myvwap * myvwap, 0))

// Calculate Upper and Lower Bands
lowerBand1 = myvwap - devDn1 * dev
upperBand1 = myvwap + devUp1 * dev

// Plot VWAP and Bands with specified colors
plot(myvwap, style=plot.style_line, title="VWAP", color=color.green, linewidth=1)
plot(upperBand1, style=plot.style_line, title="VWAP Upper (1)", color=color.blue, linewidth=1)
plot(lowerBand1, style=plot.style_line, title="VWAP Lower (1)", color=color.red, linewidth=1)

// Trading Logic (Long Only)
longCondition = close < lowerBand1 and close[1] >= lowerBand1 // Price crosses below the lower band

// Get the current time in minutes
currentTime = timestamp("GMT-0", year(timenow), month(timenow), dayofmonth(timenow), hour(timenow), minute(timenow))

// Check if it's time to place a new order based on gap
canPlaceNewOrder = na(lastEntryTime) or (currentTime - lastEntryTime) >= gapMinutes * 60 * 1000

// Close condition based on profit target
if (strategy.position_size > 0)
    if (close - lastEntryPrice >= profitTarget)
        strategy.close("B")
        lastEntryTime := na // Reset last entry time after closing

// Execute Long Entry
if (longCondition and canPlaceNewOrder)
    strategy.entry("B", strategy.long)
    lastEntryPrice := close // Store the entry price
    lastEntryTime := currentTime // Update the last entry time

    // Add label for the entry
    label.new(bar_index, close, "B", style=label.style_label_down, color=color.green, textcolor=color.white, size=size.small)

// Optional: Plot previous VWAP for reference
prevwap := newSession ? myvwap[1] : prevwap[1]
plot(showPrevVWAP ? prevwap : na, style=plot.style_circles, color=close > prevwap ? color.green : color.red)

Relationnée

Plus de