Strategi ini menghasilkan isyarat perdagangan dengan mengira persilangan antara dua garis EMA tempoh yang berbeza untuk menentukan trend pasaran. Ia akan membuka kedudukan panjang apabila EMA tempoh yang lebih pendek melintasi EMA tempoh yang lebih lama, menunjukkan aliran menaik, dan ia akan menutup kedudukan apabila EMA tempoh yang lebih pendek melintasi di bawah EMA tempoh yang lebih lama, menunjukkan aliran menurun.
Strategi ini terutamanya menggunakan teori salib emas dan salib kematian garis EMA berganda. Garis EMA berganda terdiri daripada EMA panjang dan EMA pendek. Parameter EMA pendek ditetapkan kepada 10 hari dan parameter EMA panjang ditetapkan kepada 21 hari.
Apabila EMA pendek melintasi EMA panjang, isyarat beli dihasilkan. Apabila EMA pendek melintasi di bawah EMA panjang, isyarat jual dihasilkan. Strategi ini juga menetapkan ambang kadar pertumbuhan, membuka kedudukan panjang hanya apabila pertumbuhan melebihi ambang positif dan menutup kedudukan hanya apabila penurunan melebihi ambang negatif.
Khususnya, syarat beli adalah apabila EMA pendek lebih tinggi daripada EMA panjang dan kadar pertumbuhan stok melebihi ambang positif.
Strategi keseluruhan adalah agak mudah dan boleh dipercayai, menggunakan silang EMA berganda untuk menentukan trend harga dan menetapkan ambang kadar pertumbuhan untuk menghasilkan isyarat perdagangan. Berbanding dengan silang garis tunggal, ia boleh menapis beberapa isyarat palsu. Tetapi garis EMA sendiri mempunyai masalah yang tertinggal. Menggabungkan penunjuk lain atau pelarasan parameter dinamik dapat meningkatkan prestasi 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)