
Strategi ini menilai tren pasar dengan menghitung persilangan garis rata-rata EMA dari dua periode yang berbeda, dan dengan demikian menghasilkan sinyal perdagangan. Ketika EMA jangka pendek berada di atas EMA jangka panjang, strategi ini menganggap pasar masuk ke tren naik, dan strategi ini akan membuka lebih banyak posisi; Ketika EMA jangka pendek berada di bawah EMA jangka panjang, dan menganggap pasar masuk ke tren turun, strategi ini akan keluar dari posisi rata.
Strategi ini terutama menggunakan teori bercabang dua rata-rata EMA. Rata-rata EMA ganda terbagi menjadi EMA panjang dan EMA pendek. Parameter EMA pendek ditetapkan untuk 10 hari dan EMA panjang ditetapkan untuk 21 hari.
Ketika EMA pendek melewati EMA panjang, menghasilkan sinyal beli; Ketika EMA pendek melewati EMA panjang di bawah, menghasilkan sinyal jual. Strategi ini juga menetapkan margin pertumbuhan, hanya membuka posisi lebih banyak jika pertumbuhan melebihi margin, dan melonggarkan posisi jika penurunan melebihi margin.
Secara khusus, kondisi pembelian adalah EMA jangka pendek lebih tinggi dari EMA jangka panjang, dan tingkat pertumbuhan harga saham lebih tinggi dari batas positif yang ditetapkan; kondisi posisi kosong adalah EMA jangka pendek lebih rendah dari EMA jangka panjang, dan tingkat pertumbuhan harga saham lebih rendah dari batas negatif yang ditetapkan.
Strategi ini secara keseluruhan relatif sederhana dan dapat diandalkan, menilai tren harga melalui persilangan dua EMA, dan mengatur penurunan tingkat pertumbuhan untuk mengirimkan sinyal perdagangan. Dibandingkan dengan persilangan rata-rata tunggal, sinyal palsu dapat disaring. Namun, rata-rata EMA sendiri memiliki masalah keterlambatan, dan kombinasi dengan indikator lain atau parameter dinamis dapat meningkatkan efektivitas strategi lebih lanjut.
/*backtest
start: 2022-11-14 00:00:00
end: 2023-11-20 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
strategy(title="ema(ema10-21)", overlay=true, pyramiding = 0, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, initial_capital = 15000, commission_type = strategy.commission.percent, commission_value = 0.2)
useTimeLimit = input(defval = false, title = "Use Start Time Limiter?")
startYear = input(defval = 2016, title = "Start From Year", minval = 0, step = 1)
startMonth = input(defval = 05, title = "Start From Month", minval = 0,step = 1)
startDay = input(defval = 01, title = "Start From Day", minval = 0,step = 1)
startHour = input(defval = 00, title = "Start From Hour", minval = 0,step = 1)
startMinute = input(defval = 00, title = "Start From Minute", minval = 0,step = 1)
startTimeOk() => true
lenght0 = input(10)
lenght1 = input(21)
source = close
EmaShort = ema(ema(source, lenght0), lenght0)
EmaLong = ema(ema(source, lenght1),lenght1)
plot(EmaShort, color=red)
plot(EmaLong, color=purple)
growth = ((EmaShort-EmaLong)*100)/((EmaShort+EmaLong)/2)
thresholdUp = input(defval=0.05, title="Threshold Up", type=float, step=0.01)
thresholdDown = input(defval=-0.165, title="Threshold Down", type=float, step=0.001)
if( startTimeOk() )
buy_condition = EmaShort > EmaLong and growth > thresholdUp
buy_exit_condition = EmaShort < EmaLong and growth < thresholdDown
strategy.entry("buy", strategy.long, comment="buy", when=buy_condition)
strategy.close(id='buy', when=buy_exit_condition)