Strategy Crossover Regresi Linear Panjang-Pendek

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

img

Ringkasan

Strategi Long-Short Linear Regression Crossover adalah strategi analisis teknikal yang menggunakan model regresi linear untuk meramalkan pergerakan harga masa depan saham. Prinsip asas strategi adalah: pergerakan harga saham sering mengikuti trend linear tertentu, dan dengan mengira regresi linear harga, harga masa depan boleh diramalkan. Strategi ini pergi lama apabila harga yang diramalkan melintasi di atas harga semasa, dan keluar dari kedudukan apabila melintasi di bawah.

Prinsip Strategi

Strategi ini mula-mula mengira regresi linear harga saham dalam jangka masa tertentu. Regresi linear sesuai dengan garis lurus menggunakan kaedah kuadrat terkecil, yang mewakili trend perubahan harga dari masa ke masa. Strategi kemudian memetakan garis harga yang diramalkan dan harga semasa pada carta.

Strategi itu menentukan dua isyarat:

  1. Isyarat panjang: diaktifkan apabila harga yang diramalkan melintasi harga semasa
  2. Isyarat pendek: diaktifkan apabila harga yang diramalkan melintasi di bawah harga semasa

Apabila isyarat panjang muncul, strategi membuka kedudukan panjang; apabila isyarat pendek muncul, ia menutup kedudukan.

Langkah-langkah utama strategi adalah seperti berikut:

  1. Mengira regresi linear harga dalam tempoh masa
  2. Menggambar garis harga yang diramalkan dan harga semasa pada carta
  3. Tentukan isyarat panjang dan pendek
  4. Buka kedudukan panjang apabila isyarat panjang dicetuskan
  5. Tutup kedudukan apabila isyarat pendek dicetuskan

Analisis Kelebihan

Strategi Crossover Regresi Linear Panjang Pendek mempunyai kelebihan berikut:

  1. Sederhana dan berkesan: Logik strategi adalah jelas dan mudah dilaksanakan, dan ia boleh menangkap trend linier harga.
  2. Penggunaan yang luas: Strategi ini boleh menghasilkan isyarat perdagangan di kedua-dua pasaran trend dan julat.
  3. Kemampuan pengoptimuman yang kuat: Strategi ini mengandungi beberapa parameter utama, seperti tempoh regresi linear, purata bergerak, dll, yang boleh dioptimumkan untuk meningkatkan prestasi.

Analisis Risiko

Walaupun terdapat banyak kelebihan, Strategi Rintasan Regresi Linear Panjang Pendek juga mempunyai beberapa risiko:

  1. Risiko pengiktirafan trend: Apabila pergerakan harga tidak mengikuti trend linear, seperti dalam pasaran berkisar, strategi boleh menghasilkan isyarat palsu. Risiko ini boleh dikurangkan dengan menggabungkan dengan penunjuk lain seperti MACD.
  2. Risiko penentuan parameter: Prestasi strategi sensitif terhadap tetapan parameter, dan parameter yang tidak sesuai boleh menyebabkan kerugian. Oleh itu, pengujian balik dan pengoptimuman parameter yang mencukupi diperlukan sebelum perdagangan langsung.
  3. Risiko overfitting: Jika parameter terlalu dioptimumkan, ia boleh menyebabkan strategi terlalu sesuai dengan data sejarah dan berprestasi buruk pada masa akan datang.

Arahan pengoptimuman

  1. Gabungkan dengan penunjuk lain: Isyarat regresi linear boleh digabungkan dengan penunjuk teknikal lain seperti MACD, Bollinger Bands, dan lain-lain, untuk meningkatkan ketepatan isyarat.
  2. Pengoptimuman parameter dinamik: Mekanisme penyesuaian untuk parameter boleh direka untuk menyesuaikan parameter secara dinamik mengikut keadaan pasaran, meningkatkan kesesuaian.
  3. Tambah modul kawalan risiko: Sertakan langkah kawalan risiko seperti penghentian kerugian dan pengurusan wang ke dalam strategi untuk mengurangkan risiko satu transaksi dan meningkatkan pulangan kumulatif.
  4. Pengoptimuman pembelajaran mesin: Algoritma pembelajaran mesin boleh digunakan untuk terus mengoptimumkan model regresi linear untuk membuat ramalan lebih tepat.

Ringkasan

Strategi Long-Short Linear Regression Crossover menghasilkan isyarat dagangan berdasarkan perbandingan harga yang diramalkan dari regresi linear dan harga semasa. Logik strategi adalah mudah dan jelas, dan ia dapat menangkap trend linear harga dan boleh digunakan untuk pelbagai keadaan pasaran. Pada masa yang sama, strategi ini mudah dilaksanakan dan dioptimumkan, dan parameter boleh disesuaikan dengan fleksibel, digabungkan dengan penunjuk lain, modul kawalan risiko boleh ditambah, dan lain-lain, untuk terus meningkatkan prestasi strategi. Walau bagaimanapun, strategi ini juga mempunyai risiko seperti pengenalan trend yang tidak tepat, tetapan parameter yang tidak sesuai, dan terlalu banyak data sejarah, jadi perlu berhati-hati dalam penerapan praktikal. Secara keseluruhan, Strategi Regression Linear Long-Short Crossover adalah strategi dagangan yang mudah dan kuantitatif yang berkesan yang patut diteroka dan dioptimumkan 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 lanjut