
Die Strategie verwendet in Kombination mit dem Aroon-Indikator und dem Indikator der absoluten Stärke ((ASH)), um Markttrends und potenzielle Handelsmöglichkeiten zu identifizieren. Aroon hilft bei der Identifizierung der Stärke und Richtung von Trends, während ASH Einblicke in die Dynamik bietet. Durch die Kombination dieser Indikatoren versucht die Strategie, profitable Handelsmöglichkeiten im Ethereum-Markt zu erfassen.
Die Strategie verwendet zwei Arten von Aroon-Parametern:
Die ASH ist 9 K-Strecken lang und verwendet die Schlusskosten als Datenquelle.
Die Strategie beinhaltet spezifische Ein- und Ausstiegsbedingungen:
Der größte Vorteil dieser Strategie liegt in der Kombination von zwei Indikatoren. Der Aroon-Indikator kann die Richtung und Stärke des Trends effektiv beurteilen, während der ASH-Indikator zusätzliche Dynamik-Einblicke bietet, um die Ein- und Ausstiegszeiten zu beurteilen.
Darüber hinaus kann der Aroon-Indikator mit zwei unterschiedlichen Parameter-Sätzen für die Ermittlung von Leerräumen flexibel an veränderte Markttrends angepasst werden.
Das Hauptrisiko dieser Strategie liegt in der Einschränkung des Indikators selbst. Der Aroon-Indikator ist schwach und kann zu falschen Signalen führen. Der ASH-Indikator ist auch empfindlich für kurzfristige Überschwemmungen.
Darüber hinaus beeinflusst die falsche Einstellung der Parameter auch die Strategie. Es ist notwendig, die Länge der Aroon- und ASH-Parameter zu optimieren und zu testen, um die optimale Kombination von Parametern zu finden.
Es kann in Erwägung gezogen werden, Filter hinzuzufügen, wie z. B. Preisbruch, Erhöhung des Handelsvolumens usw., um falsche Signale in einem wackligen Umfeld zu vermeiden.
Verschiedene Kombinationen von Indikatoren und Gewichten können getestet werden, um die optimalen Parameter zu finden. Es kann auch versucht werden, andere Indikatoren wie RSI, KD usw. zu kombinieren, um eine stärkere Kombination von Indikatoren zu bilden und die Strategie zu verbessern.
Diese Strategie integriert die Vorteile der Verwendung von Aroon und ASH, die durch die Bindung von Indikatoren bestätigt werden, die bei der Beurteilung von Trends und der Erfassung von Wendepunkten besser wirken. Die Parameter-Einstellungen und die Grenzen der Indikatoren selbst müssen jedoch noch optimiert werden. Insgesamt ist die Idee neu und lohnt sich weiter zu verbessern und zu überprüfen.
/*backtest
start: 2023-03-05 00:00:00
end: 2024-03-10 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// © IkkeOmar
//@version=5
strategy("Aroon and ASH strategy - ETHERIUM [IkkeOmar]", overlay=true, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, pyramiding=1, commission_value=0, slippage=2)
// AROON SETTINGS ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
// Inputs for longs
length_upper_long = input.int(56, minval=15)
length_lower_long = input.int(20, minval=5)
// Inputs for shorts
//Aroon Short Side Inputs
length_upper_short = input.int(17, minval=10)
length_lower_short = input.int(55)
// ABSOLUTE STRENGTH HISTOGRAM SETTINGS ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
length = input(title='Length', defval=9)
src = input(title='Source', defval=close)
// CALCULATIONS: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
// Aroon
upper_long = 100 * (ta.highestbars(high, length_upper_long + 1) + length_upper_long) / length_upper_long
lower_long = 100 * (ta.lowestbars(low, length_lower_long + 1) + length_lower_long) / length_lower_long
upper_short = 100 * (ta.highestbars(high, length_upper_short + 1) + length_upper_short) / length_upper_short
lower_short = 100 * (ta.lowestbars(low, length_lower_short + 1) + length_lower_short) / length_lower_short
// Ahrens Moving Average
ahma = 0.0
ahma := nz(ahma[1]) + (src - (nz(ahma[1]) + nz(ahma[length])) / 2) / length
// CONDITIONS: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
// Options that configure the backtest start date
startDate = input(title='Start Date', defval=timestamp('01 Jan 2018 00:00'))
// Option to select trade directions
tradeDirection = input.string(title='Trade Direction', options=['Long', 'Short', 'Both'], defval='Long')
// Translate input into trading conditions
longOK = tradeDirection == 'Long' or tradeDirection == 'Both'
shortOK = tradeDirection == 'Short' or tradeDirection == 'Both'
// Check if the close time of the current bar falls inside the date range
inDateRange = true
longCondition = ta.crossover(upper_long, lower_long) and inDateRange and lower_long >= 5 and longOK
longCloseCondition = ta.crossunder(upper_long, lower_long) and inDateRange
shortCondition = ta.crossunder(upper_short, lower_short) and inDateRange and shortOK
shortCloseCondition = ta.crossover(upper_short, lower_short) and inDateRange
// Start off with the initial states for the longs and shorts
var in_short_trade = false
var in_long_trade = false
var long_signal = false
var short_signal = false
if longCondition
long_signal := true
if longCloseCondition
long_signal := false
if shortCondition
short_signal := true
if shortCloseCondition
short_signal := false
// While no trades active and short condition is met, OPEN short
if true and in_short_trade == false and in_long_trade == false and shortCondition
strategy.entry("short", strategy.short, when = shortCondition)
in_short_trade := true
in_long_trade := false
// While no trades and long condition is met, OPEN LONG
if true and in_short_trade == false and in_long_trade == false and longCondition
strategy.entry("long", strategy.long, when = longCondition)
in_long_trade := true
in_short_trade := false
// WHILE short trade and long condition is met, CLOSE SHORT and OPEN LONG
if true and in_short_trade == true and in_long_trade == false and longCondition
// strategy.close("short", when = longCondition)
strategy.entry("long", strategy.long, when = longCondition)
in_short_trade := false
in_long_trade := true
// WHILE long trade and short condition is met, CLOSE LONG and OPEN SHORT
if true and in_short_trade == false and in_long_trade == true and shortCondition
// strategy.close("long", when = shortCondition)
strategy.entry("short", strategy.short, when = shortCondition)
in_short_trade := true
in_long_trade := false
// WHILE long trade and exit long condition is met, CLOSE LONG
// if short signal is active, OPEN SHORT
if true and in_short_trade == false and in_long_trade == true and longCloseCondition
if short_signal
strategy.entry("short", strategy.short, when = short_signal)
in_long_trade := false
in_short_trade := true
else
strategy.close("long", when = longCloseCondition)
in_long_trade := false
in_short_trade := false
// if in short trade only and exit short condition is met, close the short
// if long signal still active, OPEN LONG
if true and in_short_trade == true and in_long_trade == false and shortCloseCondition
if long_signal
strategy.entry("long", strategy.long, when = long_signal)
in_short_trade := false
in_long_trade := true
else
strategy.close("short", when = shortCloseCondition)
in_short_trade := false
in_long_trade := false