Stratégie de trading VWAP basée sur le canal de prix


Date de création: 2024-02-19 14:25:18 Dernière modification: 2024-02-19 14:25:18
Copier: 0 Nombre de clics: 410
1
Suivre
1166
Abonnés

Stratégie de trading VWAP basée sur le canal de prix

Aperçu

Cette stratégie est appelée Price Channel VWAP Trading Strategy et est une stratégie basée sur le canal de prix pour réaliser des transactions VWAP. L’idée principale de cette stratégie est la suivante: dans le canal de prix, l’utilisation de la moyenne de l’indicateur VWAP et de sa ligne de canal de déviation vers le haut et vers le bas pour déterminer le point d’achat et de vente.

Principe de stratégie

La stratégie utilise l’indicateur VWAP pour calculer le prix moyen d’une transaction à un prix actuel. Le VWAP représente le prix moyen, qui est le rapport entre le montant d’une transaction et le volume d’une transaction. L’indicateur VWAP reflète l’écart entre le prix actuel et le prix moyen d’une transaction.

La stratégie utilise la moyenne de l’indicateur VWAP et sa courbe de déviation. La proportion de la courbe de déviation est définie par les paramètres longlevel1 et shortlevel1. Lorsque le prix franchit la courbe de déviation supérieure, ouvrez plus d’options en fonction du pourcentage de position de la courbe de déviation lotizelong; lorsque le prix franchit la courbe de déviation inférieure, ouvrez des positions vides en fonction du pourcentage de position de la courbe de déviation lotizeshort.

La configuration des paramètres de la stratégie reflète parfaitement l’idée de la négociation de la chaîne. Les utilisateurs peuvent ajuster la largeur de la chaîne et la taille du pourcentage de position en fonction de leurs préférences, ce qui permet de réaliser différents degrés de fréquence de négociation.

Analyse des avantages

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

  1. L’indicateur VWAP permet de déterminer le centre de valeur et de saisir les tendances du marché
  2. Les transactions dans le corridor, évitent les interférences de bruit et rendent les opérations plus claires
  3. Opération de combinaison de canaux à différents niveaux, déploiement par lots et par étapes pour réduire les risques
  4. Arrêt en temps opportun des opérations de retour pour éviter les pertes causées par un retour rapide

Comme l’indicateur VWAP reflète bien la moyenne des prix, les transactions basées sur sa ligne de parcours permettent de localiser efficacement le centre de la valeur et d’éviter d’être poussé par les bandes de volatilité à court terme. En même temps, l’utilisation de différents canaux de paramètres pour la combinaison, la constitution d’un stock en lots, permet de contrôler efficacement les risques et d’éviter que les risques unilatéraux ne se concentrent sur la rupture de position.

Analyse des risques

Cette stratégie comporte également des risques à prendre en compte:

  1. L’indicateur VWAP est insensible aux transactions à haute fréquence et ne reflète pas les anomalies de prix extrêmes.
  2. Une mauvaise configuration des paramètres de la largeur du canal peut entraîner des transactions trop radicales
  3. Retour à la plage de plafonnement de l’opération si elle est trop large et peut entraîner des pertes de confinement

L’indicateur VWAP n’est pas sensible aux fluctuations des transactions à haute fréquence et peut toujours déclencher des signaux de négociation inutiles et des pertes en cas de sauts extrêmes ou d’anomalies à court terme. En outre, si les paramètres de la voie sont trop lâches, il est facile de former des signaux de pénétration de prix inefficaces. Enfin, la plage de plage de la position de retour à l’opération peut être trop large si elle est définie.

La contre-mesure consiste à évaluer raisonnablement les paramètres de configuration, à ajuster les paramètres de la voie de manière appropriée; à juger simultanément les anomalies de prix en combinaison avec d’autres indicateurs, pour éviter le suivi aveugle; et enfin à évaluer l’optimisation des paramètres des différents niveaux de voie et de la plage de régression, pour obtenir de meilleurs effets de blocage.

Direction d’optimisation

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

  1. Augmentation de la hiérarchie des canaux et optimisation des combinaisons de paramètres
  2. L’efficacité de la percée combinée à l’indicateur de volume de transactions
  3. Augmentation de la stratégie de stop loss et mise en place d’un stop loss pour le taux de rétractation

Il est possible d’ajouter des lignes de passage à plusieurs niveaux et d’optimiser les paramètres de combinaison pour obtenir un effet de transaction plus stable. En outre, il est possible d’ajouter des règles de jugement de volume de transaction, afin d’éviter des pertes de transaction en cas de sauts de prix inefficaces. Enfin, il est également possible de définir des règles de stop-loss pour quitter la zone de stop-loss lorsque la perte de position atteint une certaine proportion, afin de contrôler efficacement le risque.

Résumer

Cette stratégie combine l’indicateur VWAP avec le canal de prix, ce qui permet une stratégie de négociation relativement stable. La configuration des paramètres de la stratégie est flexible et l’utilisateur peut l’ajuster en fonction de ses préférences.

Code source de la stratégie
/*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")