Strategi Perdagangan Dinamis Periode EMA Ganda


Tanggal Pembuatan: 2023-12-12 12:18:41 Akhirnya memodifikasi: 2023-12-12 12:18:41
menyalin: 1 Jumlah klik: 1090
1
fokus pada
1621
Pengikut

Strategi Perdagangan Dinamis Periode EMA Ganda

Ringkasan

Gagasan inti dari strategi ini adalah untuk menghasilkan sinyal perdagangan berdasarkan perpotongan beberapa indeks moving average (EMA). Apabila EMA jangka pendek memakai EMA jangka panjang, lakukan lebih banyak; Jika EMA jangka pendek memakai EMA jangka panjang, tutup. Strategi ini memungkinkan untuk mengkonfigurasi beberapa siklus EMA, setiap EMA dapat diaktifkan secara independen, strategi ini akan melakukan perdagangan silang pada semua EMA yang diaktifkan.

Prinsip Strategi

Strategi ini mengatur 8 siklus EMA, yaitu 8th line, 13th line, 21st line, 34th line, 55th line, 89th line, 144th line, dan 233th line. EMA ini dikonfigurasi untuk diaktifkan atau dinonaktifkan secara independen.

Ketika EMA yang lebih pendek dari bawah melewati EMA yang lebih panjang, menghasilkan sinyal beli; ketika EMA yang lebih pendek dari atas melewati EMA yang lebih panjang dari bawah, menghasilkan sinyal jual. Jika kedua EMA diaktifkan, shorterEMA > longerEMA adalah sinyal ganda, shorterEMA < longerEMA adalah sinyal kosong.

Sebagai contoh, jika Anda mengaktifkan EMA 55 hari dan EMA 89 hari, Anda akan melakukan lebih banyak ketika EMA 55 hari di atas EMA 89 hari; ketika EMA 55 hari di bawah EMA 89 hari, Anda akan melakukan negosiasi. Ini memungkinkan strategi ini untuk secara dinamis menyesuaikan kombinasi EMA yang digunakan, beralih dari siklus yang lebih panjang ke siklus yang lebih pendek, atau sebaliknya.

Jumlah posisi yang dimiliki ditetapkan sebagai ekuitas akun dibagi dengan close lalu dibagi dengan jumlah grup EMA yang diaktifkan. Hal ini memastikan bahwa ukuran posisi pada setiap EMA adalah sama.

Analisis Keunggulan

  • Fleksibilitas siklus strategi dapat disesuaikan dengan konfigurasi EMA yang berbeda
  • Setiap EMA dapat dikonfigurasi secara independen, memungkinkan kustomisasi yang tinggi
  • Posisi yang dialokasikan secara proporsional pada setiap EMA, menguntungkan manajemen risiko
  • Menggunakan beberapa EMA, dapat beralih ke EMA yang lebih sesuai pada tahap pasar yang berbeda
  • Strategi yang sederhana, jelas, mudah dipahami dan dimodifikasi

Analisis risiko

  • EMA tidak dapat menentukan struktur pasar sebagai satu indikator, dan dapat mengirimkan sinyal yang salah
  • EMA dalam pasar yang sangat bergoyang dapat saling melintasi, meningkatkan frekuensi transaksi dan biaya slippage
  • Perlu mengoptimalkan parameter EMA untuk menyesuaikan dengan pasar yang berbeda
  • Mungkin perlu dikombinasikan dengan indikator lain untuk mengkonfirmasi sinyal perdagangan

Anda dapat mempertimbangkan untuk menggunakan EMA dalam kombinasi dengan indikator lain, seperti indikator channel atau indikator shock untuk memfilter sinyal, atau menggabungkan trend dan reversal. Selain itu, pengoptimalan parameter EMA sangat penting dan perlu disesuaikan dengan pasar yang berbeda.

Arah optimasi

Strategi ini dapat dioptimalkan dalam beberapa hal:

  1. Optimalisasi parameter EMA. Kombinasi parameter EMA yang optimal dapat ditemukan dengan pemindaian parameter dan metode Walk Forward Analysis.

  2. Anda dapat menambahkan kondisi penyaringan tambahan untuk menghindari sinyal yang salah, seperti penyaringan volume transaksi, penyaringan tingkat fluktuasi, dan lain-lain.

  3. Dalam kombinasi dengan indikator lain, EMA dapat dikombinasikan dengan MACD, KDJ, Brinks, dan lain-lain untuk memanfaatkan komplementeritasnya.

  4. Posisi yang disesuaikan secara dinamis. Posisi pada setiap EMA dapat disesuaikan secara dinamis sesuai dengan volatilitas pasar atau kekuatan tren.

  5. Optimalkan rasio keuntungan-keuntungan. Optimalkan level stop loss dan stop loss untuk menemukan rasio risiko-keuntungan terbaik.

Meringkaskan

Strategi ini secara keseluruhan sangat sederhana dan langsung, menangkap tren jangka pendek dan jangka menengah melalui EMA silang. Kelebihannya adalah kemampuan dan fleksibilitas yang tinggi, yang memungkinkan trader memilih kombinasi EMA yang paling sesuai untuk dirinya sendiri. Namun, EMA sebagai indikator tunggal mudah menghasilkan sinyal yang salah, yang merupakan risiko terbesar dari strategi ini.

