Strategi Crossover Regresi Linier Panjang-Pendek

Penulis:ChaoZhang, Tanggal: 2024-03-27 17:52:02
Tag:

img

Gambaran umum

Long-Short Linear Regression Crossover Strategy adalah strategi analisis teknis yang menggunakan model regresi linier untuk memprediksi pergerakan harga saham di masa depan. Prinsip dasar dari strategi ini adalah: pergerakan harga saham sering mengikuti tren linier tertentu, dan dengan menghitung regresi linier harga, harga masa depan dapat diprediksi. Strategi ini berjalan panjang ketika harga yang diprediksi melintasi di atas harga saat ini, dan keluar dari posisi ketika melintasi di bawah.

Prinsip Strategi

Strategi ini pertama-tama menghitung regresi linier harga saham selama periode waktu tertentu. Regresi linier sesuai dengan garis lurus menggunakan metode paling kecil kuadrat, yang mewakili tren perubahan harga dari waktu ke waktu. Strategi kemudian memetakan garis harga yang diprediksi dan harga saat ini pada grafik.

Strategi ini mendefinisikan dua sinyal:

  1. Sinyal panjang: dipicu ketika harga yang diprediksi melintasi harga saat ini
  2. Sinyal pendek: diaktifkan ketika harga yang diprediksi melintasi di bawah harga saat ini

Ketika sinyal panjang muncul, strategi membuka posisi panjang; ketika sinyal pendek muncul, itu menutup posisi.

Langkah-langkah utama dari strategi ini adalah sebagai berikut:

  1. Menghitung regresi linier harga selama periode waktu
  2. Membuat grafik garis harga yang diprediksi dan harga saat ini pada grafik
  3. Mendefinisikan sinyal panjang dan pendek
  4. Buka posisi panjang ketika sinyal panjang dipicu
  5. Tutup posisi ketika sinyal pendek dipicu

Analisis Keuntungan

Strategi Long-Short Linear Regression Crossover memiliki keuntungan berikut:

  1. Sederhana dan efektif: Logika strategi jelas dan mudah diterapkan, dan dapat menangkap tren linier harga.
  2. Penerapan luas: Strategi dapat menghasilkan sinyal perdagangan di kedua pasar tren dan rentang.
  3. Optimasi yang kuat: Strategi berisi beberapa parameter kunci, seperti periode regresi linier, moving average, dll, yang dapat dioptimalkan untuk meningkatkan kinerja.

Analisis Risiko

Meskipun memiliki banyak keuntungan, Strategi Crossover Regresi Linear Pendek-panjang juga memiliki beberapa risiko:

  1. Risiko pengenalan tren: Ketika pergerakan harga tidak mengikuti tren linier, seperti di pasar berkisar, strategi dapat menghasilkan sinyal palsu.
  2. Risiko pengaturan parameter: Kinerja strategi sensitif terhadap pengaturan parameter, dan parameter yang tidak tepat dapat menyebabkan kerugian.
  3. Risiko overfit: Jika parameter terlalu dioptimalkan, itu dapat menyebabkan strategi untuk overfit data historis dan berkinerja buruk di masa depan.

Arahan Optimasi

  1. Kombinasi dengan indikator lain: Sinyal regresi linier dapat dikombinasikan dengan indikator teknis lainnya seperti MACD, Bollinger Bands, dll, untuk meningkatkan akurasi sinyal.
  2. Optimasi parameter dinamis: Mekanisme adaptif untuk parameter dapat dirancang untuk menyesuaikan parameter secara dinamis sesuai dengan kondisi pasar, meningkatkan kemampuan beradaptasi.
  3. Menambahkan modul pengendalian risiko: Masukkan langkah-langkah pengendalian risiko seperti stop-loss dan pengelolaan uang ke dalam strategi untuk mengurangi risiko transaksi tunggal dan meningkatkan hasil kumulatif.
  4. Optimasi pembelajaran mesin: Algoritma pembelajaran mesin dapat digunakan untuk terus mengoptimalkan model regresi linier untuk membuat prediksi lebih akurat.

Ringkasan

