Stratégie de négociation VWAP sur le canal de prix

Auteur:ChaoZhang est là., Date: 2024-02-19 14:25:18 Je vous en prie.
Les étiquettes:

img

Résumé

Cette stratégie s'appelle Price Channel VWAP Trading Strategy. C'est une stratégie qui implémente le trading VWAP basé sur les canaux de prix. L'idée principale de cette stratégie est: au sein du canal de prix, utiliser la ligne moyenne mobile de l'indicateur VWAP et ses lignes de canal de décalage supérieure et inférieure pour le jugement des points d'achat et de vente. Lorsque les lignes de canal sont brisées, ouvrir des positions en fonction du pourcentage fixe des actifs totaux et fermer des positions lorsque les prix régressent vers la ligne moyenne mobile VWAP.

Principe de stratégie

Cette stratégie calcule le prix moyen de transaction actuel à l'aide de l'indicateur VWAP. VWAP représente le prix moyen et est le rapport du chiffre d'affaires au volume de négociation. L'indicateur VWAP reflète le degré d'écart entre le prix actuel et le prix de négociation moyen historique.

La stratégie utilise la ligne moyenne mobile de l'indicateur VWAP et ses lignes de canal décalées. Les proportions des lignes de canal décalées sont définies par les paramètres longlevel1 et shortlevel1. Lorsque le prix franchit la ligne supérieure du canal décalé, ouvrez des positions longues en fonction du pourcentage de positions défini par le paramètre lotsizelong; lorsque le prix franchit la ligne inférieure du canal décalé, ouvrez des positions courtes en fonction du pourcentage de positions défini par le paramètre lotsizeshort. Après avoir ouvert des positions, choisissez de fermer des positions lorsque les prix régressent autour de la ligne moyenne mobile VWAP.

Les paramètres de cette stratégie reflètent pleinement l'idée du trading de canal. Les utilisateurs peuvent ajuster la largeur du canal et la taille des positions en pourcentage des actifs totaux en fonction de leurs propres préférences, réalisant ainsi différents degrés de fréquence de trading.

Analyse des avantages

Cette stratégie de négociation présente les avantages suivants:

  1. L'utilisation d'indicateurs VWAP pour déterminer les points moyens de valeur peut permettre de saisir l'orientation du marché
  2. Le commerce dans les gammes de canaux évite les interférences sonores pour un fonctionnement plus clair
  3. La combinaison de canaux de différents niveaux, le déploiement en lots réduit le risque
  4. La prise de profit en temps opportun par régression évite les pertes causées par des renversements rapides

Comme l'indicateur VWAP peut bien refléter le niveau de prix moyen, le trading basé sur ses lignes de canal peut effectivement verrouiller les points moyens de valeur et éviter d'être biaisé par les fluctuations à court terme. Dans le même temps, la combinaison de canaux avec des paramètres différents et la construction de positions en lots peuvent contrôler efficacement les risques et prévenir les concentrations de risque unilatérales entraînant des liquidations forcées. Enfin, en clôturant les positions à proximité de la régression de la ligne moyenne mobile VWAP en temps opportun, le profit peut réduire les pertes causées par les inversions de prix.

Analyse des risques

Cette stratégie comporte également certains risques:

  1. L'indicateur VWAP est insensible aux transactions à haute fréquence et ne peut pas refléter les anomalies extrêmes des prix.
  2. Des paramètres de largeur de canal incorrects peuvent entraîner une négociation trop agressive
  3. Si la gamme d'opérations de régression pour fermer des positions est trop large, elle peut entraîner des pertes piégées

L'indicateur VWAP est insensible à la volatilité des transactions à haute fréquence. En cas d'écart de prix extrême ou d'anomalies à court terme, il déclenchera toujours des signaux et des pertes de négociation inutiles. En outre, si les paramètres du canal sont trop lâches, il formera facilement des signaux de pénétration de prix invalide. Enfin, si la gamme de positions de clôture dans les opérations de régression est trop large, elle peut manquer le meilleur moment pour la prise de profit et causer des pertes piégées.

