Strategi ini menggunakan purata bergerak pantas dan perlahan untuk mengenal pasti dan mengikuti trend. Ia menghasilkan isyarat beli apabila garis pantas melintasi garis perlahan dan isyarat jual apabila garis pantas melintasi di bawah garis perlahan. Strategi ini sesuai untuk mengesan trend jangka menengah dan panjang dan menapis bunyi pasaran dengan berkesan.
Strategi ini menggunakan dua purata bergerak eksponen (EMA) dengan tempoh yang berbeza sebagai asas untuk keputusan perdagangan. EMA pantas mempunyai tempoh ditetapkan kepada 30 untuk menangkap turun naik harga jangka pendek. EMA perlahan mempunyai tempoh ditetapkan kepada 100 untuk mengukur arah trend jangka menengah hingga panjang.
Apabila EMA cepat melintasi EMA perlahan dari bawah, ia menunjukkan pasaran memasuki trend menaik dan menghasilkan isyarat beli.
Kelebihan strategi ini termasuk:
Terdapat juga beberapa risiko:
Beberapa arah pengoptimuman:
/*backtest start: 2023-01-21 00:00:00 end: 2024-01-21 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 strategy("EMA Strategy v2", shorttitle = "EMA Strategy v2", overlay=true, pyramiding = 3,default_qty_type = strategy.percent_of_equity, default_qty_value = 10) // === Inputs === // short ma maFastSource = input(defval = close, title = "Fast MA Source") maFastLength = input(defval = 30, title = "Fast MA Period", minval = 1) // long ma maSlowSource = input(defval = close, title = "Slow MA Source") maSlowLength = input(defval = 100, title = "Slow MA Period", minval = 1) // invert trade direction tradeInvert = input(defval = false, title = "Invert Trade Direction?") // risk management useStop = input(defval = true, title = "Use Initial Stop Loss?") slPoints = input(defval = 0, title = "Initial Stop Loss Points", minval = 1) useTS = input(defval = true, title = "Use Trailing Stop?") tslPoints = input(defval = 0, title = "Trail Points", minval = 1) useTSO = input(defval = false, title = "Use Offset For Trailing Stop?") tslOffset = input(defval = 0, title = "Trail Offset Points", minval = 1) // === Vars and Series === fastMA = ema(maFastSource, maFastLength) slowMA = ema(maSlowSource, maSlowLength) plot(fastMA, color=blue) plot(slowMA, color=purple) goLong() => crossover(fastMA, slowMA) killLong() => crossunder(fastMA, slowMA) strategy.entry("Buy", strategy.long, when = goLong()) strategy.close("Buy", when = killLong()) // Shorting if using goShort() => crossunder (fastMA, slowMA) killShort() => crossover(fastMA, slowMA) //strategy.entry("Sell", strategy.short, when = goShort()) //strategy.close("Sell", when = killShort()) if (useStop) strategy.exit("XLS", from_entry ="Buy", stop = strategy.position_avg_price / 1.08 ) strategy.exit("XSS", from_entry ="Sell", stop = strategy.position_avg_price * 1.58)