
Chiến lược này là một hệ thống giao dịch theo dõi xu hướng dựa trên phương pháp ước tính lõi Nadaraya-Watson và giao dịch chéo đường trung bình di chuyển. Chiến lược này xử lý dữ liệu giá một cách trơn tru thông qua hàm lõi Gaussian, kết hợp với tín hiệu chéo đường trung bình di chuyển để nắm bắt xu hướng thị trường và thực hiện giao dịch theo dõi xu hướng thông minh. Chiến lược sử dụng phương pháp quản lý vị trí phần trăm, sử dụng quyền lợi tài khoản 10% cho mỗi giao dịch theo mặc định.
Trung tâm của chiến lược là phương pháp ước tính hạt nhân Nadaraya-Watson, sử dụng hàm hạt nhân Gaussian để làm mịn dữ liệu giá không tham số. Thực hiện cụ thể bao gồm các bước sau:
Chiến lược này kết hợp một cách sáng tạo các ước tính hạt nhân Nadaraya-Watson với phân tích kỹ thuật truyền thống để xây dựng một hệ thống theo dõi xu hướng vững chắc. Nó có khả năng thu thập xu hướng thị trường hiệu quả thông qua các đường nếp nhịp và đường trung bình di chuyển của Gaussian, đồng thời kiểm soát rủi ro.
/*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")