Trend Berikutan Strategi Dagangan Regresi Berdasarkan Regresi Linear dan Purata Bergerak

Penulis:ChaoZhang, Tarikh: 2023-12-18 17:34:29
Tag:

img

Ringkasan

Strategi ini merancang trend yang mudah mengikuti sistem perdagangan berdasarkan garis regresi linear dan garis purata bergerak. Ia pergi panjang apabila garis regresi linear melintasi di atas purata bergerak dan pergi pendek apabila garis regresi linear melintasi di bawah. Sementara itu, ia menggunakan kemiringan garis regresi untuk menapis beberapa isyarat perdagangan dan hanya memasuki apabila arah trend sepadan.

Nama Strategi

Trend Berikutan Strategi Dagangan Regresi

Prinsip Strategi

Komponen utama strategi ini termasuk:

  1. Mengira purata mudah bergerak N-hari (SMA)
  2. Mengira garis regresi linear N hari terakhir
  3. Pergi panjang apabila harga penutupan melintasi di atas SMA dan lebih tinggi daripada garis regresi
  4. Pergi pendek apabila harga penutupan melintasi di bawah SMA dan lebih rendah daripada garisan regresi
  5. Tetapkan harga stop loss dan mengambil harga keuntungan

Garis regresi linear boleh sesuai dengan arah trend dengan baik dalam tempoh baru-baru ini. Ia boleh membantu menilai arah trend keseluruhan. Apabila harga memecahkan melalui garis SMA, kita perlu menentukan lebih lanjut sama ada arah garis regresi linear konsisten dengan pecah ini. Hanya apabila kedua-dua arah konsisten, isyarat perdagangan dihasilkan. Ini boleh menapis beberapa pecah palsu.

Selain itu, strategi ini juga menetapkan mekanisme stop loss. Apabila harga mencapai garis stop loss, tutup kedudukan untuk menghentikan kerugian. Ia juga menetapkan garis mengambil keuntungan untuk mengunci beberapa keuntungan.

Kelebihan Strategi

Strategi ini mempunyai kelebihan berikut:

  1. Menggabungkan penunjuk trend dan penunjuk pecah untuk mengelakkan pecah palsu dan meningkatkan kualiti isyarat
  2. Gunakan regresi linear untuk menentukan arah trend untuk penapisan trend, hanya pergi panjang dalam trend menaik dan pergi pendek dalam trend menurun
  3. Tetapkan stop loss dan mengambil keuntungan untuk mengawal risiko
  4. Peraturan yang jelas dan mudah difahami
  5. Hanya beberapa parameter untuk menyesuaikan tanpa terlalu banyak kerumitan

Analisis Risiko

Strategi ini juga mempunyai beberapa risiko:

  1. Lebih banyak isyarat dagangan yang salah boleh dihasilkan di pasaran terikat julat
  2. Tetapan purata bergerak dan tempoh regresi memerlukan ujian dan pengoptimuman yang luas, tetapan yang tidak betul boleh menjejaskan prestasi strategi
  3. Stop loss boleh dilanggar dalam keadaan pasaran yang melampau yang mengakibatkan kerugian besar
  4. Berdasarkan hanya kepada penunjuk teknikal tanpa menggabungkan faktor asas

Mengenai risiko ini, kita boleh mengoptimumkan dari aspek berikut:

  1. Mempertimbangkan untuk menangguhkan strategi atau menggunakan penunjuk lain untuk penapisan di pasaran terikat julat
  2. Backtest secara meluas untuk mencari parameter optimum
  3. Mengoptimumkan dan menyesuaikan kedudukan stop loss secara dinamik
  4. Menggabungkan data ekonomi dan faktor asas lain

Arahan pengoptimuman

Aspek utama untuk mengoptimumkan lagi strategi termasuk:

  1. Tambah penunjuk tambahan lain untuk menilai keadaan pasaran dan mengelakkan dagangan dalam tempoh terikat julat
  2. Mengoptimumkan jenis purata bergerak, seperti purata bergerak berganda, purata bergerak bertiga dll.
  3. Lebih lanjut menganalisis cerun garis regresi dan menambah peraturan penghakiman cerun
  4. Menggabungkan penunjuk turun naik untuk menetapkan paras kehilangan dinamik dan mengambil tahap keuntungan
  5. Menggunakan kaedah pembelajaran mesin untuk mengoptimumkan parameter secara automatik

Kesimpulan

Strategi ini mengintegrasikan fungsi trend berikut purata bergerak dan keupayaan menilai trend regresi linear, membentuk sistem perdagangan trend berikut yang agak mudah. Ia boleh mencapai hasil yang baik dalam pasaran trend yang kuat. Kita masih memerlukan pengujian balik dan pengoptimuman yang luas pada parameter dan peraturan, dan kawalan risiko yang betul. Kemudian strategi ini harus dapat memperoleh pulangan pelaburan yang stabil.


/*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))



Lebih lanjut