Trend mengikut strategi dagangan berdasarkan regresi linear dan purata bergerak


Tarikh penciptaan: 2023-12-18 17:34:29 Akhirnya diubah suai: 2023-12-18 17:34:29
Salin: 4 Bilangan klik: 890
1
fokus pada
1621
Pengikut

Trend mengikut strategi dagangan berdasarkan regresi linear dan purata bergerak

Gambaran keseluruhan

Strategi ini menggunakan garis regresi linear dan rata-rata bergerak untuk merancang sistem perdagangan yang mudah untuk mengesan trend. Apabila garis regresi linear melintasi rata-rata bergerak, anda melakukan lebih banyak, dan apabila garis regresi linear melintasi rata-rata bergerak, anda membuat kosong.

Nama strategi

Trend Following Regression Trading Strategy

Prinsip Strategi

Strategi ini merangkumi beberapa bahagian utama:

  1. Hitung purata bergerak sederhana (SMA)
  2. Hitung garis regresi linear untuk hari N terkini
  3. Apabila harga penutupan melintasi garis SMA dan lebih tinggi daripada garis pengembalian, lakukan lebih banyak
  4. Apabila harga penutupan melintasi garis SMA dan berada di bawah garis pengembalian
  5. Tetapkan harga henti rugi dan harga henti jual

Garis regresi linear sangat sesuai dengan arah trend dalam tempoh yang baru-baru ini. Ini boleh digunakan untuk membantu menentukan arah trend keseluruhan. Apabila harga menembusi garis SMA, kita perlu menilai lebih lanjut sama ada arah garis regresi linear sesuai dengan penembusan tersebut.

Di samping itu, strategi ini juga menetapkan mekanisme hentikan kerugian. Apabila harga menyentuh garis hentikan kerugian, hentikan kedudukan kosong. Juga menetapkan garis hentikan, mengunci sebahagian keuntungan.

Kelebihan Strategik

Strategi ini mempunyai kelebihan berikut:

  1. Gabungan penunjuk trend dan penunjuk penembusan untuk mengelakkan penembusan palsu dan meningkatkan kualiti isyarat
  2. Menggunakan regresi linear untuk menentukan arah trend, melakukan penapisan trend, hanya melakukan lebih banyak apabila trend meningkat, dan kosong apabila trend menurun
  3. Mekanisme Stop Loss dan Stop Stop untuk mengawal risiko
  4. Peraturan yang jelas dan mudah difahami dan dilaksanakan
  5. Hanya perlu menyesuaikan beberapa parameter, tidak perlu terlalu rumit

Analisis risiko

Strategi ini mempunyai beberapa risiko:

  1. Lebih banyak isyarat perdagangan yang salah dalam keadaan gegaran
  2. Tetapan untuk purata bergerak dan kitaran regresi memerlukan pengoptimuman ujian berulang, tetapan yang tidak betul boleh menjejaskan prestasi strategi
  3. Kemusnahan yang dihentikan dalam keadaan yang melampau mungkin menyebabkan kerugian yang lebih besar
  4. Berasaskan pada penunjuk teknikal sahaja, tanpa unsur asas

Untuk mengatasi risiko ini, kita boleh mengoptimumkan beberapa aspek:

  1. Pertimbangkan untuk berhenti atau menggunakan penapis lain semasa pasaran bergolak
  2. Periksa parameter berulang kali untuk mencari parameter yang optimum
  3. Pengoptimuman dan penyesuaian dinamik kedudukan henti
  4. Faktor asas seperti data ekonomi

Arah pengoptimuman

Strategi ini boleh dioptimumkan dengan cara:

  1. Menambah petunjuk tambahan untuk menilai keadaan pasaran dan mengelakkan dagangan dalam keadaan goncangan
  2. Mengoptimumkan jenis purata bergerak, seperti purata bergerak dua, purata bergerak tiga dan lain-lain
  3. Analisis lebih lanjut mengenai kemerosotan garis regresi, menambah peraturan untuk menilai kemerosotan
  4. Gabungan dengan indikator kadar turun naik, menetapkan kedudukan hentian hentian dinamik
  5. Mengoptimumkan parameter secara automatik menggunakan kaedah pembelajaran mesin

ringkaskan

Strategi ini mengintegrasikan fungsi pengesanan trend rata-rata bergerak dengan fungsi penghakiman trend regresi linear, membentuk sistem perdagangan trend yang agak mudah dan mudah dilaksanakan. Dalam pasaran yang jelas trend, strategi ini dapat memperoleh kesan yang lebih baik.

Kod sumber strategi
/*backtest
start: 2023-11-17 00:00:00
end: 2023-12-05 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title="Regression Trading Strategy", shorttitle="RTS", overlay=true)

// Input parameters
n = input(14, title="SMA Period")
stop_loss_percentage = input(2, title="Stop Loss Percentage")
take_profit_percentage = input(2, title="Take Profit Percentage")

// Calculate the SMA
sma = sma(close, n)

// Linear regression function
linear_regression(src, length) =>
    sumX = 0.0
    sumY = 0.0
    sumXY = 0.0
    sumX2 = 0.0
    for i = 0 to length - 1
        sumX := sumX + i
        sumY := sumY + src[i]
        sumXY := sumXY + i * src[i]
        sumX2 := sumX2 + i * i
    slope = (length * sumXY - sumX * sumY) / (length * sumX2 - sumX * sumX)
    intercept = (sumY - slope * sumX) / length
    line = slope * length + intercept
    line

// Calculate the linear regression
regression_line = linear_regression(close, n)

// Plot the SMA and regression line
plot(sma, title="SMA", color=color.blue)
plot(regression_line, title="Regression Line", color=color.red)

// Trading strategy conditions
long_condition = crossover(close, sma) and close > regression_line
short_condition = crossunder(close, sma) and close < regression_line

// Exit conditions
stop_loss_price = close * (1 - stop_loss_percentage / 100)
take_profit_price = close * (1 + take_profit_percentage / 100)

// Plot entry and exit points on the chart
plotshape(series=long_condition, title="Long Entry", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small)
plotshape(series=short_condition, title="Short Entry", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small)
plotshape(series=crossunder(close, stop_loss_price), title="Stop Loss", location=location.abovebar, color=color.red, style=shape.labeldown, text="SL")
plotshape(series=crossover(close, take_profit_price), title="Take Profit", location=location.belowbar, color=color.green, style=shape.labelup, text="TP")

// Strategy orders
strategy.entry("Long", strategy.long, when = long_condition)
strategy.entry("Short", strategy.short, when = short_condition)
strategy.exit("Exit", from_entry = "Long", when = crossover(close, stop_loss_price) or crossover(close, take_profit_price))
strategy.exit("Exit", from_entry = "Short", when = crossunder(close, stop_loss_price) or crossunder(close, take_profit_price))