Strategi Trend Melalui SMA Dinamis

Penulis:ChaoZhang, Tanggal: 2024-02-05 12:14:12
Tag:

img

Gambaran umum

Strategi ini adalah strategi crossover rata-rata bergerak (SMA) sederhana yang cocok untuk pasar cryptocurrency. Ini menggunakan SMA cepat, menengah dan lambat untuk mengidentifikasi sinyal masuk dan keluar potensial. Ketika SMA cepat melintasi SMA menengah, sinyal beli dihasilkan. Ketika SMA cepat melintasi SMA menengah, sinyal jual dihasilkan.

Logika Strategi

Pengaturan Parameter

Strategi ini memungkinkan pedagang untuk menetapkan parameter kunci berikut:

  • Sumber harga: harga penutupan atau harga lainnya
  • Pertimbangkan bar yang tidak lengkap atau tidak
  • Metode peramalan SMA: prediksi pergeseran atau prediksi regresi linier
  • Panjang SMA cepat: default 7
  • Panjang SMA menengah: default 30
  • Panjang SMA lambat: 50
  • Dana rekening
  • Persentase risiko per perdagangan

Perhitungan SMA

SMA cepat, SMA menengah dan SMA lambat dihitung berdasarkan panjang SMA yang ditetapkan oleh pengguna.

Sinyal Trading

Ketika SMA cepat melintasi SMA menengah, sinyal beli dihasilkan. Ketika SMA cepat melintasi SMA menengah, sinyal jual dihasilkan.

Risiko dan Ukuran Posisi

Strategi ini menghitung modal nominal per perdagangan berdasarkan dana akun dan persentase risiko yang dapat diterima per perdagangan. kemudian menggunakan ATR untuk menghitung rentang stop loss dan akhirnya menentukan ukuran posisi untuk setiap perdagangan.

Analisis Keuntungan

  • Menggunakan beberapa SMA untuk mengidentifikasi tren dengan keyakinan yang lebih besar
  • Metode peramalan SMA opsional untuk kemampuan adaptasi yang lebih kuat
  • Sinyal perdagangan yang sederhana dan jelas yang mudah diterapkan
  • Menggabungkan manajemen risiko ilmiah dan posisi

Analisis Risiko

  • Sifat SMA yang tertinggal mungkin melewatkan titik pembalikan harga
  • Hanya mempertimbangkan indikator teknis tanpa menggabungkan fundamental
  • Tidak mempertimbangkan dampak dari peristiwa mendadak

Dapat mengoptimalkan dengan memperpendek periode SMA, menambahkan indikator lain dll.

Arahan Optimasi

  • Tambahkan indikator lain untuk menyaring sinyal palsu
  • Masukkan analisis fundamental
  • Mengoptimalkan parameter periode SMA
  • Mengoptimalkan parameter ukuran risiko dan posisi

Kesimpulan

Strategi ini mengintegrasikan aturan crossover SMA, manajemen risiko dan ukuran posisi untuk sistem tren berikut yang kuat yang cocok untuk pasar crypto. Pedagang dapat mengubah parameter seperti gaya perdagangan, kondisi pasar dll untuk menyesuaikan dan mengoptimalkan.


/*backtest
start: 2024-01-05 00:00:00
end: 2024-02-04 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Onchain Edge Trend SMA Strategy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10)

// Configuration Parameters
priceSource = input(close, title="Price Source")
includeIncompleteBars = input(true, title="Consider Incomplete Bars")
maForecastMethod = input(defval="flat", options=["flat", "linreg"], title="Moving Average Prediction Method")
linearRegressionLength = input(3, title="Linear Regression Length")
fastMALength = input(7, title="Fast Moving Average Length")
mediumMALength = input(30, title="Medium Moving Average Length")
slowMALength = input(50, title="Slow Moving Average Length")
tradingCapital = input(100000, title="Trading Capital")
tradeRisk = input(1, title="Trade Risk (%)")

// Calculation of Moving Averages
calculateMA(source, period) => sma(source, period)
predictMA(source, forecastLength, regressionLength) => 
    maForecastMethod == "flat" ? source : linreg(source, regressionLength, forecastLength)

offset = includeIncompleteBars ? 0 : 1
actualSource = priceSource[offset]

fastMA = calculateMA(actualSource, fastMALength)
mediumMA = calculateMA(actualSource, mediumMALength)
slowMA = calculateMA(actualSource, slowMALength)

// Trading Logic
enterLong = crossover(fastMA, mediumMA)
exitLong = crossunder(fastMA, mediumMA)

// Risk and Position Sizing
riskCapital = tradingCapital * tradeRisk / 100
lossThreshold = atr(14) * 2
tradeSize = riskCapital / lossThreshold

if (enterLong)
    strategy.entry("Enter Long", strategy.long, qty=tradeSize)

if (exitLong)
    strategy.close("Enter Long")

// Display Moving Averages
plot(fastMA, color=color.blue, linewidth=2, title="Fast Moving Average")
plot(mediumMA, color=color.purple, linewidth=2, title="Medium Moving Average")
plot(slowMA, color=color.red, linewidth=2, title="Slow Moving Average")


Lebih banyak