EMA (Exponential Moving Average) là một tín hiệu giao dịch phổ biến. Chiến lược này sử dụng sự chéo chéo giữa EMA nhanh và EMA chậm để tạo ra tín hiệu giao dịch. Cụ thể, khi EMA nhanh vượt qua EMA chậm, một vị trí dài được thực hiện; khi EMA nhanh vượt qua dưới EMA chậm, một vị trí ngắn được thực hiện.
Chiến lược này sử dụng đường EMA 20 ngày như đường EMA nhanh, đường EMA 50 ngày như đường EMA trung bình và đường EMA 200 ngày như đường EMA chậm. Khi cả đường EMA 20 ngày và đường EMA 50 ngày vượt qua đường EMA 200 ngày, một vị trí dài được thực hiện; khi cả hai đường vượt qua dưới, một vị trí ngắn được thực hiện. Điều này giúp lọc một số tín hiệu sai.
Chiến lược chéo trung bình động dễ hiểu và là một trong những chiến lược giao dịch định lượng cơ bản. Việc thực hiện này phục vụ tốt như một ví dụ giới thiệu. Nhưng trong giao dịch trực tiếp, các thông số sẽ cần tối ưu hóa và các chỉ số kỹ thuật tiên tiến hơn nên được thêm vào để lọc tín hiệu và cải thiện hiệu suất.
/*backtest start: 2023-01-05 00:00:00 end: 2024-01-11 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © rt-maax //@version=5 strategy(title = "rt maax EMA cross strategy", shorttitle = "rt maax ema ", overlay = true, precision = 8, max_bars_back = 200, pyramiding = 0, initial_capital = 100000, currency = currency.USD, default_qty_type = strategy.cash, default_qty_value = 100000, commission_type = "percent", commission_value = 0.27) fastema = ta.ema (close , 50) fema=ta.ema(close,20) slowema= ta.ema(close,200) price = close // === INPUT BACKTEST RANGE === fromMonth = input.int(defval = 1, title = "From Month", minval = 1, maxval = 12) fromDay = input.int(defval = 1, title = "From Day", minval = 1, maxval = 31) fromYear = input.int(defval = 2021, title = "From Year", minval = 1970) thruMonth = input.int(defval = 10, title = "Thru Month", minval = 1, maxval = 12) thruDay = input.int(defval = 25, title = "Thru Day", minval = 1, maxval = 31) thruYear = input.int(defval = 2112, title = "Thru Year", minval = 1970) // === INPUT SHOW PLOT === showDate = input(defval = true, title = "Show Date Range") // === FUNCTION EXAMPLE === longCondition1= ta.crossover (fema , fastema) longcondition2= fema> slowema longcondition3=fastema>slowema if (longCondition1 and longcondition2 and longcondition3 ) stoploss=low*0.97 takeprofit=high*1.12 strategy.entry("Long Entry", strategy.long) strategy.exit ("exit","long",stop=stoploss,limit=takeprofit) shortCondition1 = ta.crossunder (fema , fastema ) shortcondition2= fastema< slowema shortcondition3= fema< slowema if (shortCondition1 and shortcondition2 and shortcondition3 ) stoploss=low*0.97 takeprofit=high*1.5 strategy.entry("Short Entry", strategy.short) strategy.exit("exit","short",stop=stoploss,limit=takeprofit)