Handelsstrategie auf der Grundlage der Standardabweichung des Handelsvolumens

Schriftsteller:ChaoZhang, Datum: 2023-11-21 11:11:51
Tags:

img

Übersicht

Diese Strategie baut ein Handelsvolumenmodell auf, das den gleitenden Durchschnitt und die Standardabweichung des Handelsvolumens verwendet und die Trendrichtung mit dem gleitenden Durchschnitt des Preises bestimmt, um Handelssignale zu generieren, wenn das Volumen normal ist.

Strategie Logik

Die Kernlogik besteht darin, ein Handelsvolumenmodell aufzubauen und den Preistrend zu beurteilen.

  1. Aufbau eines Handelsvolumenmodells
    • Berechnen Sie den gleitenden 40-Perioden-Durchschnitt des Volumens vavg als Ausgangswert
    • Berechnen Sie die 40-Perioden-Standardabweichung des Volumens vsd als normalen Schwankungsbereich
    • Berechnen Sie den gleitenden 5-Perioden-Durchschnitt des Volumens vavgn als den letzten Volumenwert
    • Setzen Sie die untere Volumengrenze als vavg minus 1 mal vsd
    • Höchstgrenze des Volumengrenzes als vavg plus 2 mal vsd festlegen
  2. Preisentwicklung
    • Berechnen Sie den gleitenden 20-Perioden-Durchschnitt des Schlusskurs mavg als Indikator für die Preisentwicklung
  3. Erstellen von Handelssignalen
    • Wenn der VWG über den Vortag liegt und der VWG über der Mindestgrenze liegt, geht man lang.
    • Wenn der VWG unter dem Vortag liegt und der VWG über der Mindestgrenze liegt, wird kurz gehandelt.
    • Schließung der Position bei umgekehrter Trendentwicklung

Die Strategie kombiniert das Handelsvolumenmodell mit dem Preistrend, um zu vermeiden, dass bei einem abnormalen Volumen Preistrends verfolgt werden, was einige falsche Signale ausfiltern kann.

Analyse der Vorteile

  1. Die Kombination von Volumenänderungen, um den Preistrend zu beurteilen, kann einige falsche Signale herausfiltern und die Handelssignale zuverlässiger machen
  2. Aufbau eines Handelsvolumenmodells mit Standardabweichung vermeidet extreme Volumenwirkungen
  3. Anpassungsfähige Parameter des gleitenden Durchschnitts können sich an Preisänderungen in verschiedenen Zyklen anpassen

Risikoanalyse

  1. Volumen und Preis können kurzfristig abweichen, was zu fehlenden Preisentwicklungen führt
  2. Fehlende Einstellungen von Lautstärkeparametern können zum Ausfall des Modells führen
  3. Keine Stop-Loss-Strategie kann zu großen Verlusten führen

Lösungen:

  1. Richten Sie die gleitenden Durchschnittsparameter richtig an, um das Modell zu optimieren
  2. Hinzufügen von Stop-Loss-Logik zur Steuerung von Einzelverlusten

Optimierungsrichtlinien

  1. Hinzufügen von mehr Indikatoren, um den Kurstrend zu beurteilen, um Signale zuverlässiger zu machen
  2. Erhöhung des Moduls für maschinelles Lernen zur Ausbildung von Datenparametern für Volumen- und Preismodelle
  3. Hinzufügen von Stop-Loss-Logik, um übermäßige Einzelverluste zu vermeiden
  4. Optimierung der Eintrittslogik, um eine höhere Wahrscheinlichkeit für Trends zu gewährleisten
  5. Kombination von Indikatoren wie ATR zur automatischen Anpassung der Stop-Loss-Distanz

Zusammenfassung

Die Gesamtlogik dieser Strategie ist klar, wobei Volumen verwendet wird, um falsche Trends zu vermeiden und die Eingangssignale relativ zuverlässig sind. Aber die Strategie selbst ist einfach mit großem Ausbauraum. Durch das Hinzufügen von mehr Indikatoren, maschinellem Lernen, Stop Loss und anderen Modulen kann sie die Stabilität und Fähigkeit, Trends zu erfassen, weiter verbessern. Dies ist eine typische Trendjagdstrategie. Nach der Optimierung kann sie zu einer sehr praktischen quantitativen Strategie werden.


/*backtest
start: 2022-11-14 00:00:00
end: 2023-11-20 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © dongyun

//@version=4
strategy("交易量底部标准差系统", overlay=true)

options = input(1,'')
length = input(40,'')
nlow = input(5,'')
factor = input(1.0,'')

vavg = 0.0
vavgn = 0.0
vsd = 0.0
lowlimit = 0.0
uplimit = 0.0
mavg = 0.0
aror = 0.0
adjvol = 0.0
savevol = 0.0


//Find average volume, replacing bad values
adjvol := volume

if (volume != 0)
	savevol := volume
else
	savevol := savevol[1]
	adjvol := savevol


// Replace high volume days because they distort standard deviation
if (adjvol > 2 * factor * nz(vsd[1]))
	adjvol := savevol
else
	adjvol := adjvol[1]

vavg := sma(adjvol,length)
vsd := stdev(adjvol,length)
vavgn := sma(adjvol,nlow)

// Extreme volume limits
lowlimit := vavg - factor * vsd
uplimit := vavg + 2 * factor * vsd

// System rules based on moving average trend
mavg := sma(close,length/2)

// Only enter on new trend signals
if (options == 2)
	if (mavg > mavg[1] and mavg[1] <= mavg[2])
		strategy.entry("Long", strategy.long)
	if (mavg<mavg[1] and mavg[1]>=mavg[2])
		strategy.entry("Short", strategy.short)
else
	if (mavg > mavg[1] and vavgn > lowlimit)
		strategy.entry("Long", strategy.long)
	if (mavg < mavg[1] and vavgn > lowlimit)
		strategy.entry("Short", strategy.short)

// Exit on low volume
if (options != 1)
	if (mavg<mavg[1] or (strategy.position_size > 0 and vavgn<= lowlimit))
		strategy.close("Long")
	if (mavg>mavg[1] or (strategy.position_size > 0 and vavgn<= lowlimit))
		strategy.close("Short")
else
	if (mavg < mavg[1])
		strategy.close("Long")
	if (mavg > mavg[1])
		strategy.close("Short")

Mehr