Tren Mengikuti Strategi Perdagangan Regresi Berdasarkan Regresi Linear dan Moving Average

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

img

Gambaran umum

Strategi ini mendesain tren sederhana mengikuti sistem perdagangan berdasarkan garis regresi linier dan garis rata-rata bergerak. Ini panjang ketika garis regresi linier melintasi di atas rata-rata bergerak dan pendek ketika garis regresi linier melintasi di bawah. Sementara itu, ini menggunakan kemiringan garis regresi untuk menyaring beberapa sinyal perdagangan dan hanya masuk ketika arah tren cocok.

Nama Strategi

Tren Mengikuti Strategi Regression Trading

Prinsip Strategi

Komponen utama dari strategi ini meliputi:

  1. Menghitung rata-rata bergerak sederhana (SMA) N-hari
  2. Menghitung garis regresi linier dari N hari terakhir
  3. Pergi panjang ketika harga penutupan melintasi SMA dan lebih tinggi dari garis regresi
  4. Pergi pendek ketika harga penutupan melintasi di bawah SMA dan lebih rendah dari garis regresi
  5. Setel harga stop loss dan harga profit

Garis regresi linier dapat sesuai dengan arah tren dengan baik dalam periode terakhir. Ini dapat membantu menilai arah tren secara keseluruhan. Ketika harga menembus garis SMA, kita perlu lebih lanjut menentukan apakah arah garis regresi linier konsisten dengan pemecahan ini. Hanya ketika kedua arah konsisten, sinyal perdagangan dihasilkan. Ini dapat menyaring beberapa pemecahan palsu.

Selain itu, strategi ini juga menetapkan mekanisme stop loss. Ketika harga mencapai garis stop loss, tutup posisi untuk menghentikan kerugian.

Keuntungan dari Strategi

Strategi ini memiliki keuntungan berikut:

  1. Menggabungkan indikator tren dan indikator breakout untuk menghindari false breakout dan meningkatkan kualitas sinyal
  2. Gunakan regresi linier untuk menentukan arah tren untuk penyaringan tren, hanya pergi panjang dalam tren naik dan pergi pendek dalam tren turun
  3. Atur stop loss dan ambil keuntungan untuk mengendalikan risiko
  4. Aturan yang jelas dan mudah dimengerti
  5. Hanya beberapa parameter untuk disetel tanpa terlalu banyak kompleksitas

Analisis Risiko

Strategi ini juga memiliki beberapa risiko:

  1. Lebih banyak sinyal perdagangan yang salah dapat dihasilkan di pasar yang terikat rentang
  2. Pengaturan rata-rata bergerak dan periode regresi membutuhkan pengujian dan optimalisasi yang luas, pengaturan yang tidak tepat dapat mempengaruhi kinerja strategi
  3. Stop loss dapat dipecahkan dalam kondisi pasar yang ekstrim yang mengakibatkan kerugian besar
  4. Berdasarkan indikator teknis saja tanpa menggabungkan faktor fundamental

Mengenai risiko ini, kita dapat mengoptimalkan dari aspek berikut:

  1. Pertimbangkan untuk menangguhkan strategi atau menggunakan indikator lain untuk penyaringan di pasar yang terikat jangkauan
  2. Backtest secara ekstensif untuk menemukan parameter optimal
  3. Optimalkan dan sesuaikan posisi stop loss secara dinamis
  4. Menggabungkan data ekonomi dan faktor fundamental lainnya

Arahan Optimasi

Aspek utama untuk mengoptimalkan strategi lebih lanjut meliputi:

  1. Tambahkan indikator tambahan lainnya untuk menilai kondisi pasar dan menghindari perdagangan dalam periode yang terikat kisaran
  2. Mengoptimalkan jenis rata-rata bergerak, seperti rata-rata bergerak ganda, rata-rata bergerak tiga kali, dll.
  3. Lebih lanjut menganalisis kemiringan garis regresi dan menambahkan aturan penilaian kemiringan
  4. Menggabungkan indikator volatilitas untuk menetapkan stop loss dinamis dan mengambil tingkat keuntungan
  5. Menggunakan metode pembelajaran mesin untuk mengoptimalkan parameter secara otomatis

Kesimpulan

Strategi ini mengintegrasikan fungsi mengikuti tren rata-rata bergerak dan kemampuan menilai tren regresi linier, membentuk sistem perdagangan tren yang relatif sederhana. Ini dapat mencapai hasil yang baik di pasar tren yang kuat. Kami masih membutuhkan pengujian dan pengoptimalan yang luas pada parameter dan aturan, dan pengendalian risiko yang tepat. Kemudian strategi ini harus dapat memperoleh pengembalian investasi 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 banyak