Kode Sumber Strategi
/*backtest
start: 2023-11-11 00:00:00
end: 2023-12-11 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("EMA Fan", shorttitle = "EMA Fan", overlay=true)

// Revision:        1
// Author:          @ToS_MavericK

buyprice = 0.0
buyprice := buyprice[1]

// === INPUT SMA ===
EMA1  = input(8)
EMA2  = input(13)
EMA3  = input(21)
EMA4  = input(34)
EMA5  = input(55)
EMA6  = input(89)
EMA7  = input(144)
EMA8  = input(233)

EnableEMA1 = input(true)
EnableEMA2 = input(true)
EnableEMA3 = input(true)
EnableEMA4 = input(true)
EnableEMA5 = input(true)
EnableEMA6 = input(true)
EnableEMA7 = input(true)
EnableEMA8 = input(true)

//Profit  = input(defval = 5, type = integer, title = "Profit", minval = 1, step = 1)
//StopLoss    = input(defval = 15, type = integer, title = "StopLoss", minval = 1, step = 1)

// === INPUT BACKTEST RANGE ===
FromMonth   = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromYear    = input(defval = 2018, title = "From Year", minval = 2012)
ToMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToDay   = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear  = input(defval = 2020, title = "To Year", minval = 2012)


// === FUNCTION EXAMPLE ===
start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  // backtest start window
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)        // backtest finish window
window()  => true // create function "within window of time"

// === SERIES SETUP ===
vEMA1 = ema(close, EMA1)
vEMA2 = ema(close, EMA2)
vEMA3 = ema(close, EMA3)
vEMA4 = ema(close, EMA4)
vEMA5 = ema(close, EMA5)
vEMA6 = ema(close, EMA6)
vEMA7 = ema(close, EMA7)
vEMA8 = ema(close, EMA8)

count = -1
if (EnableEMA1 == true)
    count := count + 1
if (EnableEMA2 == true)
    count := count + 1
if (EnableEMA3 == true)
    count := count + 1
if (EnableEMA4 == true)
    count := count + 1
if (EnableEMA5 == true)
    count := count + 1
if (EnableEMA6 == true)
    count := count + 1
if (EnableEMA7 == true)
    count := count + 1
if (EnableEMA8 == true)
    count := count + 1

// set position size
Amount = 1 / (close * count)

// === EXECUTION ===
strategy.entry("EMA1", strategy.long, qty = Amount, when = window() and crossover(vEMA1,vEMA2) and EnableEMA1 and EnableEMA2)
strategy.close("EMA1", time > finish or crossunder(vEMA1,vEMA2))

strategy.entry("EMA2", strategy.long, qty = Amount, when = window() and crossover(vEMA2,vEMA3) and EnableEMA2 and EnableEMA3)
strategy.close("EMA2", time > finish or crossunder(vEMA2,vEMA3))

strategy.entry("EMA3", strategy.long, qty = Amount, when = window() and crossover(vEMA3,vEMA4) and EnableEMA3 and EnableEMA4)
strategy.close("EMA3", time > finish or crossunder(vEMA3,vEMA4))

strategy.entry("EMA4", strategy.long, qty = Amount, when = window() and crossover(vEMA4,vEMA5) and EnableEMA4 and EnableEMA5)
strategy.close("EMA4", time > finish or crossunder(vEMA4,vEMA5))

strategy.entry("EMA5", strategy.long, qty = Amount, when = window() and crossover(vEMA5,vEMA6) and EnableEMA5 and EnableEMA6)
strategy.close("EMA5", time > finish or crossunder(vEMA5,vEMA6))

strategy.entry("EMA6", strategy.long, qty = Amount, when = window() and crossover(vEMA6,vEMA7) and EnableEMA6 and EnableEMA7)
strategy.close("EMA6", time > finish or crossunder(vEMA6,vEMA7))

strategy.entry("EMA7", strategy.long, qty = Amount, when = window() and crossover(vEMA7,vEMA8) and EnableEMA7 and EnableEMA8)
strategy.close("EMA7", time > finish or crossunder(vEMA7,vEMA8))

plot(vEMA1, title = 'EMA1', color = red, linewidth = 2, style = line)  // plot FastMA
plot(vEMA2, title = 'EMA2', color = orange, linewidth = 2, style = line)    // plot SlowMA
plot(vEMA3, title = 'EMA3', color = yellow, linewidth = 2, style = line)    // plot SlowMA
plot(vEMA4, title = 'EMA4', color = green, linewidth = 2, style = line)    // plot SlowMA
plot(vEMA5, title = 'EMA5', color = teal, linewidth = 2, style = line)    // plot SlowMA
plot(vEMA6, title = 'EMA6', color = blue, linewidth = 2, style = line)    // plot SlowMA
plot(vEMA7, title = 'EMA7', color = maroon, linewidth = 2, style = line)    // plot SlowMA
plot(vEMA8, title = 'EMA8', color = white, linewidth = 2, style = line)    // plot SlowMA

//plot(long_stop, title = 'High-ATR', color = red, linewidth = 2, style = line)    // plot SlowMA
//plot(short_stop, title = 'Low+ATR', color = green, linewidth = 2, style = line)    // plot SlowMA