
Strategi perdagangan regresi rata-rata dengan menghitung garis regresi linier dan persilangan garis rata-rata harga saham untuk menentukan sinyal beli dan jual. Strategi ini menggabungkan analisis regresi rata-rata dan linier, mempertimbangkan tren harga saham, dan mempertimbangkan karakteristik statistik, yang dapat secara efektif menentukan titik balik harga saham, untuk mencapai harga jual murah.
Strategi ini pertama-tama menghitung garis regresi linier untuk harga saham pada hari n dan garis rata-rata harian m. Garis regresi linier mencerminkan tren statistik jangka panjang harga saham, dan garis rata-rata mencerminkan pergerakan jangka pendek harga saham.
Ketika rata-rata melewati garis regresi linier, ini menunjukkan peningkatan momentum kenaikan harga saham, menghasilkan sinyal beli. Ketika rata-rata melewati garis regresi linier, ini menunjukkan penurunan harga saham, menghasilkan sinyal jual.
Secara khusus, strategi ini menilai sinyal perdagangan melalui langkah-langkah berikut:
Menghitung n hari harga saham linear regression linelrLine
Menghitung m-hari rata-rata bergerak sederhana LRMA dari garis regresi linier
Indeks m-hari untuk menghitung harga saham Moving Average ema
Ketika ema memakai LRMA, ia menghasilkan sinyal longEntry.
Ketika ema melewati LRMA, ia menghasilkan sinyal longExit
Dalam kasus ini, Anda harus mempertimbangkan sinyal beli hanya jika pasar bullish.
Eksekusi pembelian dan penjualan berdasarkan sinyal
Dengan garis rata-rata dan garis kemunduran yang berpotongan untuk menentukan waktu jual beli, dapat secara efektif menyaring penipuan dan menangkap titik balik, untuk mencapai low buy high sell.
Perlu diperhatikan penyesuaian parameter, memperbesar rata-rata dan parameter siklus garis regresi secara tepat, mengurangi frekuensi perdagangan. Mengatur risiko pengendalian strategi stop loss secara wajar. Mengoptimalkan aturan penilaian besar, meningkatkan akurasi.
Strategi ini dapat dioptimalkan dalam beberapa hal:
Optimalisasi rata-rata: mencoba berbagai jenis rata-rata, seperti rata-rata bergerak berbobot, dan lain-lain, untuk menemukan rata-rata terbaik untuk saham tersebut.
Pengoptimalan garis regresi: menyesuaikan siklus perhitungan garis regresi untuk mencari parameter siklus yang paling mencerminkan tren jangka panjang saham tersebut.
Optimasi penilaian besar: menguji indikator penilaian besar yang berbeda untuk menemukan sinyal besar yang paling sesuai dengan strategi.
Optimasi parameter: mencari konfigurasi parameter yang optimal melalui pengulangan kombinasi parameter yang berbeda.
Optimasi strategi stop loss: Uji coba berbagai metode stop loss dan atur logika stop loss yang optimal untuk mengendalikan risiko.
Optimalisasi biaya transaksi: Sesuaikan frekuensi transaksi untuk mengurangi biaya transaksi sesuai dengan model biaya transaksi yang berbeda.
Dengan mengoptimalkan beberapa poin di atas, Anda dapat meningkatkan stabilitas dan tingkat pengembalian strategi Anda.
Strategi ini mengintegrasikan analisa rata-rata dan analisa regresi linier. Strategi ini dapat secara efektif mengidentifikasi titik balik harga saham dan membimbing harga rendah dan tinggi. Strategi ini lebih sederhana dan dapat diandalkan, cocok untuk perdagangan opsi saham menengah dan panjang.
/*backtest
start: 2022-10-18 00:00:00
end: 2023-10-24 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/
// © lazy_capitalist
//@version=5
strategy('Linear Regression MA', overlay=true, initial_capital=10000)
datesGroup = "Date Info"
startMonth = input.int(defval = 1, title = "Start Month", minval = 1, maxval = 12, group=datesGroup)
startDay = input.int(defval = 1, title = "Start Day", minval = 1, maxval = 31, group=datesGroup)
startYear = input.int(defval = 2022, title = "Start Year", minval = 1970, group=datesGroup)
averagesGroup = "Averages"
lrLineInput = input.int(title="Linear Regression Line", defval=55, minval = 1, group=averagesGroup)
lrMAInput = input.int(title="Linear Regression MA", defval=55, minval = 1, group=averagesGroup)
emaInput = input.int(title="EMA Length", defval=55, minval = 1, group=averagesGroup)
tradesGroup = "Execute Trades"
executeLongInput = input.bool(title="Execute Long Trades", defval=true)
executeShortInput = input.bool(title="Execute Short Trades", defval=true)
executeStopLoss = input.bool(title="Execute Stop Loss", defval=true)
fourHrSMAExpr = ta.sma(close, 200)
fourHrMA = request.security(symbol=syminfo.tickerid, timeframe="240", expression=fourHrSMAExpr)
bullish = close > fourHrMA ? true : false
maxProfitInput = input.float( title="Max Profit (%)", defval=10.0, minval=0.0) * 0.01
stopLossPercentageInput = input.float( title="Stop Loss (%)", defval=1.75, minval=0.0) * 0.01
start = timestamp(startYear, startMonth, startDay, 00, 00) // backtest start window
window() => time >= start ? true : false // create function "within window of time"
showDate = input(defval = true, title = "Show Date Range")
lrLine = ta.linreg(close, lrLineInput, 0)
lrMA = ta.sma(lrLine, lrMAInput)
ema = ta.ema(close, emaInput)
longEntry = ema < lrMA
longExit = lrMA < ema
shortEntry = lrMA < ema
shortExit = ema < lrMA
maxProfitLong = strategy.opentrades.entry_price(0) * (1 + maxProfitInput)
maxProfitShort = strategy.opentrades.entry_price(0) * (1 - maxProfitInput)
stopLossPriceShort = strategy.position_avg_price * (1 + stopLossPercentageInput)
stopLossPriceLong = strategy.position_avg_price * (1 - stopLossPercentageInput)
if(executeLongInput and bullish)
strategy.entry( id="long_entry", direction=strategy.long, when=longEntry and window(), qty=10, comment="long_entry")
strategy.close( id="long_entry", when=longExit, comment="long_exit")
// strategy.close( id="long_entry", when=maxProfitLong <= close, comment="long_exit_mp")
if(executeShortInput and not bullish)
strategy.entry( id="short_entry", direction=strategy.short, when=shortEntry and window(), qty=10, comment="short_entry")
strategy.close( id="short_entry", when=shortExit, comment="short_exit")
// strategy.close( id="short_entry", when=maxProfitShort <= close, comment="short_exit_mp")
if(strategy.position_size > 0 and executeStopLoss)
strategy.exit( id="long_entry", stop=stopLossPriceLong, comment="exit_long_SL")
strategy.exit( id="short_entry", stop=stopLossPriceShort, comment="exit_short_SL")
// plot(series=lrLine, color=color.green)
plot(series=lrMA, color=color.red)
plot(series=ema, color=color.blue)