
Die Strategie ist ein Trend-Tracking-Trading-System, das auf der Nadaraya-Watson-Kernschätzung und der Kreuzung von Moving Averages basiert. Die Strategie verarbeitet die Preisdaten durch die Gauss-Kernfunktion, kombiniert mit dem Kreuzungssignal des Moving Averages, um Markttrends zu erfassen und die Trends zu intelligent zu verfolgen. Die Strategie verwendet eine prozentuale Positionsverwaltung und verwendet standardmäßig 10% der Kontointeressen pro Transaktion.
Im Mittelpunkt der Strategie steht die Nadaraya-Watson-Kernschätzung, bei der die Gauss-Kernfunktion als nicht-parametrische Straffung der Preisdaten verwendet wird. Die konkrete Umsetzung umfasst folgende Schritte:
Die Strategie kombiniert Nadaraya-Watson Kernschätzungen innovativ mit traditioneller technischer Analyse, um ein robustes Trend-Tracking-System zu erstellen. Durch die Kreuzung von Gauss-Kern-Gleich- und Moving-Average wird der Markttrend effektiv erfasst, während das Risiko kontrolliert wird. Die Strategie bietet gute Skalierbarkeit und Optimierungsmöglichkeiten für weitere Entwicklungen und praktische Anwendungen.
/*backtest
start: 2024-02-21 00:00:00
end: 2025-02-18 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
*/
// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © UniCapInvest
//@version=5
strategy("Nadaraya-Watson Strategy with Moving Average Crossover", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10, max_bars_back=500)
// Girdiler
h = input.float(8.,'Bandwidth', minval = 0)
src = input(close,'Source')
lookback = input.int(15, "Moving Average Lookback", minval=1)
// Gaussian fonksiyonu
gauss(x, h) => math.exp(-(math.pow(x, 2)/(h * h * 2)))
// Nadaraya-Watson smoothed değerini hesaplama
var float smoothed = na
sum_w = 0.0
sum_xw = 0.0
for i = 0 to 499
w = gauss(i, h)
sum_w += w
sum_xw += src[i] * w
smoothed := sum_w != 0 ? sum_xw / sum_w : na
// Hareketli ortalama hesaplama
ma = ta.sma(smoothed, lookback)
// Alım ve satım koşulları (kesişimlere göre)
longCondition = ta.crossover(smoothed, ma)
shortCondition = ta.crossunder(smoothed, ma)
// Pozisyon durumu
var bool inPosition = false
// Strateji giriş ve çıkış koşulları
if (longCondition and not inPosition)
strategy.entry("Long", strategy.long)
inPosition := true
if (shortCondition and inPosition)
strategy.entry("Short", strategy.short)
inPosition := false
// Plotting
plot(smoothed, color=color.blue, title="Nadaraya-Watson Smoothed")
plot(ma, color=color.red, title="Moving Average")