Strategi Trend Salib SMA Dinamik

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

img

Ringkasan

Strategi ini adalah strategi crossover purata bergerak (SMA) yang mudah sesuai untuk pasaran mata wang kripto. Ia menggunakan SMA pantas, sederhana dan perlahan untuk mengenal pasti isyarat masuk dan keluar yang berpotensi. Apabila SMA pantas melintasi SMA sederhana, isyarat beli dihasilkan. Apabila SMA pantas melintasi di bawah SMA sederhana, isyarat jual dihasilkan.

Logika Strategi

Tetapan Parameter

Strategi ini membolehkan peniaga menetapkan parameter utama berikut:

  • Sumber harga: harga penutupan atau harga lain
  • Pertimbangkan bar yang tidak lengkap atau tidak
  • Kaedah ramalan SMA: ramalan pergeseran atau ramalan regresi linear
  • Panjang SMA pantas: lalai 7
  • Panjang SMA purata: lalai 30
  • Panjang SMA perlahan: lalai 50
  • Dana akaun
  • Peratusan risiko bagi setiap perdagangan

Pengiraan SMA

SMA pantas, SMA sederhana dan SMA perlahan dikira berdasarkan panjang SMA yang ditetapkan oleh pengguna.

Isyarat Perdagangan

Apabila SMA pantas melintasi SMA sederhana, isyarat beli dihasilkan. Apabila SMA pantas melintasi di bawah SMA sederhana, isyarat jual dihasilkan.

Risiko dan Ukuran Posisi

Strategi ini mengira pokok nominal setiap perdagangan berdasarkan dana akaun dan peratusan risiko yang boleh diterima setiap perdagangan. ia kemudian menggunakan ATR untuk mengira julat stop loss dan akhirnya menentukan saiz kedudukan untuk setiap perdagangan.

Analisis Kelebihan

  • Menggunakan pelbagai SMA untuk mengenal pasti trend dengan keyakinan yang lebih besar
  • Kaedah ramalan SMA pilihan untuk kebolehsesuaian yang lebih kuat
  • Isyarat perdagangan yang mudah dan jelas mudah dilaksanakan
  • Merangkumi pengurusan risiko saintifik dan kedudukan

Analisis Risiko

  • Sifat SMA yang ketinggalan mungkin terlepas titik pembalikan harga
  • Hanya mempertimbangkan penunjuk teknikal tanpa menggabungkan asas
  • Tidak mengambil kira kesan peristiwa tiba-tiba

Boleh mengoptimumkan dengan memendekkan tempoh SMA, menambah penunjuk lain dll.

Arahan pengoptimuman

  • Tambah penunjuk lain untuk menapis isyarat palsu
  • Menggabungkan analisis asas
  • Mengoptimumkan parameter tempoh SMA
  • Mengoptimumkan parameter ukuran risiko dan kedudukan

Kesimpulan

Strategi ini mengintegrasikan peraturan silang SMA, pengurusan risiko dan ukuran kedudukan untuk sistem trend berikut yang kukuh yang sesuai untuk pasaran kripto.


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