
Die Price Channel VWAP Trading Strategy (Price Channel VWAP Trading Strategy) ist eine auf dem Preiskanal basierende Strategie zur Realisierung von VWAP-Transaktionen. Die Hauptidee der Strategie ist: Innerhalb des Preiskanals, die Mittellinie des VWAP-Indikators und seine auf- und abwärtsgesteuerte Kanallinie zu verwenden, um einen Kauf- und Verkaufspunkt zu beurteilen. Bei einem Durchbruch der Kanallinie wird eine Position gemäß dem Prozentsatz der Gesamtvermögenswerte für feste Positionen eröffnet.
Die Strategie berechnet den Durchschnittshandelspreis des aktuellen Preises anhand des VWAP-Wertes. Der VWAP-Wert ist der Durchschnittspreis des Preises, der das Verhältnis zwischen dem Handelsvolumen und dem Handelsvolumen darstellt. Der VWAP-Wert spiegelt die Abweichung zwischen dem aktuellen Preis und dem historischen Handelsdurchschnitt wider.
Die Strategie verwendet die Mittellinie des VWAP-Indikators und seine Abweichungskanallinie. Die Proportion der Abweichungskanallinie wird durch die Parameter-Platte longlevel1 und shortlevel1 eingestellt. Wenn der Preis die Abweichungskanallinie überschreitet, öffnet er mehrere Positionen nach dem Positionsprozentsatz der Parameter-Platte lotsizelong. Wenn der Preis die Abweichungskanallinie unterbricht, öffnet er leere Positionen nach dem Positionsprozentsatz der Parameter-Platte lotsizeshort.
Die Parameter-Einstellungen der Strategie spiegeln die Idee des Kanalhandels wider. Der Benutzer kann die Kanalbreite und die Positionsanteilsgröße an seine eigenen Vorlieben anpassen, um eine unterschiedliche Handelsfrequenz zu erreichen.
Die Handelsstrategie hat folgende Vorteile:
Da der VWAP-Indikator den Durchschnitt der Preise gut widerspiegelt, kann der Handel auf der Grundlage seiner Kanallinie den Wertzentrum effektiv sperren und eine kurzfristige Bandbreite verhindern. Gleichzeitig kann die Kombination verschiedener Parameterkanäle verwendet werden, um Lager in Gruppen zu errichten, um das Risiko effektiv zu kontrollieren und zu verhindern, dass einseitige Risiken die Position konzentrieren. Schließlich kann der Verlust durch Preisumkehr durch eine rechtzeitige Rückkehr in die Position in der Nähe der VWAP-Gleichgewichtung verringert werden.
Die Strategie birgt auch einige Risiken, die beachtet werden müssen:
Der VWAP-Indikator ist unempfindlich gegenüber Hochfrequenz-Handelsschwankungen und kann bei extremen Sprüngen oder kurzfristigen Ausfällen zu unnötigen Handelssignalen und Verlusten führen. Darüber hinaus kann ein zu lockeres Preisdurchdringungssignal erzeugt werden, wenn die Kanalparameter zu locker eingestellt sind. Schließlich kann ein zu breiter Ausgleichsbereich für die Rückkehr zum Handel zu einem Verlust führen, wenn der optimale Stoppzeitpunkt verpasst wird.
Die Abwehr besteht darin, die Parameter für die vernünftige Bewertung einzustellen und die Kanalparameter angemessen anzupassen. Gleichzeitig wird in Kombination mit anderen Indikatoren eine außergewöhnliche Preisbeurteilung vorgenommen, um eine blinde Folge zu vermeiden. Schließlich wird die Optimierung der Parameter für die verschiedenen Ebenen der Kanäle und des Regressionsbereichs bewertet, um eine bessere Stoppwirkung zu erzielen.
Die Strategie kann in folgenden Richtungen optimiert werden:
Es können mehrere Ebenen der Kanallinie hinzugefügt werden und die Kombinationsparameter optimiert werden, um eine stabilere Handelswirkung zu erzielen. Darüber hinaus können die Urteilsregeln für die Handelsmenge hinzugefügt werden, um zu verhindern, dass ungültige Preissprünge zu Handelsverlusten führen. Schließlich können auch Stop-Loss-Regeln eingerichtet werden, die beim Erreichen eines bestimmten Prozentsatzes an Verlusten aus der Position ausfallen, um das Risiko effektiv zu kontrollieren.
Die Strategie kombiniert VWAP-Indikatoren mit Preiskanälen, um eine relativ stabile Handelsstrategie zu erreichen. Die Strategieparameter sind flexibel eingestellt und können von Benutzern nach ihren eigenen Vorlieben angepasst werden. Die Strategie kann die zentrale Richtung des Wertes effektiv bestimmen und eine stabile Gewinnwirkung durch die Kombination von Parametern und die Bündelung von Lagerstätten erzielen.
/*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")