Strategi Perdagangan Rata-rata Pergerakan Momentum Ganda


Tanggal Pembuatan: 2024-02-19 14:36:37 Akhirnya memodifikasi: 2024-02-19 14:36:37
menyalin: 1 Jumlah klik: 322
1
fokus pada
1179
Pengikut

Strategi Perdagangan Rata-rata Pergerakan Momentum Ganda

Ringkasan

Strategi perdagangan linier dinamis ganda adalah strategi yang menggunakan indikator OTT dan indikator osilator Wavetrend. Ini menggabungkan indikator OTT yang dikembangkan oleh guru Anıl Özekşi dan indikator osilator Wavetrend lonestar108 untuk membentuk indikator perdagangan yang sukses. Strategi ini dapat dilakukan dalam pasar dua arah.

Prinsip Strategi

Strategi perdagangan rasio energi dua arah pertama kali menghitung rata-rata Brin, yaitu rata-rata bergerak MAvg. Kemudian, berdasarkan rentang persentase dan periode yang ditetapkan pengguna, menghitung longStop dan shortStop.

Secara khusus, indikator inti dari strategi ini adalah indikator OTT. Indikator OTT terdiri dari garis rata-rata dan garis batas, yang merupakan posisi garis batas yang disesuaikan dengan tingkat fluktuasi pasar berdasarkan algoritma tertentu.

Strategi ini juga menggunakan indikator Wavetrend untuk menentukan arah tren harga, hanya melakukan shorting jika ditentukan sebagai tren turun; jika ditentukan sebagai tren naik, hanya melakukan shorting.

Analisis Keunggulan

Strategi perdagangan linier dinamis ganda menggabungkan keunggulan indikator moving average, Brinks, dan OTT, yang dapat secara otomatis menyesuaikan posisi stop loss, mengurangi probabilitas stop loss diaktifkan.

Secara khusus, keuntungan utama dari strategi ini adalah:

  1. Mengatur Stop Loss secara otomatis untuk mengontrol risiko
  2. Indikator OTT lebih akurat dalam menentukan titik balik
  3. Indikator Keputusan Tren untuk Menghindari Pasar yang Bergolak
  4. Aturan relatif sederhana dan jelas, mudah dipahami dan digunakan

Analisis risiko

Strategi perdagangan linear biner juga memiliki beberapa risiko, terutama yang berkaitan dengan:

  1. Dalam situasi yang ekstrim, stop loss line dapat ditembus dan menyebabkan kerugian yang lebih besar
  2. Indikator OTT menilai sinyal pembalikan tidak selalu akurat, mungkin terjadi sinyal kesalahan
  3. Perhitungan tren juga bisa salah, membuat lebih banyak kerugian di tengah-tengah pergerakan turun
  4. Setelan parameter yang tidak tepat juga dapat mempengaruhi efek kebijakan

Cara pencegahannya adalah:

  1. Relaksasi Stop Loss yang tepat untuk memastikan bahwa Stop Loss Line tidak mudah diaktifkan
  2. Menentukan reliabilitas sinyal OTT, dikombinasikan dengan indikator lainnya, untuk menghindari sinyal palsu
  3. Parameter yang disesuaikan untuk membuat penilaian tren lebih andal
  4. Mengoptimalkan parameter untuk menemukan kombinasi optimal

Arah optimasi

Ada ruang untuk lebih memaksimalkan strategi perdagangan linier energi dua arah:

  1. Dapat dipertimbangkan untuk dikombinasikan dengan indikator lain untuk meningkatkan akurasi penilaian sinyal
  2. Adaptasi algoritma stop loss dapat dipelajari, sehingga stop loss dapat disesuaikan dengan tingkat fluktuasi pasar
  3. Anda dapat menambahkan indikator volume transaksi untuk menghindari penembusan palsu dalam jumlah kecil.
  4. Anda dapat menguji berbagai jenis rata-rata bergerak untuk menemukan rata-rata yang paling cocok.
  5. Metode seperti pembelajaran mesin dapat dicoba untuk mengoptimalkan parameter secara otomatis.

Meringkaskan

Strategi perdagangan berorientasi energi ganda mengintegrasikan keunggulan dari berbagai indikator, dapat secara otomatis menyesuaikan stop loss, menilai sinyal reversal, mengidentifikasi arah tren. Ini memiliki kemampuan kontrol risiko yang kuat, mudah untuk memahami penggunaan, dan lain-lain. Namun, ada juga risiko seperti kebocoran, sinyal tidak akurat.

Kode Sumber Strategi
/*backtest
start: 2023-02-12 00:00:00
end: 2024-02-18 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")