Les contre-mesures consistent à évaluer raisonnablement les paramètres et à ajuster les paramètres des canaux de manière appropriée; à combiner d'autres indicateurs pour juger des anomalies de prix et éviter de suivre aveuglément les signaux; enfin, à évaluer l'optimisation des paramètres des canaux de différents niveaux et plages de régression afin d'obtenir de meilleurs effets de profit.

Directions d'optimisation

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

  1. Augmenter le niveau des canaux et optimiser les combinaisons de paramètres
  2. Combiner les indicateurs de volume de négociation pour déterminer la validité des percées
  3. Ajouter des stratégies de stop-loss et définir un stop-loss par ratio de retrait

Plus de niveaux de lignes de canal peuvent être ajoutés et les paramètres combinés pour l'optimisation afin d'obtenir des effets de négociation plus stables. En outre, des règles de jugement du volume de négociation peuvent être ajoutées pour éviter les écarts de prix non valables causant des pertes commerciales. Enfin, des règles de stop loss peuvent également être définies de sorte que lorsque la perte de positions atteint un certain pourcentage, stop loss pour les positions de sortie, contrôlant efficacement les risques.

Résumé

Cette stratégie combine l'indicateur VWAP avec les canaux de prix pour atteindre une stratégie de trading relativement stable. Les paramètres de stratégie sont flexibles pour que les utilisateurs puissent s'ajuster en fonction de leurs propres préférences. Cette stratégie peut déterminer efficacement la direction des points moyens de valeur.


/*backtest
start: 2023-02-12 00:00:00
end: 2024-02-18 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title = "VWAP Bands Backtest", shorttitle = "VWAP Bands Backtest", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 3)

//Settings
lotsizelong = input(100, defval = 100, minval = 0, maxval = 10000, title = "Lot long, %")
lotsizeshort = input(100, defval = 100, minval = 0, maxval = 10000, title = "Lot short, %")
short1 = input(true, title = "short 1")
long1 = input(true, title = "long 1")
shortlevel1 = input(1.0, title = "Short line 1")
longlevel1 = input(-1.0, title = "Long line 1")
needoffset = input(true, title = "Offset")

fromyear = input(1900, defval = 1900, 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")

//Variables
size = strategy.position_size
mult = 1 / syminfo.mintick
truetime = true

//VWAP
ma = vwap(hlc3)

//Levels
longline1 = long1 ? round(ma * ((100 + longlevel1) / 100) * mult) / mult : close
shortline1 = short1? round(ma * ((100 + shortlevel1) / 100) * mult) / mult : close


//Lines
colorlong1 = long1 ? color.lime : na
colorshort1 = short1 ? color.red : na
offset = needoffset ? 1 : 0
plot(shortline1, offset = offset, color = colorshort1, title = "Short line 1")
plot(ma, offset = offset, color = color.blue, title = "MA line")
plot(longline1, offset = offset, color = colorlong1, title = "Long line 1")


//Trading
lotlong = 0.0
lotshort = 0.0
lotlong := size == 0 ? (strategy.equity / close) * (lotsizelong / 100) : lotlong[1]
lotshort := size == 0 ? (strategy.equity / close) * (lotsizeshort / 100) : lotshort[1]


if ma > 0
    if lotlong > 0
        lotslong = 0.0
        lotslong := strategy.position_size > 0 ? round(strategy.position_size / lotlong) : 0.0
        strategy.entry("L1", strategy.long, lotlong, limit = longline1, when = (lotslong == 0 and long1 and truetime))
    if lotshort > 0
        lotsshort = 0.0
        lotsshort := strategy.position_size < 0 ? round(strategy.position_size / lotshort) : 0.0
        strategy.entry("S1", strategy.short, lotshort, limit = shortline1, when = (lotsshort == 0 and short1 and truetime))
if strategy.position_size > 0
    strategy.exit("TPL", "L1", limit = ma)
if strategy.position_size < 0
    strategy.exit("TPS", "S1", limit = ma)
if time > timestamp(toyear, tomonth, today, 23, 59)
    strategy.close_all()
    strategy.cancel("L1")
    strategy.cancel("S1")
    strategy.cancel("TPL")
    strategy.cancel("TPS")

Plus de