
Strategi ini adalah sistem perdagangan pelacakan tren yang didasarkan pada metode perkiraan inti Nadaraya-Watson dan crossover rata-rata bergerak. Strategi ini menggunakan fungsi inti Gaussian untuk memperlancar data harga, menggabungkan sinyal crossover rata-rata bergerak untuk menangkap tren pasar, dan melakukan perdagangan pelacakan tren yang cerdas.
Inti dari strategi ini adalah metode Nadaraya-Watson Core Estimation, yang menggunakan fungsi Gaussian Core untuk melakukan smoothing non-parameter pada data harga. Implementasi konkret meliputi langkah-langkah berikut:
Strategi ini secara inovatif menggabungkan estimasi inti Nadaraya-Watson dengan analisis teknis tradisional untuk membangun sistem pelacakan tren yang solid. Strategi ini secara efektif menangkap tren pasar, sambil mengendalikan risiko, melalui Gaussian smoothing dan moving average crossing. Strategi ini memiliki skalabilitas dan ruang optimasi yang baik, cocok untuk pengembangan dan aplikasi praktis lebih lanjut.
/*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")