Strategi Crossover Linear Jangka Panjang-Pendek


Tanggal Pembuatan: 2024-03-27 17:52:02 Akhirnya memodifikasi: 2024-03-27 17:52:02
menyalin: 0 Jumlah klik: 576
1
fokus pada
1617
Pengikut

Strategi Crossover Linear Jangka Panjang-Pendek

Ringkasan

Strategi crossover linier multi-posisi adalah strategi analisis teknis yang didasarkan pada model regresi linier untuk memprediksi pergerakan harga saham di masa depan. Prinsip dasar strategi ini adalah: pergerakan harga saham cenderung mengikuti tren linier tertentu, dan dengan menghitung regresi linier harga, harga di masa depan dapat diprediksi.

Prinsip Strategi

Strategi ini pertama-tama menghitung regresi linier harga saham selama beberapa waktu. Regresi linier menggunakan perkalian minimal untuk menyusun garis lurus yang mewakili tren perubahan harga dari waktu ke waktu. Strategi ini kemudian memetakan garis harga yang diprediksi dan harga saat ini pada grafik.

Kebijakan ini mendefinisikan dua sinyal:

  1. Multi-Signal: Triggered when the forecast price is above the current price (diaktifkan saat harga yang diprediksi berada di atas harga saat ini)
  2. Sinyal kosong: dipicu ketika harga yang diprediksi di bawah harga saat ini

Ketika sinyal melakukan lebih banyak muncul, strategi membuka posisi lebih banyak; ketika sinyal melakukan lebih sedikit muncul, posisi kosong.

Langkah-langkah penting dari strategi ini adalah sebagai berikut:

  1. Perhitungan Regresensi Linear dari Harga dalam Waktu
  2. Garis harga yang diprediksi dan harga saat ini pada grafik
  3. Definisi sinyal over dan under
  4. Trigger lebih banyak sinyal dan lebih banyak posisi.
  5. Tekan posisi saat sinyal kosong.

Analisis Keunggulan

Strategi crossover linier multi-area memiliki keuntungan sebagai berikut:

  1. Sederhana dan efektif: Strategi ini logisnya jelas, mudah diterapkan, dan dapat menangkap tren linier harga.
  2. Keuntungan dari strategi ini adalah bahwa strategi ini dapat menghasilkan sinyal perdagangan baik dalam kondisi tren maupun goncangan.
  3. Optimalisasi yang kuat: Strategi mengandung beberapa parameter kunci, seperti siklus regresi linier, rata-rata bergerak, dan lain-lain, yang dapat meningkatkan kinerja strategi dengan mengoptimalkan parameter ini.

Analisis risiko

Meskipun ada banyak keuntungan dari strategi crossover linier, ada juga beberapa risiko:

  1. Risiko identifikasi tren: Strategi dapat menghasilkan sinyal yang salah ketika pergerakan harga tidak mengikuti tren linier, seperti tren goyangan. Risiko dapat dikurangi dengan menggabungkan indikator lain seperti MACD.
  2. Risiko pengaturan parameter: Kinerja strategi sangat sensitif terhadap pengaturan parameter, parameter yang tidak tepat dapat menyebabkan kerugian. Oleh karena itu, parameter perlu diperiksa dan dioptimalkan secara menyeluruh sebelum real-time.
  3. Risiko over-fit: Jika terlalu banyak optimasi parameter, dapat menyebabkan strategi over-fit data historis, kinerja yang buruk di masa depan. Cara untuk menghindari over-fit termasuk menjaga sederhana, tes eksternal dari dataset, dll.

Arah optimasi

  1. Kombinasi dengan indikator lain: Sinyal regresi linier dapat dikombinasikan dengan indikator teknis lainnya seperti MACD, Brinband, dan lain-lain untuk meningkatkan akurasi sinyal.
  2. Optimasi parameter dinamis: Anda dapat merancang mekanisme penyesuaian parameter, menyesuaikan parameter secara dinamis sesuai dengan kondisi pasar, meningkatkan adaptasi.
  3. Menambahkan modul pengendalian risiko: Menambahkan langkah-langkah pengendalian risiko seperti stop loss dan manajemen dana ke dalam strategi, mengurangi risiko transaksi tunggal dan meningkatkan keuntungan akumulatif.
  4. Optimasi Pembelajaran Mesin: Algorithm pembelajaran mesin dapat terus mengoptimalkan model regresi linier untuk membuat prediksi yang lebih akurat.

Meringkaskan

Strategi crossover linier multi-terang didasarkan pada regresi linier harga, menghasilkan sinyal perdagangan dengan memprediksi harga dan membandingkan harga saat ini. Logika strategi sederhana dan jelas, dapat menangkap tren linier harga, cocok untuk semua jenis situasi. Strategi ini juga mudah diimplementasikan dan dioptimalkan, dapat menyesuaikan parameter secara fleksibel, menggabungkan indikator lain, menambahkan modul kontrol risiko, dll, untuk terus meningkatkan kinerja strategi.

Kode Sumber Strategi
/*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)