Strategi ini menghasilkan sinyal perdagangan dengan menghitung persilangan antara dua garis EMA periode yang berbeda untuk menentukan tren pasar. Ini akan membuka posisi panjang ketika EMA periode yang lebih pendek melintasi EMA periode yang lebih lama, menunjukkan tren naik, dan menutup posisi ketika EMA periode yang lebih pendek melintasi di bawah EMA periode yang lebih lama, menunjukkan tren menurun.
Strategi ini terutama menerapkan teori salib emas dan salib kematian dari garis EMA ganda. Garis EMA ganda terdiri dari EMA panjang dan EMA pendek. Parameter EMA pendek ditetapkan menjadi 10 hari dan parameter EMA panjang ditetapkan menjadi 21 hari.
Ketika EMA pendek melintasi EMA panjang, sinyal beli dihasilkan. Ketika EMA pendek melintasi di bawah EMA panjang, sinyal jual dihasilkan. Strategi ini juga menetapkan ambang pertumbuhan, membuka posisi panjang hanya ketika pertumbuhan melebihi ambang positif dan menutup posisi hanya ketika penurunan melebihi ambang negatif.
Secara khusus, kondisi pembelian adalah ketika EMA pendek lebih tinggi dari EMA panjang dan tingkat pertumbuhan saham melebihi ambang positif. Kondisi posisi dekat adalah ketika EMA pendek lebih rendah dari EMA panjang dan tingkat pertumbuhan saham turun di bawah ambang negatif.
Strategi keseluruhan relatif sederhana dan dapat diandalkan, menggunakan crossover EMA ganda untuk menentukan tren harga dan menetapkan ambang batas tingkat pertumbuhan untuk menghasilkan sinyal perdagangan. Dibandingkan dengan crossover garis tunggal, ini dapat menyaring beberapa sinyal palsu. Tetapi garis EMA sendiri memiliki masalah keterlambatan. Menggabungkan indikator lain atau penyesuaian parameter dinamis dapat lebih meningkatkan kinerja strategi.
/*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)