Chiến lược chéo trung bình động là một chiến lược giao dịch dựa trên trung bình động. Nó sử dụng chéo của một trung bình di chuyển nhanh và một trung bình di chuyển chậm như tín hiệu mua và bán. Khi MA nhanh vượt qua trên MA chậm từ dưới, một tín hiệu mua được tạo ra. Khi MA nhanh vượt qua dưới MA chậm từ trên, một tín hiệu bán được tạo ra.
Chiến lược này sử dụng hàm sma để tính trung bình động đơn giản của một khoảng thời gian được chỉ định như MA nhanh và MA chậm.
Khi MA nhanh vượt qua trên MA chậm từ dưới, hàm crossunder phát hiện tín hiệu chéo và tạo tín hiệu mua. Khi MA nhanh vượt qua dưới MA chậm từ trên, hàm chéo phát hiện tín hiệu chéo và tạo tín hiệu bán.
Chiến lược này thực hiện giao dịch tự động thông qua tín hiệu theo dõi và tín hiệu thoát. Mở đầu dài được kích hoạt khi MA nhanh vượt qua trên MA chậm, và mở đầu ngắn được kích hoạt khi MA nhanh vượt qua dưới MA chậm.
Chiến lược giao thoa MA là một chiến lược theo xu hướng cổ điển và đơn giản. Nó chủ yếu sử dụng giao thoa MA như các tín hiệu giao dịch với logic và thực hiện dễ dàng. Nó có thể được điều chỉnh thông qua điều chỉnh tham số. Nhưng nó cũng có những nhược điểm như khả năng nhạy cảm với dao động và đảo ngược xu hướng, tần số tín hiệu cao v.v. Những điều này có thể được cải thiện thông qua các bộ lọc, tham số động, dừng lỗ v.v. Chiến lược có không gian tối ưu hóa rộng rãi và hướng, và là một trong những chiến lược giao dịch định lượng cơ bản.
/*backtest start: 2023-11-15 00:00:00 end: 2023-11-17 04:00:00 period: 30m basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy(title = "MA Close Strategy", shorttitle = "MA Close",calc_on_order_fills=true,calc_on_every_tick =true, initial_capital=21000,commission_value=.25,overlay = true,default_qty_type = strategy.percent_of_equity, default_qty_value = 100) MASource = input(defval = open, title = "MA Source") MaLength = input(defval = 18, title = "MA Period", minval = 1) StartYear = input(2018, "Backtest Start Year") StartMonth = input(1, "Backtest Start Month") StartDay = input(1, "Backtest Start Day") UseStopLoss = input(true,"UseStopLoss") stopLoss = input(50, title = "Stop loss percentage(0.1%)") window() => time >= timestamp(StartYear, StartMonth, StartDay,00,00) ? true : false MA = sma(MASource,MaLength) plot(MA, title = "Fast MA", color = green, linewidth = 2, style = line, transp = 50) long = crossunder(MA, close) short = crossover(MA, close) if (long) strategy.entry("LongId", strategy.long, when = long) strategy.exit("ExitLong", from_entry = "LongId", when = short) if (short) strategy.entry("ShortId", strategy.short, when = short) strategy.exit("ExitShort", from_entry = "ShortId", when = long) if (UseStopLoss) strategy.exit("StopLoss", "LongId", loss = close * stopLoss / 1000 / syminfo.mintick) strategy.exit("StopLoss", "ShortId", loss = close * stopLoss / 1000 / syminfo.mintick)