
Chiến lược chéo đường trung bình là một chiến lược giao dịch dựa trên đường trung bình di chuyển. Nó sử dụng chéo đường trung bình di chuyển nhanh và đường trung bình di chuyển chậm làm tín hiệu mua và bán.
Chính sách sử dụng hàm sma để tính toán trung bình di chuyển đơn giản cho các chu kỳ được chỉ định, như đường trung bình nhanh và đường trung bình chậm. Chu kỳ trung bình nhanh mặc định của chính sách là 18 ngày, có thể được điều chỉnh thông qua các tham số.
Khi đường trung bình nhanh phá vỡ đường trung bình chậm từ phía dưới, sử dụng hàm crossunder để phát hiện tín hiệu giao chéo, tạo ra tín hiệu mua. Khi đường trung bình nhanh giảm xuống từ phía trên, sử dụng hàm crossover để phát hiện tín hiệu giao chéo, tạo ra 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 track và tín hiệu exit. Đánh giá đầu vào đa đầu được kích hoạt khi đường trung bình nhanh từ phía dưới phá vỡ đường trung bình chậm; Đánh giá đầu vào trống được kích hoạt khi đường trung bình nhanh từ phía trên phá vỡ đường trung bình chậm.
Chiến lược chéo đồng tuyến là một chiến lược theo dõi xu hướng cổ điển và đơn giản hơn. Nó chủ yếu sử dụng chéo đồng tuyến làm tín hiệu giao dịch, nguyên tắc đơn giản, dễ hiểu, có thể điều chỉnh thông qua tham số để thích ứng với thị trường. Nhưng cũng có một số nhược điểm, chẳng hạn như dễ bị ảnh hưởng bởi biến động và chuyển hướng xu hướng, tín hiệu thường xuyê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)