Diese Strategie beurteilt die Umwandlung von Bullen- und Bärenzyklen, indem sie die Veränderungsrate der Volumenänderung berechnet, die zu den Volumenpreisdivergenzstrategien gehört. Sie kombiniert den Momentumindikator des Volumens und Bollinger-Bänder des Preises, um den führenden Effekt der Volumenänderung auf den Preis zu bestimmen und Wendepunkte der Trends zu erfassen.
Berechnen Sie die Veränderungsrate der Volumenänderung (die Veränderungsrate des Volumendifferenzindikators), um das Ergebnis des Volumenmomentums basierenden Indikators zu erhalten.
Berechnen Sie Bollinger-Bänder von n Ergebnis, um bbr zu erhalten, die die Standardabweichung des Volumenmomentums darstellt.
Berechnen Sie Bollinger-Bänder des Schlusskurses, um bbr1 zu erhalten, die die Standardabweichung des Preises darstellt.
Berechnen Sie die Differenz zwischen den beiden, d. h. die Standardabweichung des Volumenmomentums abzüglich der Standardabweichung des Preises, als Endindikator.
Wenn hist über 0 geht, ist es das kurze Einstiegssignal, und wenn es unter 0 geht, ist es das lange Einstiegssignal.
Durch die Berechnung der Veränderungsrate der Volumenänderung wird der führende Effekt der Volumenänderung auf den Preis verstärkt. Wenn sich das Volumen umkehrt, während der Preis noch nicht umgekehrt ist, wird hist über oder unter 0 gehen und Handelssignale erzeugen. Es kann die Wendepunkte der Preisentwicklung im Voraus vorhersagen.
Diese Strategie ist eine auf der Veränderungsrate des Volumens basierende Strategie der Volumen-Preis-Divergenz, die die Wendepunkte der Preisentwicklung im Voraus widerspiegeln kann.
Die Berechnung der Veränderungsrate der Volumenänderung verstärkt die führende Wirkung der Volumenänderung auf den Preis, was zu einer besseren Handelsleistung führt.
Die Kombination von Volume-Impulsindikatoren mit Bollinger-Bändern des Preises macht Handelssignale zuverlässiger.
Die Verwendung von dreifacher exponentieller Glättung auf Hist-Daten macht die Signale genauer und glatter.
Das Festlegen von Überkauf-/Überverkaufslinien und langen/kurzen Stop-Loss-/Take-Profit-Orders hilft, Risiken wirksam zu kontrollieren.
Viele anpassbare Parameter wie Bollinger-Band-Länge, Standardabweichungsmultiplikator und Hist-Glanzungsfaktoren ermöglichen die Optimierung der Strategie.
Die Volumendaten spiegeln möglicherweise nicht wirklich den Markthandel wider und können manipuliert werden.
Die Volumenpreisdivergenz kann nicht bestehen bleiben und der Preis kann ohne Umkehrung durchbrechen.
Eine falsche Einstellung der Parameter kann zu einem Überhandel oder zu ungenauen Signalen führen.
Vorsicht vor falschen Signalen aus abnormalen Lautstärkungsdaten.
Wenn der Trend stark ist, sollten Umkehrsignale vermieden werden.
Risiken können durch Optimierung von Parametern, Hinzufügen anderer Filter und Einstellung von Stop-Loss/Take-Profit gemindert werden.
Optimieren Sie die Bollinger Bands-Parameter für stabilere Signale.
Hinzufügen eines Trendfilters, um den Handel gegen den Trend zu vermeiden.
Einbeziehung anderer Indikatoren wie MACD zur Signalbestätigung.
Nutzen Sie KI, um die Parameter automatisch zu optimieren.
Hinzufügen dynamischer Stop-Loss/Take-Profit zur Optimierung des Risikomanagements.
Anwendung von maschinellem Lernen zur Ermittlung der Erfolgsrate der Volumen-Preis-Divergenz für eine höhere Signalqualität.
Diese Strategie verstärkt die führende Wirkung der Volumenänderung auf den Preis, indem sie die Veränderungsrate der Volumenänderung berechnet und eine frühzeitige Erkennung von Trendwendepunkten ermöglicht. Im Vergleich zu einzelnen Volumenindikatoren hat sie eine höhere Zuverlässigkeit und Genauigkeit. Allerdings sollten Risiken wie Volumenmanipulation und Divergenzbruch durch Parameteroptimierung, Indikatorfilter usw. vermieden werden. In Zukunft kann KI für die adaptive Parameteroptimierung genutzt werden, um die Stabilität und Rentabilität der Strategie weiter zu verbessern.
/*backtest start: 2022-10-23 00:00:00 end: 2023-10-29 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/ // © tathal and special thanks to oakwhiz for his porting of my custom volume indicator //@version=5 strategy('Volume Difference Delta Cycle Oscillator', 'VDDC Osc', default_qty_type=strategy.percent_of_equity, default_qty_value=100, max_bars_back=5000) startDate = input.int(title='Start Date', defval=1, minval=1, maxval=31) startMonth = input.int(title='Start Month', defval=1, minval=1, maxval=12) startYear = input.int(title='Start Year', defval=2010, minval=1800, maxval=2100) endDate = input.int(title='End Date', defval=31, minval=1, maxval=31) endMonth = input.int(title='End Month', defval=12, minval=1, maxval=12) endYear = input.int(title='End Year', defval=2021, minval=1800, maxval=2100) // Normalize Function normalize(_src, _min, _max) => // Normalizes series with unknown min/max using historical min/max. // _src : series to rescale. // _min, _min: min/max values of rescaled series. var _historicMin = 10e10 var _historicMax = -10e10 _historicMin := math.min(nz(_src, _historicMin), _historicMin) _historicMax := math.max(nz(_src, _historicMax), _historicMax) _min + (_max - _min) * (_src - _historicMin) / math.max(_historicMax - _historicMin, 10e-10) // STEP 2: // Look if the close time of the current bar // falls inside the date range inDateRange = true // Stop loss & Take Profit Section l_sl_inp = input(2.0, title='Long Stop Loss %') / 100 l_tp_inp = input(4.0, title='Long Take Profit %') / 100 l_stop_level = strategy.position_avg_price * (1 - l_sl_inp) l_take_level = strategy.position_avg_price * (1 + l_tp_inp) s_sl_inp = input(2.0, title='Short Stop Loss %') / 100 s_tp_inp = input(4.0, title='Short Take Profit %') / 100 s_stop_level = strategy.position_avg_price * (1 + s_sl_inp) s_take_level = strategy.position_avg_price * (1 - s_tp_inp) src = close // Volume Differnce Indicator Delta float change_src = ta.change(src) float i_obv = ta.cum(change_src > 0 ? volume : change_src < 0 ? -volume : 0 * volume) float i_pvt = ta.pvt float result = ta.change(i_obv - i_pvt) float nresult = ta.ema(normalize(result, -1, 1), 20) // Volume Differnce Indicator Delta %B length = input.int(20, minval=1, title='Volume Bands Length') mult = input.float(2.0, minval=0.001, maxval=50, title='Volume Bands StdDev') basis = ta.ema(nresult, length) dev = mult * ta.stdev(nresult, length) upper = basis + dev lower = basis - dev bbr = (nresult - lower) / (upper - lower) // Normal %B, Based on close l1 = input.int(20, minval=1, title='Bollinger Bands Length') src2 = close mult1 = input.float(2.0, minval=0.001, maxval=50, title='Bollinger Bands StdDev') basis1 = ta.sma(src2, l1) dev1 = mult1 * ta.stdev(src2, l1) upper1 = basis1 + dev1 lower1 = basis1 - dev1 bbr1 = (src - lower1) / (upper1 - lower1) /// Final Output Line hist = ta.ema(ta.ema(ta.ema(bbr1 - bbr, input(2, title='Hist Smoothing Factor #1')), input(2, title='Hist Smoothing Factor #2')), input(2, title='Hist Smoothing Factor #3')) /// Overbought / Oversold Line Creation oversold = input(-.1) overbought = input(.4) hline(oversold, linewidth=2, color=color.new(#81c784, 62)) hline(overbought, linewidth=2, color=color.new(#c2185b, 38)) /// Long & Short Conditions short = hist > overbought long = hist < oversold /// Colors & Plotting histColor = hist >= 0 ? hist[1] < hist ? #26A69A : #B2DFDB : hist[1] < hist ? #FFCDD2 : #EF5350 plot(hist, title='Histogram', style=plot.style_columns, color=color.new(histColor, 0)) CrossBgColor = long ? color.new(#81c784, 62) : short ? color.new(#c2185b, 38) : na bgcolor(color.new(CrossBgColor, 90)) /// Strategy Methodology if inDateRange strategy.entry('long', strategy.long, when=long, stop=l_stop_level, limit=l_take_level) if inDateRange and strategy.position_size > 0 strategy.close_all(when=short) if inDateRange strategy.entry('short', strategy.short, when=short, stop=s_stop_level, limit=s_take_level) if inDateRange and strategy.position_size < 0 strategy.close_all(when=long)