Strategi Crossover Linear Panjang-Pendek


Tarikh penciptaan: 2024-03-27 17:52:02 Akhirnya diubah suai: 2024-03-27 17:52:02
Salin: 0 Bilangan klik: 576
1
fokus pada
1617
Pengikut

Strategi Crossover Linear Panjang-Pendek

Gambaran keseluruhan

Strategi crossover linier pelbagai ruang adalah strategi analisis teknikal yang berdasarkan pada model regresi linier untuk meramalkan pergerakan harga saham masa depan. Prinsip asas strategi ini adalah: pergerakan harga saham cenderung mengikuti trend linier tertentu, dan dengan mengira regresi linier harga, anda dapat meramalkan harga masa depan. Apabila harga ramalan naik lebih banyak daripada harga semasa, turun lebih rendah daripada harga semasa.

Prinsip Strategi

Strategi ini mula-mula mengira kemerosotan linear harga saham dalam jangka masa tertentu. Kemerosotan linear menggunakan penggandaan minima untuk membentuk garis lurus yang mewakili trend perubahan harga dari masa ke masa. Strategi ini kemudian memetakan garis harga ramalan dan harga semasa pada carta.

Strategi ini mentakrifkan dua isyarat:

  1. Membuat banyak isyarat: berlaku apabila harga ramalan di atas harga semasa
  2. Isyarat kosong: dipicu apabila harga ramalan di bawah harga semasa

Apabila muncul isyarat melakukan lebih, strategi membuka kedudukan melakukan lebih; apabila muncul isyarat melakukan kurang, posisi kosong.

Langkah-langkah penting dalam strategi ini ialah:

  1. Mengira kemerosotan linear harga dalam jangka masa
  2. Lukis garis harga ramalan dan harga semasa pada carta
  3. Mendefinisikan isyarat lebih dan kurang
  4. Buat lebih banyak apabila isyarat mencetuskan lebih banyak.
  5. Isyarat kosong apabila triggered

Analisis kelebihan

Strategi silang linear berbilang ruang mempunyai kelebihan berikut:

  1. Sederhana dan berkesan: Strategi ini mempunyai logik yang jelas, mudah dilaksanakan, dan dapat menangkap trend harga secara linear.
  2. Kebolehgunaan yang luas: Strategi ini boleh menghasilkan isyarat perdagangan dalam keadaan trend atau bergolak.
  3. Keupayaan untuk mengoptimumkan: Strategi mengandungi beberapa parameter utama, seperti kitaran kemerosotan linear, purata bergerak, dan lain-lain, yang dapat meningkatkan prestasi strategi dengan mengoptimumkan parameter ini.

Analisis risiko

Walaupun terdapat banyak kelebihan, strategi silang linier berbilang ruang juga mempunyai beberapa risiko:

  1. Risiko pengiktirafan trend: Apabila pergerakan harga tidak mengikuti trend linear, seperti pergerakan goyah, strategi mungkin menghasilkan isyarat yang salah. Risiko boleh dikurangkan dengan menggabungkan indikator lain seperti MACD.
  2. Risiko tetapan parameter: Prestasi strategi lebih sensitif terhadap tetapan parameter, parameter yang tidak betul boleh menyebabkan kerugian. Oleh itu, parameter perlu diukur semula dan dioptimumkan dengan baik sebelum diskaun.
  3. Risiko overfit: Jika parameter terlalu dioptimumkan, ia boleh menyebabkan strategi overfit data sejarah, prestasi masa depan yang buruk. Kaedah untuk mengelakkan overfit termasuk menjaga kesederhanaan, ujian luar set data, dan sebagainya.

Arah pengoptimuman

  1. Gabungan dengan penunjuk lain: isyarat regresi linear boleh digabungkan dengan penunjuk teknikal lain seperti MACD, Brinband dan lain-lain untuk meningkatkan ketepatan isyarat.
  2. Pengoptimuman parameter dinamik: Anda boleh merancang satu set mekanisme penyesuaian parameter, menyesuaikan parameter secara dinamik mengikut keadaan pasaran, meningkatkan kebolehsesuaian.
  3. Menambah modul kawalan risiko: Menambah langkah-langkah kawalan risiko seperti menghentikan kerugian, pengurusan wang dalam strategi untuk mengurangkan risiko perdagangan tunggal dan meningkatkan pendapatan kumulatif.
  4. Pengoptimuman pembelajaran mesin: model regresi linear boleh terus dioptimumkan dengan algoritma pembelajaran mesin untuk membuat ramalan yang lebih tepat.

ringkaskan

Strategi silang linier multi-terbang adalah berdasarkan regresi linier harga, menghasilkan isyarat perdagangan dengan membandingkan harga ramalan dan harga semasa. Logik strategi ini mudah dan jelas, dapat menangkap trend linier harga, sesuai untuk pelbagai keadaan. Pada masa yang sama, strategi mudah dilaksanakan dan dioptimumkan, boleh menyesuaikan parameter secara fleksibel, menggabungkan indikator lain, menambah modul kawalan risiko, dan lain-lain, terus meningkatkan prestasi strategi.

Kod 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)