Strategi Bilinear Regression Trend Following menggunakan perbedaan antara regresi linier cepat dan lambat untuk menentukan tren harga dan menggunakannya sebagai sinyal masuk.
Strategi ini pertama-tama menghitung dua garis regresi linier dengan periode yang berbeda, satu cepat dengan periode yang lebih pendek dan satu lambat dengan periode yang lebih lama. Kemudian menghitung perbedaan antara keduanya, ketika regresi cepat di atas regresi lambat, perbedaannya positif, menunjukkan tren naik. Ketika cepat di bawah lambat, perbedaannya negatif, menunjukkan tren turun.
Strategi ini masuk panjang ketika garis selisih melintasi di atas ambang batas dan keluar ketika melintasi di bawah.
Regresi linier ganda dapat menangkap tren harga dengan baik.
Filter EMA menghilangkan beberapa sinyal palsu dari gerakan non-trending.
Logika yang sederhana dan jelas, mudah dipahami dan diterapkan.
Periode LR yang tidak tepat dapat menghasilkan kebisingan yang berlebihan.
Filter EMA dapat melewatkan peluang dalam tren yang kuat.
Cenderung untuk whipsaws dan kerugian di pasar berkisar.
Solusi:
Mengoptimalkan periode LR untuk mengurangi kebisingan.
Mengatur periode EMA secara dinamis berdasarkan kondisi pasar
Tambahkan stop loss ke kontrol loss.
Strategi dapat dioptimalkan dalam aspek berikut:
Optimalkan periode LR cepat dan lambat untuk menemukan kombinasi terbaik.
Coba filter lain seperti Bollinger Bands, KDJ bukan EMA.
Tambahkan stop loss dinamis untuk mengontrol risiko.
Gabungkan dengan stock picking untuk memilih saham tren.
Mengembangkan parameter adaptif berdasarkan kondisi pasar.
Strategi Regresi Bilinear sederhana dan langsung dalam menangkap tren dengan regresi linier ganda dan filter EMA. Tapi juga memiliki risiko yang perlu ditangani melalui optimasi parameter, stop loss, dll. Ketika disetel dengan benar, itu dapat secara efektif memperdagangkan pasar tren.
/*backtest start: 2022-11-10 00:00:00 end: 2023-11-16 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © TradingAmmo //@version=4 strategy("Linear trend", overlay=false, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.075, currency='USD') startP = timestamp(input(2017, "Start Year"), input(12, "Month"), input(17, "Day"), 0, 0) end = timestamp(input(9999, "End Year"), input(1, "Month"), input(1, "Day"), 0, 0) _testPeriod() => iff(time >= startP and time <= end, true, false) src = close len1 = input(defval=13, minval=1, title="Fast LR") len2 = input(defval=55, minval=1, title="Slow LR") lag1 = input(0, title="Lag for fast") lag2 = input(0, title="Lag for slow") threshold = input(0,step=0.5, title="Threshold") fast_lr = linreg(src, len1, lag1) slow_lr = linreg(src, len2, lag2) lr = fast_lr - slow_lr plot_fast = plot(lr, color = lr > 0 ? color.green : color.red) plot(threshold, color=color.purple) long_condition = crossover(lr, threshold) and close > ema(close, 200) and _testPeriod() strategy.entry('BUY', strategy.long, when=long_condition) short_condition = crossunder(lr, threshold) strategy.close('BUY', when=short_condition)