Strategi perdagangan mengikuti tren berdasarkan regresi linier dan rata-rata pergerakan


Tanggal Pembuatan: 2023-12-18 17:34:29 Akhirnya memodifikasi: 2023-12-18 17:34:29
menyalin: 4 Jumlah klik: 890
1
fokus pada
1621
Pengikut

Strategi perdagangan mengikuti tren berdasarkan regresi linier dan rata-rata pergerakan

Ringkasan

Strategi ini didasarkan pada garis regresi linier dan rata-rata bergerak yang dirancang sebagai sistem perdagangan pelacakan tren sederhana. Di atas garis regresi linier, Anda melakukan lebih banyak ketika Anda melewati rata-rata bergerak, dan di bawah garis regresi linier, Anda melakukan lebih sedikit ketika Anda melewati rata-rata bergerak.

Nama kebijakan

Trend Following Regression Trading Strategy (Strategi Perdagangan Regresi Mengikuti Tren)

Prinsip Strategi

Strategi ini mencakup beberapa bagian penting:

  1. Hitung rata-rata bergerak sederhana (SMA) N hari
  2. Hitung garis regresi linear untuk N hari terakhir
  3. Ketika harga close out melewati garis SMA dan lebih tinggi dari garis regresi, lakukan lebih banyak
  4. Ketika harga close out menembus SMA dan berada di bawah garis regresi, lakukan shorting
  5. Tetapkan harga stop loss dan stop loss

Garis regresi linier sangat cocok dengan arah tren dalam beberapa waktu terakhir. Ini dapat digunakan untuk membantu menentukan arah tren keseluruhan. Ketika harga menembus garis SMA, kita perlu menilai lebih lanjut apakah arah garis regresi linier sesuai dengan penembusan tersebut.

Selain itu, strategi ini juga mengatur mekanisme stop loss. Ketika harga menyentuh garis stop loss, posisi kosong berhenti. Juga mengatur garis stop loss, mengunci sebagian keuntungan.

Keunggulan Strategis

Strategi ini memiliki keuntungan sebagai berikut:

  1. Kombinasi indikator tren dan indikator terobosan, menghindari terobosan palsu, meningkatkan kualitas sinyal
  2. Menggunakan regresi linier untuk menentukan arah tren, melakukan penyaringan tren, hanya melakukan lebih banyak ketika tren naik, dan melakukan blanko ketika tren turun
  3. Pengaturan Stop Loss dan Stop Stop Mechanism untuk Mengontrol Risiko
  4. Peraturan yang jelas, mudah dipahami dan diterapkan
  5. Hanya perlu menyesuaikan beberapa parameter, tidak terlalu rumit

Analisis risiko

Strategi ini juga memiliki beberapa risiko:

  1. Lebih banyak sinyal perdagangan yang salah dalam situasi yang bergejolak
  2. Pengaturan rata-rata bergerak dan siklus regresi membutuhkan pengoptimalan pengujian berulang, dan pengaturan yang salah dapat mempengaruhi kinerja strategi
  3. Kecelakaan yang terjadi pada kondisi ekstrim dapat menyebabkan kerugian yang lebih besar.
  4. Berdasarkan Indikator Teknis saja, Tidak Tergabung dengan Faktor Fundamental

Untuk mengatasi risiko ini, kita dapat mengoptimalkan beberapa hal berikut:

  1. Pertimbangkan strategi penundaan atau filter dengan indikator lain di pasar yang bergoyang
  2. Periksa ulang parameter untuk menemukan parameter yang optimal
  3. Optimasi dan penyesuaian posisi stop loss secara dinamis
  4. Faktor-faktor mendasar seperti data ekonomi

Arah optimasi

Strategi ini dapat dioptimalkan dengan cara:

  1. Menambahkan indikator tambahan untuk menilai kondisi pasar dan menghindari perdagangan di tengah kondisi yang tidak stabil
  2. Mengoptimalkan jenis rata-rata bergerak, seperti kombinasi rata-rata bergerak ganda, rata-rata bergerak tiga
  3. Analisis lebih lanjut pada kemiringan garis regresi, menambahkan aturan penilaian kemiringan
  4. Kombinasi dengan indikator volatilitas, pengaturan posisi stop loss stop loss dinamis
  5. Mengoptimalkan parameter secara otomatis menggunakan metode pembelajaran mesin

Meringkaskan

Strategi ini mengintegrasikan fungsi trend tracking dari moving averages dengan fungsi trend judgement dari linear regression, membentuk sebuah sistem trading trend tracking yang relatif sederhana dan mudah dilakukan. Dalam pasar yang jelas trend, strategi ini dapat memperoleh efek yang lebih baik.

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