Chiến lược này là một chiến lược giao dịch định lượng dựa trên nguyên tắc chéo trung bình động kép. Chiến lược tạo ra tín hiệu mua khi SMA ngắn hạn vượt qua trên SMA dài hạn, và tạo ra tín hiệu bán khi SMA ngắn hạn vượt qua dưới SMA dài hạn. Mã chiến lược cũng giới thiệu cài đặt cho phạm vi ngày và khung thời gian, cho phép kiểm tra và tối ưu hóa chiến lược linh hoạt.
Nguyên tắc cốt lõi của chiến lược này là nắm bắt những thay đổi trong xu hướng giá bằng cách sử dụng mối quan hệ chéo giữa các đường trung bình động của các giai đoạn khác nhau. Đường trung bình động là một chỉ số kỹ thuật thường được sử dụng lọc ra các biến động ngắn hạn và phản ánh xu hướng giá tổng thể bằng cách tính trung bình giá trong một khoảng thời gian qua. Khi đường trung bình động ngắn hạn vượt qua đường trung bình động dài hạn, nó cho thấy giá có thể bắt đầu xu hướng tăng, tạo ra tín hiệu mua; ngược lại, khi đường trung bình động ngắn hạn vượt qua đường trung bình động dài hạn, nó cho thấy giá có thể bắt đầu xu hướng giảm, tạo ra tín hiệu bán.
Chiến lược giao dịch qua chéo SMA là một chiến lược giao dịch định lượng đơn giản, dễ hiểu và có khả năng thích nghi cao. Bằng cách sử dụng mối quan hệ chéo giữa các đường trung bình động với các giai đoạn khác nhau, chiến lược có thể nắm bắt hiệu quả những thay đổi trong xu hướng giá và cung cấp tín hiệu mua và bán cho các nhà giao dịch. Tuy nhiên, hiệu suất của chiến lược có thể nhạy cảm với lựa chọn tham số, và nó có thể tạo ra các hiệu ứng giao dịch và chậm trễ thường xuyên khi thị trường biến động cao. Để tối ưu hóa thêm chiến lược, các biện pháp như giới thiệu các chỉ số kỹ thuật khác, tối ưu hóa lựa chọn tham số, thêm điều kiện lọc, điều chỉnh động động các tham số và kết hợp quản lý rủi ro có thể được xem xét. Nhìn chung, chiến lược này có thể phục vụ như một trong những chiến lược cơ bản cho giao dịch định lượng, nhưng nó cần được tối ưu hóa và cải thiện phù hợp theo tình huống thực tế cụ thể trong ứng dụng.
/*backtest start: 2023-06-01 00:00:00 end: 2024-06-06 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("SMA Crossover Strategy with Date Range and Timeframe", overlay=true, default_qty_type=strategy.fixed, default_qty_value=1, initial_capital=1000, currency=currency.USD, pyramiding=0, commission_type=strategy.commission.percent, commission_value=0) // Define the lengths for the short and long SMAs shortSMA_length = input.int(50, title="Short SMA Length", minval=1) longSMA_length = input.int(200, title="Long SMA Length", minval=1) // Define the start and end dates for the backtest startDate = input(timestamp("2024-06-01 00:00"), title="Start Date") endDate = input(timestamp("2024-06-05 00:00"), title="End Date") // Define the timeframe for the SMAs smaTimeframe = input.timeframe("D", title="SMA Timeframe") // Request the short and long SMAs from the selected timeframe dailyShortSMA = request.security(syminfo.tickerid, smaTimeframe, ta.sma(close, shortSMA_length)) dailyLongSMA = request.security(syminfo.tickerid, smaTimeframe, ta.sma(close, longSMA_length)) // Plot the SMAs on the chart plot(dailyShortSMA, color=color.blue, title="Short SMA") plot(dailyLongSMA, color=color.red, title="Long SMA") // Define the crossover conditions based on the selected timeframe SMAs buyCondition = ta.crossover(dailyShortSMA, dailyLongSMA) sellCondition = ta.crossunder(dailyShortSMA, dailyLongSMA) // Generate buy and sell signals only if the current time is within the date range if (buyCondition) strategy.entry("Buy", strategy.long) if (sellCondition) strategy.close("Buy") // Optional: Add visual buy/sell markers on the chart plotshape(series=buyCondition and (time >= startDate and time <= endDate), title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY") plotshape(series=sellCondition and (time >= startDate and time <= endDate), title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")