
Moving Average Crossover là một loại tín hiệu giao dịch phổ biến. Chiến lược này sử dụng giao dịch giữa các đường trung bình di chuyển nhanh và đường trung bình di chuyển chậm. Cụ thể, khi đường trung bình di chuyển nhanh đi qua đường trung bình di chuyển chậm từ phía dưới, hãy làm nhiều hơn; khi đường trung bình di chuyển nhanh đi qua đường trung bình di chuyển chậm từ phía trên xuống, hãy làm trống.
Chiến lược này sử dụng 20 ngày EMA (Exponential Moving Average) làm trung bình di chuyển nhanh, 50 ngày EMA làm trung bình di chuyển nhanh, 200 ngày EMA làm trung bình di chuyển chậm. Làm nhiều khi 20 ngày EMA và 50 ngày EMA cùng đi qua 200 ngày EMA; làm trống khi 20 ngày EMA và 50 ngày EMA cùng đi qua 200 ngày EMA.
Khái niệm của chiến lược chéo trung bình di chuyển đơn giản, dễ nắm bắt và là một trong những chiến lược cơ bản của giao dịch định lượng. Chiến lược này có giá trị tham khảo tốt như là một bài học đầu tiên. Tuy nhiên, trong chiến tranh thực tế, vẫn cần tối ưu hóa tham số cho giống và chu kỳ, và được hỗ trợ bởi các chỉ số kỹ thuật phức tạp hơn để lọc tín hiệu, do đó cải thiện hiệu quả chiến đấu thực tế của chiến lược.
/*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)