Strategi ini menilai trend pasaran dengan mengira persilangan garis rata-rata EMA dari dua tempoh yang berbeza, dan dengan itu menghasilkan isyarat perdagangan. Apabila EMA jangka pendek melintasi EMA jangka panjang, strategi ini menganggap pasaran memasuki trend naik, strategi ini akan membuka lebih banyak kedudukan; Apabila EMA jangka pendek melintasi EMA jangka panjang, strategi ini menganggap pasaran memasuki trend menurun, strategi ini akan keluar dari kedudukan rata.
Strategi ini digunakan terutamanya teori garisan mati garisan emas EMA ganda. Garis rata EMA ganda dibahagikan kepada EMA panjang dan EMA pendek. Parameter EMA pendek ditetapkan untuk 10 hari dan EMA panjang ditetapkan untuk 21 hari.
Apabila EMA pendek melintasi EMA panjang, ia menghasilkan isyarat beli; apabila EMA pendek melintasi EMA panjang, ia menghasilkan isyarat jual. Strategi ini juga menetapkan margin pertumbuhan, dan hanya membuka lebih banyak kedudukan apabila pertumbuhan melebihi margin, dan melonggarkan kedudukan apabila penurunan melebihi margin.
Khususnya, syarat pembelian adalah EMA jangka pendek lebih tinggi daripada EMA jangka panjang, dan kadar pertumbuhan harga saham melebihi nilai ambang positif yang ditetapkan; syarat kedudukan kosong adalah EMA jangka pendek lebih rendah daripada EMA jangka panjang, dan kadar pertumbuhan harga saham lebih rendah daripada nilai ambang negatif yang ditetapkan.
Strategi ini secara keseluruhan lebih mudah dipercayai, menilai trend harga melalui dua EMA bersilang, dan menetapkan nilai terendah pertumbuhan untuk menghantar isyarat perdagangan. Berbanding dengan persilangan garis purata tunggal, isyarat palsu boleh disaring. Tetapi garis purata EMA sendiri mempunyai masalah keterlambatan, gabungan dengan petunjuk lain atau parameter dinamik dapat meningkatkan lagi keberkesanan 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)