
A estratégia é um sistema de negociação de acompanhamento de tendências baseado no método de estimativa do núcleo de Nadaraya-Watson e no cruzamento de médias móveis. A estratégia usa o processamento de dados de preços através da função do núcleo de Gauss, combinando sinais de cruzamento de médias móveis para capturar tendências de mercado e realizar negociações inteligentes de acompanhamento de tendências. A estratégia usa o gerenciamento de posições por porcentagem, usando 10% de participação em cada conta por defeito.
O núcleo da estratégia é o método de estimativa do núcleo de Nadaraya-Watson, que usa a função do núcleo de Gauss para suavizar os dados de preço sem parâmetros. A implementação específica inclui os seguintes passos:
A estratégia combina de forma inovadora a estimativa de núcleo de Nadaraya-Watson com a análise técnica tradicional, construindo um robusto sistema de acompanhamento de tendências. Através do cruzamento de núcleos de Gauss e de médias móveis, capta eficazmente as tendências do mercado, controlando o risco. A estratégia tem uma boa escalabilidade e espaço de otimização, adequada para desenvolvimento e aplicação prática.
/*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")