Heikin Ashi ROC - Handelsstrategie im Prozentbereich

Schriftsteller:ChaoZhang, Datum: 2023-10-23 15:41:40
Tags:

img

Übersicht

Diese Strategie wird als Heikin Ashi ROC Percentile Trading Strategy bezeichnet. Sie zielt darauf ab, einen einfach zu bedienenden Handelsrahmen auf der Grundlage des Heikin Ashi ROC und seiner Perzentile bereitzustellen.

Strategie Logik

Die Strategie berechnet die ROC von Heikin Ashi Schlusskurs über die vergangenen rocLength Perioden. Es berechnet dann die höchsten rocHigh und niedrigsten rocLow-Werte von ROC über die vergangenen 50 Perioden. Die oberen Schienen upperKillLine und unteren Schienen lowerKillLine werden auf der Grundlage bestimmter Perzentile von rocHigh und rocLow generiert. Wenn ROC über die lowerKillLine überschreitet, wird eine Long-Position geöffnet. Wenn ROC unter die upperKillLine überschreitet, wird die Long-Position geschlossen. Umgekehrt, wenn ROC unter der upperKillLine überschreitet, wird eine Short-Position geöffnet. Wenn ROC über die lowerKillLine überschreitet, wird die Short-Position geschlossen.

Analyse der Vorteile

Der größte Vorteil dieser Strategie ist die Nutzung der starken Trendverfolgungsfähigkeit des ROC-Indikators, kombiniert mit Heikin Ashi's Funktion zur Glättung von Preisinformationen. Dies ermöglicht es der Strategie, Trendänderungen effektiv zu identifizieren und Trades rechtzeitig einzugehen. Im Vergleich zu einfachen gleitenden Durchschnitten reagiert ROC empfindlicher auf Preisänderungen. Darüber hinaus können die aus Perzentilen erzeugten oberen und unteren Schienen effektiv Konsolidierungen filtern und unnötige Trades von gefälschten Ausbrüchen vermeiden.

Risikoanalyse

Das Hauptrisiko dieser Strategie besteht darin, dass unsachgemäße Parameter-Einstellungen zu Übertrading oder unzureichender Empfindlichkeit führen können. Die rocLength- und Perzentil-Lookback-Perioden müssen vorsichtig festgelegt werden, sonst können die Schienen zu stumpf oder steif werden, was zu verpassten Trades oder unnötigen Verlusten führt. Darüber hinaus müssen die Perzentil-Einstellungen wiederholt zurückgetestet und für verschiedene Märkte angepasst werden, um optimale Kombinationen zu finden. Die Strategie ist auch bestimmten Verlusten unterworfen, wenn sich die Trends umkehren, da sie sich auf Trendindikatoren stützt. Positionen sollten rechtzeitig geschlossen werden oder Verluste stoppen, um Risiken zu kontrollieren.

Optimierungsrichtlinien

Die Strategie kann auf folgende Weise optimiert werden: 1) Filter mit anderen Indikatoren wie RSI hinzufügen; 2) Parameter mit maschinellem Lernen dynamisch optimieren; 3) Stop-Loss und Take-Profit für das automatische Risikomanagement festlegen; 4) Mit Nicht-Trend-Strategien kombinieren, um Risiken auszugleichen.

Zusammenfassung

Zusammenfassend lässt sich sagen, dass diese Strategie die leistungsstarke Trendverfolgungsfähigkeit des ROC-Indikators in Kombination mit Heikin Ashi für die Trendidentifizierung und -verfolgung nutzt. Die aus den ROC-Perzentilen erzeugten oberen und unteren Schienen ermöglichen eine effektive Verlustfilterung. Dies erreicht eine gute Trendverfolgungsleistung. Die Vorteile liegen in der zeitnahen Identifizierung von Trendänderungen und der Verfolgung großer Trends, während Konsolidierungen mit den Schienen ausgefiltert werden.


/*backtest
start: 2023-09-22 00:00:00
end: 2023-10-22 00:00:00
period: 1h
basePeriod: 15m
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/
// © jensenvilhelm

//@version=5
strategy("Heikin Ashi ROC Percentile Strategy", shorttitle="ROC ON" , overlay=false)

// User Inputs
zerohLine = input(0, title="Midline")  // Zero line, baseline for ROC (customer can modify this to adjust midline)
rocLength = input(100, title="roc Length")  // Lookback period for SMA and ROC (customer can modify this to adjust lookback period)

stopLossLevel = input(2, title="Stop Loss (%)")  // Level at which the strategy stops the loss (customer can modify this to adjust stop loss level)
startDate = timestamp("2015 03 03")  // Start date for the strategy (customer can modify this to adjust start date)

// Heikin Ashi values
var float haClose = na  // Define Heikin Ashi close price
var float haOpen = na  // Define Heikin Ashi open price
haClose := ohlc4  // Calculate Heikin Ashi close price as average of OHLC4 (no customer modification needed here)
haOpen := na(haOpen[1]) ? (open + close) / 2 : (haOpen[1] + haClose[1]) / 2  // Calculate Heikin Ashi open price (no customer modification needed here)

// ROC Calculation
roc = ta.roc(ta.sma(haClose, rocLength), rocLength)  // Calculate Rate of Change (ROC) (customer can modify rocLength in the inputs)
rocHigh = ta.highest(roc, 50)  // Get the highest ROC of the last 50 periods (customer can modify this to adjust lookback period)
rocLow = ta.lowest(roc, 50)  // Get the lowest ROC of the last 50 periods (customer can modify this to adjust lookback period)
upperKillLine = ta.percentile_linear_interpolation(rocHigh, 10, 75)  // Calculate upper kill line (customer can modify parameters to adjust this line)
lowerKillLine = ta.percentile_linear_interpolation(rocLow, 10, 25)  // Calculate lower kill line (customer can modify parameters to adjust this line)

// Trade conditions
enterLong = ta.crossover(roc, lowerKillLine)  // Define when to enter long positions (customer can modify conditions to adjust entry points)
exitLong = ta.crossunder(roc, upperKillLine)  // Define when to exit long positions (customer can modify conditions to adjust exit points)
enterShort = ta.crossunder(roc, upperKillLine)  // Define when to enter short positions (customer can modify conditions to adjust entry points)
exitShort = ta.crossover(roc, lowerKillLine )  // Define when to exit short positions (customer can modify conditions to adjust exit points)

// Strategy execution
if(time >= startDate)  // Start strategy from specified start date
    if (enterLong)
        strategy.entry("Long", strategy.long)  // Execute long trades
    if (exitLong)
        strategy.close("Long")  // Close long trades
    if (enterShort)
        strategy.entry("Short", strategy.short)  // Execute short trades
    if (exitShort)
        strategy.close("Short")  // Close short trades

// Plotting
plot(zerohLine,title="Zeroline")  // Plot zero line
plot(roc, "RSI", color=color.rgb(248, 248, 248))  // Plot ROC
plot(rocHigh, "Roc High", color = color.rgb(175, 78, 76))  // Plot highest ROC
plot(rocLow, "Roc Low", color = color.rgb(175, 78, 76))  // Plot lowest ROC
plot(upperKillLine, "Upper Kill Line", color = color.aqua)  // Plot upper kill line
plot(lowerKillLine, "Lower Kill Line", color = color.aqua)  // Plot lower kill line


Mehr