Trendfolgestrategie basierend auf OBV- und MA-Crossover-Signalen

OBV MA SMA
Erstellungsdatum: 2024-04-29 13:48:58 zuletzt geändert: 2024-04-29 13:48:58
Kopie: 0 Klicks: 802
1
konzentrieren Sie sich auf
1617
Anhänger

Trendfolgestrategie basierend auf OBV- und MA-Crossover-Signalen

Überblick

Die Strategie heißt “OBVious MA Strategy based on OBV and MA cross signal trend tracking strategy”, und im Mittelpunkt steht die Verwendung von OBV (On Balance Volume) Indikator mit der Kreuzung von Moving Averages, um ein Handelssignal zu erzeugen. OBV kann ein führendes Trendsignal liefern, und die Strategie nutzt OBV breaking Moving Averages als Ein- und Ausgangskonditionen, um Trends zu erfassen.

Strategieprinzip

  1. Berechnung des OBV-Wertes: Wenn der aktuelle Schlusskurs höher ist als die vorherige K-Linie, wird der OBV mit der aktuellen Transaktionsmenge addiert, ansonsten wird die Transaktionsmenge abgezogen.
  2. Berechnen Sie die vier Moving Averages des OBV: Long-Period-Mehr-Eingreif-MA, Long-Period-Mehr-Ausreise-MA, Short-Period-Null-Eingreif-MA und Short-Period-Null-Ausreise-MA.
  3. Das sind die wichtigsten Faktoren, die uns helfen können.
    • Wenn der OBV einen langen Zyklus hat, um mehr Einsätze zu machen, und der Richtungsfilter ist nicht frei, öffnen Sie mehr Positionen
    • Wenn der OBV in einem langen Zyklus mehr MA ausführt, wird die Position ausgebremst.
    • Öffnen Sie die Lagerhalle, wenn der OBV-Kürzungszyklus die Ma-Einfahrt freigibt und der Richtungsfilter nicht mehr arbeitet
    • Wenn ein kurzfristiger Ausgabe-MA auf einem OBV erfolgt, wird die Position aufgelöst.
  4. Handel: Wenn ein Rückschlag signalisiert wird, werden die bestehenden Positionen gelöscht und neue Positionen eröffnet.

Strategische Vorteile

  1. Die OBV-Führung nutzt die Trendsignale, um zu Beginn des Trends rechtzeitig Lager zu errichten.
  2. Durch die Trennung von Einspiel- und Ausspiel-MA können die Einspiel- und Ausspielzeiten unabhängig optimiert werden.
  3. Die Code-Logik ist einfach und klar, leicht zu verstehen und zu verbessern.
  4. Die Einführung von Richtungsfiltern verhindert häufige Transaktionen und reduziert die Kosten.

Strategisches Risiko

  1. Fehlen weiterer Bestätigungsindikatoren kann zu Falschsignalen führen.
  2. Mangelnde Stop-Loss- und Positionsmanagement, mit einem erhöhten Risiko für einzelne Verluste.
  3. Eine falsche Parameterwahl beeinflusst die Strategie. Die Parameter müssen entsprechend der Merkmale und der Zeiträume des Marktes optimiert werden.

Richtung der Strategieoptimierung

  1. Trendfilter wie MA-Richtung, ATR usw. können versucht werden, um die Signalqualität zu verbessern.
  2. Auf einem OBV können verschiedene Arten von MA, wie EMA, WMA usw., verwendet werden, um Trends in unterschiedlichen Geschwindigkeiten zu erfassen.
  3. Positionsmanagement kann optimiert werden, z. B. durch die Verwendung von Auf- und Abnahmestrategien, die bei steigender Trendstärke aufgenommen und bei sinkender Trendstärke abgenommen werden.
  4. In Kombination mit anderen Kennzahlen wie MVA, PVT usw. kann ein kombiniertes Signal erstellt werden, um die Siegertheorie zu erhöhen.

Zusammenfassen

