Preiskanal-Handelsstrategie von VWAP

Schriftsteller:ChaoZhang, Datum: 2024-02-19 14:25:18
Tags:

img

Übersicht

Diese Strategie wird Price Channel VWAP Trading Strategy genannt. Es ist eine Strategie, die den VWAP-Handel auf der Grundlage von Preiskanälen umsetzt. Die Hauptidee dieser Strategie ist: Innerhalb des Preiskanals verwenden Sie die gleitende Durchschnittslinie des VWAP-Indikators und seine oberen und unteren Offset-Kanallinien für das Kauf- und Verkaufspunkteurteil. Wenn die Kanallinien gebrochen werden, öffnen Sie Positionen nach dem festen Prozentsatz der Gesamtvermögen und schließen Sie Positionen, wenn die Preise zur gleitenden Durchschnittslinie des VWAP zurückgehen.

Strategieprinzip

Diese Strategie berechnet den aktuellen durchschnittlichen Transaktionspreis anhand des VWAP-Indikators. VWAP stellt den durchschnittlichen Preis dar und ist das Verhältnis von Umsatz zu Handelsvolumen. Der VWAP-Indikator spiegelt den Abweichungsgrad zwischen dem aktuellen Preis und dem historischen durchschnittlichen Handelspreis wider.

Die Strategie verwendet die gleitende Durchschnittslinie des VWAP-Indikators und seine Offset-Kanallinien. Die Proportionen der Offset-Kanallinien werden durch die Parameter longlevel1 und shortlevel1 festgelegt. Wenn der Preis durch die obere Offset-Kanallinie bricht, öffnen Sie lange Positionen gemäß dem Prozentsatz der Positionen, der durch den Parameter lotsizelong festgelegt wurde; wenn der Preis durch die untere Offset-Kanallinie bricht, öffnen Sie kurze Positionen gemäß dem Prozentsatz der Positionen, der durch den Parameter lotsizeshort festgelegt wurde.

Die Parameter-Einstellungen dieser Strategie spiegeln vollständig die Idee des Kanalhandels wider.

Analyse der Vorteile

Diese Handelsstrategie hat folgende Vorteile:

  1. Die Verwendung von VWAP-Indikatoren zur Ermittlung von Wertmittepunkten kann die Marktrichtung des Mainstreams erfassen
  2. Der Handel innerhalb von Kanalbereichen vermeidet Lärminterferenz für einen klareren Betrieb
  3. Die Kombination von Kanälen verschiedener Ebenen, die Bereitstellung in Chargen reduziert das Risiko
  4. Eine rechtzeitige Gewinnnahme durch Regression vermeidet Verluste durch schnelle Umkehrungen

Da der VWAP-Indikator das durchschnittliche Preisniveau gut widerspiegeln kann, kann der Handel auf der Grundlage seiner Kanallinien effektiv Wertmittelpunkte einfangen und durch kurzfristige Schwankungen vermieden werden. Gleichzeitig kann die Kombination von Kanälen mit verschiedenen Parametern und der Aufbau von Positionen in Chargen die Risiken effektiv kontrollieren und einseitige Risikokonzentrationen verhindern, die zu Zwangsliquidationen führen. Schließlich kann durch rechtzeitige Gewinnentnahme, um Positionen in der Nähe der Regression der gleitenden Durchschnittslinie zu schließen, die durch Preisumkehrungen verursachten Verluste reduziert werden.

Risikoanalyse

Diese Strategie birgt auch einige Risiken:

  1. Der VWAP-Indikator ist unempfindlich gegenüber Hochfrequenzhandel und kann keine extremen Preisanomalien widerspiegeln
  2. Falsche Einstellungen der Kanalbreitenparameter können zu einem übermäßig aggressiven Handel führen
  3. Wenn der Bereich der Regressionsoperationen zum Schließen von Positionen zu breit ist, kann dies zu eingeschlossenen Verlusten führen

Der VWAP-Indikator ist unempfindlich gegenüber hochfrequenter Handelsvolatilität. Im Falle extremer Preislücken oder kurzfristiger Anomalien wird er immer noch unnötige Handelssignale und Verluste auslösen. Darüber hinaus wird er, wenn die Kanalparameter zu locker eingestellt sind, leicht ungültige Preisdurchdringungssignale bilden. Schließlich kann er den besten Zeitpunkt für die Gewinnentnahme verpassen und eingeschlossene Verluste verursachen, wenn der Bereich der Positionen, die bei Regressionsoperationen geschlossen werden, zu breit eingestellt ist.

Die Gegenmaßnahmen sind eine angemessene Bewertung der Parameter-Einstellungen und eine angemessene Anpassung der Kanalparameter, die Kombination anderer Indikatoren zur Beurteilung von Preisanomalien und die Vermeidung von Blindfolgen, und schließlich die Bewertung der Parameteroptimierung von Kanälen mit unterschiedlichen Niveaus und Regressionsbereichen, um bessere Gewinnwirkung zu erzielen.

Optimierungsrichtlinien

Diese Strategie kann in folgenden Richtungen optimiert werden:

  1. Erhöhen Sie die Kanalhöhe und optimieren Sie die Parameterkombinationen
  2. Kombination von Handelsvolumenindikatoren zur Bestimmung der Gültigkeit von Durchbrüchen
  3. Hinzufügen von Stop-Loss-Strategien und Festlegen von Stop-Loss-Anpassung an Drawdown-Ratio

Es können mehr Ebenen von Kanallinien hinzugefügt und Parameter für die Optimierung kombiniert werden, um stabilere Handelswirkungen zu erzielen. Darüber hinaus können Handelsvolumen-Urteilsregeln hinzugefügt werden, um ungültige Preislücken zu vermeiden, die Handelsverluste verursachen. Schließlich können Stop-Loss-Regeln auch so festgelegt werden, dass, wenn der Verlust von Positionen einen bestimmten Prozentsatz erreicht, Stop-Loss-Exit-Positionen erreicht werden, wodurch die Risiken effektiv kontrolliert werden.

Zusammenfassung

Diese Strategie kombiniert den VWAP-Indikator mit Preiskanälen, um eine relativ stabile Handelsstrategie zu erreichen. Die Einstellungen der Strategieparameter sind flexibel, so dass die Benutzer sie nach ihren eigenen Vorlieben anpassen können. Diese Strategie kann effektiv die Richtung der Wertmitte bestimmen. Durch Parameterkombination und Batch-Building von Positionen kann eine stabile Rentabilität erreicht werden. Obwohl es noch Raum für Verbesserungen in der Strategie gibt, ist es insgesamt eine quantitative Handelsstrategie mit hoher Praktikabilität.


/*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")

Mehr