Diese Strategie verwendet das veränderte Volumen auf der Bilanz (OBV) und den MACD, um Handelssignale zu erzeugen.
Berechnen Sie den einfachen gleitenden Durchschnitt (SMA), um die Marktentwicklung zu ermitteln.
Berechnung des veränderten OBV: Es ändert die Berechnung des OBV auf der Grundlage des Schlusskurses und der vorherigen Schlusskursbeziehung, um den OBV empfindlicher zu machen.
Berechnen Sie den MACD auf veränderter OBV. Der MACD besteht aus einer schnellen Linie, einer langsamen Linie und einem Histogramm, um die Veränderung des Volumenmomentums zu ermitteln.
Wenn der MACD-Gold-Cross nach oben geht, wird ein Kaufsignal generiert.
Wenn der MACD-Durchschnittswert sinkt, wird ein Verkaufssignal ausgelöst.
Überprüfen Sie die SMAs, um unnötige Trades während eines trendlosen Marktes zu vermeiden.
Eine veränderte OBV ist empfindlicher, um frühe Volumenänderungen zu erfassen.
Der MACD zeigt deutlich die Veränderung der Volumendynamik und die Schlüsselwerte an.
Das kombinierte Signal von Volumen und Preis verbessert die Genauigkeit.
Der SMA filtert falsches Signal, indem er den Markttrend bestimmt.
Klare Strategie-Logik und große Optimierungsmöglichkeiten.
Eine veränderte OBV kann falsche Signale erzeugen, muss durch andere Indikatoren gefiltert werden.
Eine unsachgemäße Einstellung der MACD-Parameter kann dazu führen, dass Trades verfehlt oder falsche Signale ausgelöst werden.
Achten Sie auf die Aktienbesonderheiten, um Verluste zu vermeiden.
Überwachung der Marktlage, da die Strategie bei speziellen Szenarien möglicherweise nicht funktioniert.
Das Risiko einer Überanpassung durch Backtest kann zu einer schlechteren Performance beim Live-Handel führen.
Versuche verschiedene Kombinationen von SMA-Perioden, um die Marktentwicklung zu optimieren.
Testen Sie die MACD-Parameter, um die Veränderung des Volumenmomentums besser zu ermitteln.
Hinzufügen anderer Indikatoren als Filter, wie KDJ, RSI usw.
Hinzufügen von Stop-Loss zu Limit-Loss pro Trade.
Optimieren Sie das Geldmanagement, um die Gesamtrentabilität zu verbessern.
Versuchsparameterunterschiede zwischen den Beständen.
Die Strategie kombiniert veränderte OBV und MACD, um Volumen- und Preissynthese zu erreichen. Sie kann Volumendynamikänderungen frühzeitig erfassen und Handelssignale erzeugen. Im Vergleich zur Verwendung von OBV oder MACD allein bietet diese Strategie zuverlässigere Handelsmöglichkeiten. Allerdings besteht ein Risiko falscher Signale und weitere Optimierungen von Indikatoren und Parametern sowie Geldmanagement sind erforderlich, um im Live-Handel stetige Gewinne zu erzielen. Insgesamt hat die Strategie eine klare Logik und lohnt sich zu testen und zu optimieren, um ihr Potenzial zu erforschen.
/*backtest start: 2022-11-14 00:00:00 end: 2023-11-14 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/ // © stocktechbot //@version=5 strategy("Altered OBV On MACD", overlay=true, margin_long=100, margin_short=100) // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © stocktechbot //@version=5 //SMA Tredline out = ta.sma(close, 200) outf = ta.sma(close, 50) outn = ta.sma(close, 90) outt = ta.sma(close, 21) outthree = ta.sma(close, 9) //sma plot offset = input.int(title="Offset", defval=0, minval=-500, maxval=500) plot(out, color=color.blue, title="MA200", offset=offset) plot(outf, color=color.maroon, title="MA50", offset=offset) plot(outn, color=color.orange, title="MA90", offset=offset) plot(outt, color=color.olive, title="MA21", offset=offset) plot(outthree, color=color.fuchsia, title="MA9", offset=offset) fast_length = input(title="Fast Length", defval=12) slow_length = input(title="Slow Length", defval=26) chng = 0 obv = ta.cum(math.sign(ta.change(close)) * volume) if close < close[1] and (open < close) chng := 1 else if close > close[1] chng := 1 else chng := -1 obvalt = ta.cum(math.sign(chng) * volume) //src = input(title="Source", defval=close) src = obvalt signal_length = input.int(title="Signal Smoothing", minval = 1, maxval = 50, defval = 9) sma_source = input.string(title="Oscillator MA Type", defval="EMA", options=["SMA", "EMA"]) sma_signal = input.string(title="Signal Line MA Type", defval="EMA", options=["SMA", "EMA"]) // Calculating fast_ma = sma_source == "SMA" ? ta.sma(src, fast_length) : ta.ema(src, fast_length) slow_ma = sma_source == "SMA" ? ta.sma(src, slow_length) : ta.ema(src, slow_length) macd = fast_ma - slow_ma signal = sma_signal == "SMA" ? ta.sma(macd, signal_length) : ta.ema(macd, signal_length) hist = macd - signal //hline(0, "Zero Line", color=color.new(#787B86, 50)) //plot(hist, title="Histogram", style=plot.style_columns, color=(hist>=0 ? (hist[1] < hist ? col_grow_above : col_fall_above) : (hist[1] < hist ? col_grow_below : col_fall_below))) //plot(macd, title="MACD", color=col_macd) //plot(signal, title="Signal", color=col_signal) [macdLine, signalLine, histLine] = ta.macd(close, 12, 26, 9) //BUY Signal mafentry =ta.sma(close, 50) > ta.sma(close, 90) //matentry = ta.sma(close, 21) > ta.sma(close, 50) matwohun = close > ta.sma(close, 200) twohunraise = ta.rising(out, 2) twentyrise = ta.rising(outt, 2) macdrise = ta.rising(macd,2) macdlong = ta.crossover(macd, signal) longCondition=false if macdlong and macdrise longCondition := true if (longCondition) strategy.entry("My Long Entry Id", strategy.long) //Sell Signal mafexit =ta.sma(close, 50) < ta.sma(close, 90) matexit = ta.sma(close, 21) < ta.sma(close, 50) matwohund = close < ta.sma(close, 200) twohunfall = ta.falling(out, 3) twentyfall = ta.falling(outt, 2) shortmafall = ta.falling(outthree, 1) macdfall = ta.falling(macd,1) macdsell = macd < signal shortCondition = false if macdfall and macdsell and (macdLine < signalLine) and ta.falling(low,2) shortCondition := true if (shortCondition) strategy.entry("My Short Entry Id", strategy.short)