Strategi Regresi Dinamis Santa Claus adalah strategi perdagangan kuantitatif yang mengidentifikasi titik masuk dan keluar potensial berdasarkan hubungan regresi dinamis antara harga dan indeks bar. Strategi ini menggunakan parameter rata-rata bergerak yang dapat disesuaikan secara dinamis untuk memetakan garis tren regresi harga. Dengan menganalisis arah garis regresi, ia menentukan apakah akan memasuki atau keluar posisi.
Inti dari strategi ini adalah untuk menghitung hubungan regresi linier antara harga dan indeks bar. Pertama-tama menghitung rata-rata bergerak sederhana dan standar deviasi panjang N. Kemudian berdasarkan koefisien korelasi sampel dan rasio standar deviasi, ia memperoleh kemiringan k dan intersep b dari garis regresi. Ini menghasilkan persamaan regresi linier yang disesuaikan secara dinamis:
y = kx + b
dimana x adalah indeks bar, dan y adalah harga.
Jika garis regresi naik dan harga penutupan lebih tinggi dari harga pembukaan dan harga tertinggi saat sebelumnya, sinyal beli akan dihasilkan. Jika garis regresi turun dan harga penutupan lebih rendah dari harga pembukaan dan harga terendah saat sebelumnya, sinyal jual akan dihasilkan.
Pengaturan nilai N yang tidak benar dapat menyebabkan garis regresi menjadi terlalu halus atau sensitif
Volatilitas harga dalam jangka pendek, penilaian hubungan regresi gagal
Rasio cincin hanya mempertimbangkan satu titik dalam waktu dan mungkin melewatkan ekstrem lokal
Strategi Regresi Santa Claus Dinamis menggunakan hubungan regresi dinamis antara harga dan waktu untuk menerapkan sistem perdagangan kuantitatif yang fleksibel, intuitif, dan dapat disesuaikan. Logika strategi ini jelas dan mudah dipahami. Melalui optimasi parameter, strategi ini dapat diterapkan pada produk dan siklus perdagangan yang berbeda. Inovasi strategi ini terletak pada pengenalan faktor waktu untuk membangun model dinamis, membuat penilaian lebih tren. Singkatnya, strategi ini memberikan sampel yang berharga untuk perdagangan kuantitatif.
/*backtest start: 2023-01-05 00:00:00 end: 2024-01-11 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 // Creator - TradeAI strategy('Moving Santa Claus Strategy | TradeAI', overlay=true) // Set the length of the moving average length = input(64) // Calculate the moving averages and standard deviations x = bar_index y = close x_ = ta.sma(x, length) y_ = ta.sma(y, length) mx = ta.stdev(x, length) my = ta.stdev(y, length) c = ta.correlation(x, y, length) slope = c * (my / mx) // Calculate the parameters of the regression line inter = y_ - slope * x_ reg = x * slope + inter // Set the line color based on whether EMA is moving up or down var color lineColor = na if (reg > reg[1] and (close > open and close > high[1])) lineColor := color.new(#d8f7ff, 0) if (reg < reg[1] and (close < open and close < low[1])) lineColor := color.new(#ff383b, 0) // Plot the EMA line with different thicknesses plot(reg, color=lineColor, title="EMA") var color lineColorrr = na if (reg > reg[1] and (close > open and close > high[1])) lineColorrr := color.new(#d8f7ff, 77) if (reg < reg[1] and (close < open and close < low[1])) lineColorrr := color.new(#ff383b, 77) plot(reg, color=lineColorrr, title="EMA", linewidth=5) var color lineColorr = na if (reg > reg[1] and (close > open and close > high[1])) lineColorr := color.new(#d8f7ff, 93) if (reg < reg[1] and (close < open and close < low[1])) lineColorr := color.new(#ff383b, 93) plot(reg, color=lineColorr, title="EMA", linewidth=10) var color lineColorrrr = na if (reg > reg[1] and (close > open and close > high[1])) lineColorrrr := color.new(#d8f7ff, 97) if (reg < reg[1] and (close < open and close < low[1])) lineColorrrr := color.new(#ff383b, 97) plot(reg, color=lineColorr, title="EMA", linewidth=15) var color lineColorrrrr = na if (reg > reg[1] and (close > open and close > high[1])) lineColorrrrr := color.new(#d8f7ff, 99) if (reg < reg[1] and (close < open and close < low[1])) lineColorrrrr := color.new(#ff383b, 99) plot(reg, color=lineColorr, title="EMA", linewidth=20) // Implement trading strategy based on EMA direction if reg > reg[1] and (close > open and close > high[1]) strategy.entry('buy', strategy.long) if reg < reg[1] and (close < open and close < low[1]) strategy.close('buy')