Heikin Ashi-Perzentil-Interpolation Handelsstrategie

Schriftsteller:ChaoZhang, Datum: 2023-12-25 11:02:25
Tags:

img

Übersicht

Diese Strategie erzeugt Handelssignale basierend auf Heikin Ashi-Kerzen. Insbesondere werden Kauf- und Verkaufssignale basierend auf dem Crossover des Heikin Ashi-Schlusskurses und der 75. Perzentil-Preisstufe sowie dem Heikin Ashi-Schlusskurs über bestimmten gleitenden Durchschnitten betrachtet.

Strategie Logik

Die Strategie verwendet Heikin Ashi Kerzen anstelle von normalen Kerzen für die Analyse. Die glatte Natur der Heikin Ashi Kerzen hilft, Trends und Umkehrungen klarer zu identifizieren.

  1. Ein langes Signal wird erzeugt, wenn der Heikin-Ashi-Schluß über das 75-Prozentil-Niveau geht.
  2. Ein Verkaufssignal wird ausgelöst, wenn der Heikin-Ashi-Schluß unter den gleitenden 5-Perioden-Durchschnitt fällt.

Stop-Loss und Trailing-Stop werden ebenfalls verwendet, um das Abwärtsrisiko pro Handel zu kontrollieren.

Vorteile

  1. Heikin-Aschi-Kerzen erkennen Trends deutlich und schnell Umkehrungen.
  2. Perzentilkanäle helfen bei der Bestimmung von Überkauf-/Überverkaufszuständen zu Zeit-Eingänge und -Ausgänge.
  3. Die Verwendung von Stop-Loss und Trailing-Stop kontrolliert das Risiko proaktiv.

Risiken

  1. Heikin Ashi-Kerzen haben eine Designverzögerung, was dazu führen kann, dass die besten Ein-/Ausgangspreise fehlen.
  2. Perzentile Kanäle zeigen keine vollständigen Trendumkehrungen an, was zu potenziellen Whipsaws führt.
  3. Eine unsachgemäße Stop-Loss-Platzierung könnte entweder die Gewinne vorzeitig verkürzen oder inakzeptable Verluste ermöglichen.

Um die Risiken zu mindern, müssen Parameter wie gleitende Durchschnittsperioden und Stop-Loss-Prozentsätze möglicherweise angepasst werden.

Verbesserungen

  1. Versuche verschiedene Kombinationen von gleitenden Durchschnitten, um optimale Parameter zu finden.
  2. Feinabstimmungsperzentile Kanallängen zur besseren Identifizierung von Preisen heiße Zonen.
  3. Hinzufügen zusätzlicher Indikatoren zur Bestätigung von Signalen und zur Vermeidung von falschen Signalen.
  4. Implementieren dynamischer Stop-Loss-Distanzen.

Schlussfolgerung

Diese Strategie kombiniert Heikin-Aschi-Kerzen, Perzentilkanäle und gleitende Durchschnitte zu einem systematischen Ansatz, der Trends identifizieren und das Risiko über Stop-Loss kontrollieren kann.


/*backtest
start: 2023-12-17 00:00:00
end: 2023-12-24 00:00:00
period: 45m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("HK Percentile Interpolation One",shorttitle = "HKPIO", overlay=false, default_qty_type = strategy.cash, default_qty_value = 5000, calc_on_order_fills = true, calc_on_every_tick = true)

// Input parameters
stopLossPercentage = input(3, title="Stop Loss (%)") // User can set Stop Loss as a percentage
trailStopPercentage = input(1.5, title="Trailing Stop (%)") // User can set Trailing Stop as a percentage
lookback = input.int(14, title="Lookback Period", minval=1) // User can set the lookback period for percentile calculation
yellowLine_length = input.int(5, "Yellow", minval=1) // User can set the length for Yellow EMA
purplLine_length = input.int(10, "Purple", minval=1) // User can set the length for Purple EMA
holdPeriod = input.int(200, title="Minimum Holding Period", minval=10) // User can set the minimum holding period
startDate = timestamp("2021 01 01")  // User can set the start date for the strategy

// Calculate Heikin Ashi values
haClose = ohlc4
var float haOpen = na
haOpen := na(haOpen[1]) ? (open + close) / 2 : (haOpen[1] + haClose[1]) / 2
haHigh = math.max(nz(haOpen, high), nz(haClose, high), high)
haLow = math.min(nz(haOpen, low), nz(haClose, low), low)

// Calculate Moving Averages
yellowLine = ta.ema(haClose, yellowLine_length)
purplLine = ta.ema(haClose, purplLine_length)

// Calculate 25th and 75th percentiles
p25 = ta.percentile_linear_interpolation(haClose, lookback, 28)
p75 = ta.percentile_linear_interpolation(haClose, lookback, 78)

// Generate buy/sell signals
longSignal = ta.crossover(haClose, p75) and haClose > yellowLine
sellSignal = ta.crossunder(haClose, yellowLine)
longSignal1 = ta.crossover(haClose, p75) and haClose > purplLine
sellSignal1 = ta.crossunder(haClose, purplLine)

// Set start time and trade conditions
if(time >= startDate)
    // When longSignal is true, enter a long trade and set stop loss and trailing stop conditions
    if (longSignal)
        strategy.entry("Long", strategy.long, 1)
        strategy.exit("Sell", "Long", stop=close*(1-stopLossPercentage/100), trail_points=close*trailStopPercentage/100, trail_offset=close*trailStopPercentage/100)
    // When sellSignal is true, close the long trade
    if (sellSignal)
        strategy.close("Long")
    // When sellSignal1 is true, enter a short trade
    if (sellSignal1)
        strategy.entry("Short", strategy.short, 1)
    // When longSignal1 is true, close the short trade
    if (longSignal1)
        strategy.close("Short")

// Plot Heikin Ashi candles
plotcandle(haOpen, haHigh, haLow, haClose, title="Heikin Ashi", color=(haClose >= haOpen ? color.rgb(1, 168, 6) : color.rgb(176, 0, 0)))

// Plot 25th and 75th percentile levels
plot(p25, title="25th Percentile", color=color.green, linewidth=1, style=plot.style_circles)
plot(p75, title="75th Percentile", color=color.red, linewidth=1, style=plot.style_circles)

// Plot Moving Averages
plot(yellowLine, color = color.rgb(254, 242, 73, 2), linewidth = 2, style = plot.style_stepline)
plot(purplLine, color = color.rgb(255, 77, 234, 2), linewidth = 2, style = plot.style_stepline)


Mehr