Strategi Perdagangan Smart Tracking Rata-rata Bergerak Ganda

Penulis:ChaoZhang, Tanggal: 2024-02-18 15:58:08
Tag:

img

Gambaran umum

Strategi perdagangan pelacakan rata-rata bergerak ganda adalah strategi mengikuti tren berdasarkan rata-rata bergerak dan indikator tertentu. Strategi ini menggunakan dua rata-rata bergerak dengan pengaturan parameter yang berbeda untuk membangun saluran dan menggabungkan indikator OTT untuk mengatur batas atas dan bawah saluran untuk melacak tren harga secara cerdas. Ketika harga menembus saluran, operasi beli atau jual dilaksanakan.

Prinsip Strategi

Metodologi inti dari strategi ini adalah membangun saluran adaptif menggunakan dua rata-rata bergerak dan indikator OTT, khususnya:

  1. Menghitung garis cepat MAvg menggunakan rata-rata bergerak CLOSE dan khusus sebagai input, dengan panjang 5 periode;

  2. Menghitung posisi garis panjang LongStop dan posisi garis pendek ShortStop untuk saluran berdasarkan MAvg dan persentase yang telah ditetapkan sebelumnya;

  3. Menghitung stop loss MT saluran dalam indikator OTT, dan harga saluran OTT berdasarkan arah panjang/pendek;

  4. Menghasilkan sinyal perdagangan ketika harga pecah melalui OTT.

Proses di atas memungkinkan pelacakan perubahan tren harga secara real time, menghasilkan sinyal perdagangan.

Keuntungan Strategi

Keuntungan dari strategi ini meliputi:

  1. Struktur saluran rata-rata bergerak ganda secara efektif menangkap tren harga;
  2. Indikator OTT mengatur channel stop loss untuk mengendalikan risiko;
  3. Struktur saluran adaptif merespons perubahan harga dengan cepat;
  4. Pengaturan parameter yang fleksibel untuk produk dan jangka waktu yang berbeda.

Risiko Strategi

Ada juga beberapa risiko:

  1. Rata-rata bergerak ganda dapat membentuk divergensi yang menghasilkan sinyal palsu;
  2. Pengaturan parameter OTT yang tidak tepat mungkin terlalu agresif atau konservatif;
  3. Strategi ini hanya didasarkan pada indikator teknis tanpa mempertimbangkan fundamental.

Risiko dapat ditangani melalui optimasi parameter, mengintegrasikan indikator lain dan filter fundamental.

Arahan Optimasi

Strategi dapat dioptimalkan dalam beberapa aspek:

  1. Mengoptimalkan parameter rata-rata bergerak untuk produk dan kerangka waktu yang tepat;
  2. Mengoptimalkan parameter lebar saluran yang menyeimbangkan sensitivitas dan stabilitas;
  3. Tambahkan filter berdasarkan volume perdagangan;
  4. Atur filter arah berdasarkan dasar-dasar.

Ringkasan

Secara singkat, ini adalah strategi trend berikut berdasarkan saluran rata-rata bergerak ganda dan indikator OTT. Ide inti adalah membangun saluran adaptif dan menghasilkan sinyal ketika harga pecah. Strategi ini memiliki kelebihan tetapi juga ruang untuk perbaikan. Dengan penyesuaian parameter dan optimasi logika, ini memiliki potensi untuk menjadi strategi perdagangan kuantitatif yang efisien yang layak digunakan.


/*backtest
start: 2023-02-11 00:00:00
end: 2024-02-17 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title="BugRA_Trade_Strategy", shorttitle="BugRA_Trade_Strategy", overlay=true)

// Kullanıcı Girdileri
length = input(5, title="Period", minval=1)
percent = input(1, title="Sihirli Yüzde", type=input.float, step=0.1, minval=0)
mav = input(title="Hareketli Ortalama Türü", defval="VAR", options=["SMA", "EMA", "WMA", "TMA", "VAR", "WWMA", "ZLEMA", "TSF"])
wt_n1 = input(10, title="Kanal Periyodu")
wt_n2 = input(21, title="Averaj Uzunluğu")
src = close

// Tarih Aralığı Girdileri
startDate = input(20200101, title="Başlangıç Tarihi (YYYYMMDD)")
endDate = input(20201231, title="Bitiş Tarihi (YYYYMMDD)")

// Tarih Filtresi Fonksiyonu
isDateInRange() => true

// Özel Fonksiyonlar
Var_Func(src, length) =>
    valpha = 2 / (length + 1)
    vud1 = src > src[1] ? src - src[1] : 0
    vdd1 = src < src[1] ? src[1] - src : 0
    vUD = sum(vud1, length)
    vDD = sum(vdd1, length)
    vCMO = (vUD - vDD) / (vUD + vDD)
    varResult = 0.0
    varResult := nz(valpha * abs(vCMO) * src + (1 - valpha * abs(vCMO)) * nz(varResult[1]))
    varResult

Wwma_Func(src, length) =>
    wwalpha = 1 / length
    wwma = 0.0
    wwma := wwalpha * src + (1 - wwalpha) * nz(wwma[1])
    wwma

Zlema_Func(src, length) =>
    zxLag = floor(length / 2)
    zxEMAData = src + (src - src[zxLag])
    zlema = ema(zxEMAData, length)
    zlema

Tsf_Func(src, length) =>
    lrc = linreg(src, length, 0)
    lrs = lrc - linreg(src, length, 1)
    tsf = lrc + lrs
    tsf

getMA(src, length) =>
    ma = mav == "SMA" ? sma(src, length) :
         mav == "EMA" ? ema(src, length) :
         mav == "WMA" ? wma(src, length) :
         mav == "TMA" ? sma(sma(src, ceil(length / 2)), floor(length / 2) + 1) :
         mav == "VAR" ? Var_Func(src, length) :
         mav == "WWMA" ? Wwma_Func(src, length) :
         mav == "ZLEMA" ? Zlema_Func(src, length) :
         mav == "TSF" ? Tsf_Func(src, length) : na

// Strateji Hesaplamaları
MAvg = getMA(src, length)
fark = MAvg * percent * 0.01
longStop = MAvg - fark
longStopPrev = nz(longStop[1], longStop)
longStop := MAvg > longStopPrev ? max(longStop, longStopPrev) : longStop
shortStop = MAvg + fark
shortStopPrev = nz(shortStop[1], shortStop)
shortStop := MAvg < shortStopPrev ? min(shortStop, shortStopPrev) : shortStop

dir = 1
dir := nz(dir[1], dir)
dir := dir == -1 and MAvg > shortStopPrev ? 1 : dir == 1 and MAvg < longStopPrev ? -1 : dir
MT = dir==1 ? longStop: shortStop
OTT = MAvg > MT ? MT*(200+percent)/200 : MT*(200-percent)/200

plot(OTT, title="BugRA", color=color.rgb(251, 126, 9))

// Alım ve Satım Koşulları
longCondition = crossover(src, OTT) and isDateInRange()
shortCondition = crossunder(src, OTT) and isDateInRange()

// Strateji Giriş ve Çıkış Emirleri
if (longCondition)
    strategy.entry("Long", strategy.long)

if (shortCondition)
    strategy.close("Long")


Lebih banyak