
Die Strategie ist eine Trend-Tracking-Strategie, die die Nadaraya-Watson-Rückkehr und den ATR-Kanal kombiniert, um die Richtung und den Einstiegspunkt des Trends zu identifizieren. Wenn der Preis unter die Bahn geht, machen Sie mehr; wenn der Preis auf die Bahn geht, platten Sie.
Zuerst berechnet die Strategie die Nadaraya-Watson-Kernrückkehr für zwei verschiedene Verzögerungen und vergleicht dann die Kreuzung der beiden Rückkehrkurven, um die Richtung des Trends zu bestimmen. Insbesondere berechnet man die Rückkehrkurve für die h-Periode und die h-Lag-Periode, um zu beurteilen, ob die h-Periode auf der h-Lag-Kurve überschritten wird oder ob die h-Periode unter der h-Lag-Kurve überschritten wird.
Zweitens verwendet die Strategie den ATR-Kanal, um den Einstiegspunkt zu bestimmen. Die Oberbahn ist die Multiplikation der n-Phasen-ATR mit der Rücklaufkurve und die Unterbahn ist die Multiplikation der n-Phasen-ATR abzüglich der Rücklaufkurve. Wenn der Preis die Oberbahn durchbricht, sieht er nach oben und betritt, wenn er die Unterbahn durchbricht, sieht er nach unten und betritt.
Schließlich wurde ein Stop-Loss-Mechanismus eingerichtet. Wenn der Preis in einer Reihe von stopLossBars unter der K-Linie des Einstiegspreises liegt, wird ein Ausstieg gestoppt.
Diese Strategie kombiniert Regressionsanalyse und Channel-Breakthrough, um die Richtung und Stärke von Markttrends zu erfassen. Diese Methode reduziert die Anzahl der Falschsignale und erhöht die Stabilität der Strategie im Vergleich zu Indikatoren, die Trends identifizieren, wie beispielsweise die Verwendung von Moving Averages.
Zusätzlich wurde ein vernünftiger Einstiegspunkt für den ATR-Kanal eingerichtet, um Fehlintritte in der Nähe des Trendwendepunkts zu vermeiden. Die Stop-Loss-Mechanismen haben auch die Einzelschäden wirksam kontrolliert.
Daher hat diese Strategie die Vorteile einer starken Trenderkennung, einer exakteren Ausstiegs- und Eintrittsvergleichung und eines kontrollierbaren Einzelschaltrisikos.
Das größte Risiko dieser Strategie besteht darin, dass der Preis bei einem Durchbruch des ATR-Kanals möglicherweise eine Umkehrung oder Korrektur vornimmt, was dazu führt, dass er nicht für den Einstieg geeignet ist oder kurz nach dem Einstieg ausfällt.
Die Regressionskurve und der ATR-Kanal erfordern zudem eine Parameteroptimierung. Fehlende Parameter, schlechte Regressionsanalyse oder ein zu großes oder zu kleines ATR beeinträchtigen die Strategie.
Trends und Umkehrsignale können in Kombination mit anderen Indikatoren wie VOLUME, MACD usw. in Betracht gezogen werden, um die Stabilität und Genauigkeit der Strategie zu verbessern.
Die Kernfunktionen in der Regressionsanalyse können auch angepasst werden, um eine bessere Anpassung zu erzielen, z. B. durch die Berücksichtigung von Epanechnikov-Kernen.
Die ATR-Zyklen und die ATR-Multiplikation der ATR-Kanäle müssen auch wiederholt getestet und optimiert werden, um die optimale Kombination von Parametern zu finden.
Die Strategie verwendet eine umfassende Anwendung der Regressionsanalyse und der Channel-Breakout-Methode, um die Richtung und Stärke des Trends zu identifizieren, an vernünftigen Punkten einzutreten und einen Stop-Loss zu setzen, um eine stabile Trend-Tracking-Strategie zu erreichen. Es gibt noch viel Raum für die Optimierung von Unterstrategien und es lohnt sich, weitere Verbesserungen zu testen.
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Custom Strategy with Stop Loss and EMA", overlay=true)
src = input(close, title='Source')
h = input(10, title='Lookback Window', tooltip='The number of bars used for the estimation.')
r = input(10, title='Relative Weighting', tooltip='Relative weighting of time frames.')
x_0 = input(50, title='Start Regression at Bar', tooltip='Bar index on which to start regression.')
lag = input(2, title='Lag', tooltip='Lag for crossover detection.')
stopLossBars = input(3, title='Stop Loss Bars', tooltip='Number of bars to check for stop loss condition.')
emaPeriod = input(46, title='EMA Period', tooltip='Period for Exponential Moving Averages.')
lenjeje = input(32, title='ATR Period', tooltip='Period to calculate upper and lower band')
coef = input(2.7, title='Multiplier', tooltip='Multiplier to calculate upper and lower band')
// Function for Nadaraya-Watson Kernel Regression
kernel_regression1(_src, _size, _h) =>
_currentWeight = 0.0
_cumulativeWeight = 0.0
for i = 0 to _size + x_0
y = _src[i]
w = math.pow(1 + (math.pow(i, 2) / ((math.pow(_h, 2) * 2 * r))), -r)
_currentWeight += y * w
_cumulativeWeight += w
[_currentWeight, _cumulativeWeight]
// Calculate Nadaraya-Watson Regression
[currentWeight1, cumulativeWeight1] = kernel_regression1(src, h, h)
yhat1 = currentWeight1 / cumulativeWeight1
[currentWeight2, cumulativeWeight2] = kernel_regression1(src, h-lag, h-lag)
yhat2 = currentWeight2 / cumulativeWeight2
// Calculate Upper and Lower Bands
upperjeje = yhat1 + coef * ta.atr(lenjeje)
lowerjeje = yhat1 - coef * ta.atr(lenjeje)
// Plot Upper and Lower Bands
plot(upperjeje, color=color.rgb(0, 247, 8), title="Upper Band", linewidth=2)
plot(lowerjeje, color=color.rgb(255, 0, 0), title="Lower Band", linewidth=2)
// Calculate EMAs
emaLow = ta.ema(low, emaPeriod)
emaHigh = ta.ema(high, emaPeriod)
// Plot EMAs
plot(emaLow, color=color.rgb(33, 149, 243, 47), title="EMA (Low)", linewidth=2)
plot(emaHigh, color=color.rgb(255, 153, 0, 45), title="EMA (High)", linewidth=2)
// Long Entry Condition
longCondition = low < lowerjeje
strategy.entry("Long", strategy.long, when=longCondition)
// Stop Loss Condition
stopLossCondition = close[1] < strategy.position_avg_price and close[2] < strategy.position_avg_price and close[3] < strategy.position_avg_price
strategy.close("Long", when=stopLossCondition)
// Close and Reverse (Short) Condition
shortCondition = high > upperjeje
strategy.close("Long", when=shortCondition)
strategy.entry("Short", strategy.short, when=shortCondition)