Cette stratégie s'appelle
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
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.
Cette stratégie de négociation présente les avantages suivants:
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.
Cette stratégie comporte également certains risques:
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.
Cette stratégie peut être optimisée dans les directions suivantes:
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.
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")