Momentum Breakout - Bidirektionale Verfolgungsstrategie

Schriftsteller:ChaoZhang, Datum: 18.12.2023
Tags:

img

Übersicht

Diese Strategie kombiniert Momentum-Indikatoren und bidirektionale Tracking-Indikatoren, um Breakout-Signale in starken Trends für die Trendverfolgung zu erfassen.

Strategie Logik

  1. Der HiLo-Aktivator-Indikator berechnet den Mittelpunktpreis anhand des Mittelpunkts des höchsten Höchst- und des niedrigsten Tiefpunkts. Wenn die Preise über den Mittelpunkt ausbrechen, wird ein Kaufsignal generiert. Wenn die Preise unter den Mittelpunkt fallen, wird ein Verkaufssignal generiert.

  2. Der durchschnittliche Richtungsindex (ADX) wird verwendet, um die Stärke des Trends zu messen. Je höher der ADX-Wert, desto stärker ist der Trend. Diese Strategie verwendet ADX mit einem Schwellenwert, um Signale zu filtern, und erzeugt nur Signale, wenn der Trend stark genug ist.

  3. Die Richtungsindikatoren DI+ und DI- repräsentieren die Stärke des Aufwärtstrends bzw. des Abwärtstrends.

  4. Kaufsignale werden erzeugt, wenn die Preise über den Mittelpunkt fallen, ADX über der Schwelle liegt und DI+ über der Schwelle liegt. Verkaufssignale werden erzeugt, wenn die Preise unter den Mittelpunkt fallen, ADX über der Schwelle liegt und DI- über der Schwelle liegt.

Analyse der Vorteile

Diese Strategie kombiniert die Vorteile von Dynamik- und Trendindikatoren, um frühe Ausbrüche zu erfassen und Trends genau zu verfolgen.

Verglichen mit dem Einsatz von Momentum-Indikatoren allein, fügt diese Strategie eine Trendstärke-Evaluierung hinzu, um Signale zu filtern und die Rentabilität zu verbessern.

Insgesamt kann die Strategie Trends reibungslos verfolgen, rechtzeitig ein- und aussteigen und nicht in Konsolidierungen stecken bleiben, während gleichzeitig Verluste durch Trendumkehrungen reduziert werden.

Risikoanalyse

Diese Strategie birgt ein gewisses Risiko, dass vorübergehende Preisumkehrungen falsche Signale erzeugen.

Um die Whipsaw-Risiken zu reduzieren, optimieren Sie die HiLo-Aktivator-Parameter, um den Ausbruchbereich zu erhöhen.

Benutzer sollten auch Unterschiede zwischen Produkten und Marktumgebungen beachten.

Optimierungsrichtlinien

Die wichtigsten Möglichkeiten zur Optimierung dieser Strategie sind:

  1. Passen Sie die HiLo-Aktivator-Periode an und die Auslöser, um die Whipsaw-Risiken und das Timing auszugleichen.

  2. Anpassung der ADX-Periode und des Schwellenwerts, um die Signalqualität und -Frequenz auszugleichen.

  3. Für DI+ und DI- werden separate Schwellenwerte festgelegt, um Unterschiede zwischen Aufwärtstrends und Abwärtstrends zu berücksichtigen.

  4. Hinzufügen von Stop-Loss-Strategien mit Stop-Loss-Niveaus zur Kontrolle von Einzelhandelsverlusten.

  5. Kombination mit anderen Hilfsindikatoren zur Verbesserung der allgemeinen Stabilität.

Schlussfolgerung

Diese Strategie berücksichtigt sowohl Momentum als auch Trend-Folgende Indikatoren, um Signale während starker Trends zu generieren. Sie hat den Vorteil, Trends reibungslos und genau zu folgen, geeignet für die Erfassung frühzeitiger Trendchancen. Sie verfügt auch über angemessene Risikokontrollfähigkeiten, um Verluste durch falsche Signale und Whipsaws zu reduzieren. Mit Parameter-Tuning und Stop-Loss-Zusätzen kann sie eine stetige Leistung erzielen. Als eine vielseitige Trend-Tracking-Strategie, die verschiedenen Produkten und Märkten entspricht, verdient sie gute Aufmerksamkeit und Anwendung von Quant-Händlern.


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

//@version=4
strategy("HiLo Activator with ADX", shorttitle="HASB_ADX", overlay=true)

// Parameters for the HiLo Activator
length_ha = input(14, title="HiLo Activator Period")
offset_ha = input(0, title="Offset")
trigger_ha = input(1, title="Trigger for Buy/Sell")

// Parameters for ADX
adx_length = input(14, title="ADX Period", minval=1)
adx_threshold = input(25, title="ADX Threshold")
di_threshold = input(50, title="DI Threshold")

// Parameter for choosing the number of candles for backtest
backtest_candles = input(1000, title="Number of Candles for Backtest", minval=1)

// Function to get backtest data
getBacktestData() =>
    var float data = na
    if bar_index >= backtest_candles
        data := security(syminfo.tickerid, "D", close[backtest_candles])
    data

// HiLo Activator calculations
ha = (highest(high, length_ha) + lowest(low, length_ha)) / 2

// ADX calculations
trh = high - high[1]
trl = low[1] - low
tr = max(trh, trl)
atr = sma(tr, adx_length)
plus_dm = high - high[1] > low[1] - low ? max(high - high[1], 0) : 0
minus_dm = low[1] - low > high - high[1] ? max(low[1] - low, 0) : 0
smoothed_plus_dm = sma(plus_dm, adx_length)
smoothed_minus_dm = sma(minus_dm, adx_length)
di_plus = 100 * (smoothed_plus_dm / atr)
di_minus = 100 * (smoothed_minus_dm / atr)
dx = 100 * abs(di_plus - di_minus) / (di_plus + di_minus)
adx = sma(dx, adx_length)

// Buy and Sell signals based on HiLo Activator and ADX
signalLong = crossover(close, ha) and adx > adx_threshold and di_plus > di_threshold
signalShort = crossunder(close, ha) and adx > adx_threshold and di_minus > di_threshold

// Plot HiLo Activator and ADX
plot(ha, color=color.blue, title="HiLo Activator")
plot(offset_ha, color=color.red, style=plot.style_histogram, title="Offset")
plot(adx, color=color.purple, title="ADX")

// Backtest strategy
strategy.entry("Buy", strategy.long, when = signalLong)
strategy.entry("Sell", strategy.short, when = signalShort)
strategy.close("Buy", when = signalShort)
strategy.close("Sell", when = signalLong)

// Accuracy percentage
var accuracy = 0.0
var totalTrades = 0
var winningTrades = 0

if (signalLong or signalShort)
    totalTrades := totalTrades + 1

if (signalLong and (not na(signalLong[1]) and (not signalLong[1])))
    winningTrades := winningTrades + 1

if (signalShort and (not na(signalShort[1]) and (not signalShort[1])))
    winningTrades := winningTrades + 1

accuracy := totalTrades > 0 ? (winningTrades / totalTrades) * 100 : 0

// Plot accuracy percentage on the chart
plot(accuracy, title="Accuracy Percentage", color=color.purple, style=plot.style_histogram)


Mehr