Trendfolgende Handelsstrategie basierend auf dem Volumenoszillator


Erstellungsdatum: 2024-01-29 15:04:18 zuletzt geändert: 2024-01-29 15:04:18
Kopie: 0 Klicks: 760
1
konzentrieren Sie sich auf
1617
Anhänger

Trendfolgende Handelsstrategie basierend auf dem Volumenoszillator

Überblick

Die Strategie ist eine Trend-Tracking-Strategie, die auf der Grundlage eines modifizierten Handelsvolumen-Obsolvator-Indikators gehandelt wird. Sie verwendet die Durchschnittslinie des Handelsvolumens, um Signals mit erhöhtem Handelsvolumen zu identifizieren, um Eintritt oder Ausstieg aus einer Position zu beurteilen.

Strategieprinzip

  1. Berechnen Sie die Durchschnittslinie vol_sum der Transaktionsmenge mit der Länge vol_length und führen Sie die Durchschnittslinie vol_smooth mit der Länge vol_smooth durch.
  2. Wenn die Vol_sum-Zunahme über die Schwelle hinausgeht, erzeugt sie ein Kaufsignal, wenn die Vol_sum-Zunahme über die Schwelle hinausgeht, erzeugt sie ein Verkaufssignal.
  3. Um Fehler zu filtern, wird ein Kauf nur dann getätigt, wenn der Kurs in der Richtung steigt, wenn der Kurs in der Richtung sinkt, und ein Verkauf nur dann, wenn der Kurs in der Richtung sinkt.
  4. Setzen Sie zwei Thresholds: threshold und threshold2 .
  5. Die Logik der Lageröffnung von Bestellungen über die Statusmaschine.

Analyse der Stärken

  1. Die Verwendung von Transaktionsvolumenindikatoren kann die Veränderung der Kauf- und Verkaufsposition des Marktes erfassen und so die Genauigkeit der Signale verbessern.
  2. In Kombination mit der Beurteilung von Preistrends können falsche Signale bei Preisschwankungen vermieden werden.
  3. Die Verwendung von zwei Schwellenwerten für die Eröffnung und Beendigung von Positionen ermöglicht eine bessere Risikokontrolle.

Risikoanalyse

  1. Die Transaktionsmenge selbst kann sich verzögern und kann einen Preiswendepunkt verpassen.
  2. Die falsche Parameter-Einstellung führt zu einer zu hohen Handelsfrequenz oder zu einem verzögerten Signal.
  3. In einem Szenario mit einem Anstieg der Transaktionen könnte der Stop-Loss-Punkt überschritten werden.

Diese Risiken können durch Anpassung der Parameter, Optimierung der Berechnung der Indikatoren und Bestätigung in Verbindung mit anderen Indikatoren kontrolliert werden.

Optimierungsrichtung

  1. Es kann in Erwägung gezogen werden, die Parameter des Indikators für eine Anpassungsoptimierung zu verwenden, die sich automatisch an die Marktbedingungen anpasst.
  2. Die Messungen können mit anderen Indikatoren, wie z. B. dem Price Vibration Index, kombiniert werden, um die Signalqualität zu verbessern.
  3. Es kann untersucht werden, wie Machine-Learning-Modelle auf Signal-Beschlüsse angewendet werden können, um die Genauigkeit zu verbessern.

Zusammenfassen

Diese Strategie ist eine relativ stabile Trend-Tracking-Strategie, die durch einen verbesserten Transaktionsvolumen-Obsolvator unterstützt wird, um die Preisentwicklung zu beurteilen. Insgesamt ist der Optimierungsraum hauptsächlich in Bezug auf die Parameteranpassung, die Signalfilterung und die Stop-Loss-Strategie. Insgesamt hat die Strategie einen gewissen praktischen Wert und ist es wert, weiter untersucht und optimiert zu werden.

Strategiequellcode
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy('Volume Advanced', default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.075, currency='USD')
startP = timestamp(input(2017, "Start Year"), input(12, "Start Month"), input(17, "Start Day"), 0, 0)
end    = timestamp(input(9999, "End Year"),   input(1, "End Month"),   input(1, "End Day"),   0, 0)
_testPeriod() =>
    iff(time >= startP and time <= end, true, false)

source = close 
vol_length  = input(34, title = "Volume - Length")
vol_smooth  = input(200,title = "Volume - Smoothing")
volriselen  = input(21,  title = "Volume - Risinglength")
volfalllen  = input(13, title = "Volume - Fallinglength")
threshold   = input(1,"threshold")
threshold2  = input(1.2,step=0.1, title="Threshold 2")
direction = input(13,"amount of bars")


volsum  = sum(volume, vol_length) / (sum(volume, vol_smooth) / (vol_smooth / vol_length))


LongEntry  = (rising(volsum, volriselen) or crossover (volsum, threshold)) and close > close[direction]
ShortEntry = (rising(volsum, volriselen) or crossover (volsum, threshold)) and close < close[direction]
LongExit1  = falling (volsum,volfalllen)
ShortExit1 = falling (volsum,volfalllen)
LongExit2= (crossover(volsum, threshold2) and close < close[direction])


_state = 0
_prev = nz(_state[1])
_state := _prev

if _prev == 0
    if LongEntry
        _state := 1
        _state
    if ShortEntry
        _state := 2
        _state
if _prev == 1
    if ShortEntry or LongExit1
        _state := 0
        _state
if _prev == 2
    if LongEntry or ShortExit1
        _state := 0
        _state

_bLongEntry = _state == 1 
_bLongClose = _state == 0 

long_condition = _bLongEntry and close > close[direction]
strategy.entry('BUY', strategy.long, when=long_condition)  
 
short_condition =  _bLongClose or LongExit2
strategy.close('BUY', when=short_condition)

plot(volsum,      color = color.green,    title="Vol_Sum")
plot(threshold, color = color.fuchsia, transp=50, title="Threshold")
plot(threshold2, color=color.white, transp = 50, title="Threshold 2")