Strategi Long-Short Linear Regression Crossover menghasilkan sinyal perdagangan berdasarkan perbandingan harga yang diprediksi dari regresi linier dan harga saat ini. Logika strategi sederhana dan jelas, dan dapat menangkap tren linier harga dan berlaku untuk berbagai kondisi pasar. Pada saat yang sama, strategi mudah diterapkan dan dioptimalkan, dan parameter dapat disesuaikan secara fleksibel, dikombinasikan dengan indikator lain, modul pengendalian risiko dapat ditambahkan, dll., untuk terus meningkatkan kinerja strategi. Namun, strategi ini juga memiliki risiko seperti pengenalan tren yang tidak akurat, pengaturan parameter yang tidak tepat, dan kelebihan data historis, sehingga perlu berhati-hati dalam penerapan praktis. Secara keseluruhan, Strategi Regression Linear Long-Short Crossover adalah strategi perdagangan kuantitatif yang sederhana dan efektif yang layak dieksplorasi dan dioptimalkan lebih lanjut.


/*backtest
start: 2024-02-25 00:00:00
end: 2024-03-26 00:00:00
period: 3h
basePeriod: 15m
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/
// © stocktechbot
//@version=5
strategy("Linear Cross", overlay=true, margin_long=100, margin_short=0)

//Linear Regression

vol = volume

// Function to calculate linear regression
linregs(y, x, len) =>
    ybar = math.sum(y, len)/len
    xbar = math.sum(x, len)/len
    b = math.sum((x - xbar)*(y - ybar),len)/math.sum((x - xbar)*(x - xbar),len)
    a = ybar - b*xbar
    [a, b]

// Historical stock price data
price = close

// Length of linear regression
len = input(defval = 21, title = 'Strategy Length')
linearlen=input(defval = 9, title = 'Linear Lookback')
[a, b] = linregs(price, vol, len)

// Calculate linear regression for stock price based on volume
//eps = request.earnings(syminfo.ticker, earnings.actual)
//MA For double confirmation

out = ta.sma(close, 200)
outf = ta.sma(close, 50)
outn = ta.sma(close, 90)
outt = ta.sma(close, 21)
outthree = ta.sma(close, 9)

// Predicted stock price based on volume
predicted_price = a + b*vol

// Check if predicted price is between open and close
is_between = open < predicted_price and predicted_price < close

//MACD
//[macdLine, signalLine, histLine] = ta.macd(close, 12, 26, 9)

// Plot predicted stock price
plot(predicted_price, color=color.rgb(65, 59, 150), linewidth=2, title="Predicted Price")
plot(ta.sma(predicted_price,linearlen), color=color.rgb(199, 43, 64), linewidth=2, title="MA Predicted Price")
//offset = input.int(title="Offset", defval=0, minval=-500, maxval=500)
plot(out, color=color.blue, title="MA200")
[macdLine, signalLine, histLine] = ta.macd(predicted_price, 12, 26, 9)

//BUY Signal

longCondition=false
mafentry =ta.sma(close, 50) > ta.sma(close, 90)
//matentry = ta.sma(close, 21) > ta.sma(close, 50)
matwohun = close > ta.sma(close, 200)
twohunraise = ta.rising(out, 2)
twentyrise = ta.rising(outt, 2)
macdrise = ta.rising(macdLine,2)
macdlong = ta.crossover(predicted_price, ta.wma(predicted_price,linearlen))  and (signalLine < macdLine)
if macdlong and macdrise
    longCondition := true

if (longCondition)
    strategy.entry("My Long Entry Id", strategy.long)
//Sell Signal
lastEntryPrice = strategy.opentrades.entry_price(strategy.opentrades - 1)
daysSinceEntry = len
daysSinceEntry := int((time - strategy.opentrades.entry_time(strategy.opentrades - 1)) / (24 * 60 * 60 * 1000))
percentageChange = (close - lastEntryPrice) / lastEntryPrice * 100
//trailChange = (ta.highest(close,daysSinceEntry) - close) / close * 100

//label.new(bar_index, high, color=color.black, textcolor=color.white,text=str.tostring(int(trailChange)))
shortCondition=false
mafexit =ta.sma(close, 50) < ta.sma(close, 90)
matexit = ta.sma(close, 21) < ta.sma(close, 50)
matwohund = close < ta.sma(close, 200)
twohunfall = ta.falling(out, 3)
twentyfall = ta.falling(outt, 2)
shortmafall = ta.falling(outthree, 1)
macdfall = ta.falling(macdLine,1)
macdsell = macdLine < signalLine
if macdfall and macdsell and (macdLine < signalLine) and ta.falling(low,2)
    shortCondition := true

if (shortCondition)
    strategy.entry("My Short Entry Id", strategy.short)




Lebih banyak