Diese Strategie zeigt eine einfache Methode zur Trendverfolgung auf Basis von OBV und MA-Kreuzungen. Der Vorteil ist die logische Klarheit, die Fähigkeit, die Trends rechtzeitig zu erfassen, und die Möglichkeit, die Positionen flexibel zu kontrollieren, indem die MA-Positionen getrennt werden. Der Nachteil ist jedoch der Mangel an Risikokontrollmaßnahmen und Signalbestätigungsmitteln.

Strategiequellcode
/*backtest
start: 2023-04-23 00:00:00
end: 2024-04-28 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © ThousandX_Trader

//@version=5
strategy(title="OBVious MA Strategy [1000X]", overlay=false, 
         initial_capital=10000, margin_long=0.1, margin_short=0.1,
         default_qty_type=strategy.percent_of_equity, default_qty_value=100,
         slippage=1, commission_type=strategy.commission.percent, commission_value=0.1)

// Direction Input ///
tradeDirection = input.string("long", title="Direction", options=["long", "short"], group = "Direction Filter")

    ///////////////////////////////////////
   //  1000X OBV MA INDICATOR           //
  ///////////////////////////////////////

// OBV Trend Length Inputs //
long_entry_length = input(190, title="Long Entry MA Length", group = "Moving Average Settings")
long_exit_length = input(202, title="Long Exit MA Length", group = "Moving Average Settings")
short_entry_length = input(395, title="Short MA Entry Length", group = "Moving Average Settings")
short_exit_length = input(300, title="Short Exit MA Length", group = "Moving Average Settings")

// OBV Calculation
obv = ta.cum(ta.change(close) >= 0 ? volume : -volume)

// Calculate OBV Moving Averages
obv_ma_long_entry = ta.sma(obv, long_entry_length)
obv_ma_long_exit = ta.sma(obv, long_exit_length)
obv_ma_short_entry = ta.sma(obv, short_entry_length)
obv_ma_short_exit = ta.sma(obv, short_exit_length)

   ///////////////////////////////////////
  //         STRATEGY RULES            //
 ///////////////////////////////////////

longCondition = ta.crossover(obv, obv_ma_long_entry) and tradeDirection != "short" and strategy.position_size <= 0
longExitCondition = ta.crossunder(obv, obv_ma_long_exit)
shortCondition = ta.crossunder(obv, obv_ma_short_entry) and tradeDirection != "long" and strategy.position_size >= 0
shortExitCondition = ta.crossover(obv, obv_ma_short_exit)

  ///////////////////////////////////////
 //         ORDER EXECUTION           //
///////////////////////////////////////

// Close opposite trades before entering new ones
if (longCondition and strategy.position_size < 0)
    strategy.close("Short Entry")

if (shortCondition and strategy.position_size > 0)
    strategy.close("Long Entry")

// Enter new trades
if (longCondition)
    strategy.entry("Long Entry", strategy.long)

if (shortCondition)
    strategy.entry("Short Entry", strategy.short)

// Exit conditions
if (longExitCondition)
    strategy.close("Long Entry")

if (shortExitCondition)
    strategy.close("Short Entry")

  ///////////////////////////////////////
 //            PLOTTING               //
///////////////////////////////////////

// Plot OBV line with specified color
plot(obv, title="OBV", color=color.new(#2962FF, 0), linewidth=1)

// Conditionally plot Long MAs with specified colors based on Direction Filter
plot(tradeDirection == "long" ? obv_ma_long_entry : na, title="Long Entry MA", color=color.new(color.rgb(2, 130, 228), 0), linewidth=1)
plot(tradeDirection == "long" ? obv_ma_long_exit : na, title="Long Exit MA", color=color.new(color.rgb(106, 168, 209), 0), linewidth=1)

// Conditionally plot Short MAs with specified colors based on Direction Filter
plot(tradeDirection == "short" ? obv_ma_short_entry : na, title="Short Entry MA", color=color.new(color.rgb(163, 2, 227), 0), linewidth=1)
plot(tradeDirection == "short" ? obv_ma_short_exit : na, title="Short Exit MA", color=color.new(color.rgb(192, 119, 205), 0), linewidth=1)