
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 giao chéo hai đường cong. Chiến lược này tạo ra tín hiệu mua khi vượt qua SMA dài trên SMA ngắn hạn và tín hiệu bán khi vượt qua SMA dài dưới SMA ngắn hạn bằng cách tính toán trung bình di chuyển đơn giản của hai chu kỳ khác nhau (SMA).
Nguyên tắc cốt lõi của chiến lược này là sử dụng mối quan hệ chéo giữa các đường trung bình di chuyển trong các chu kỳ khác nhau để nắm bắt sự thay đổi trong xu hướng giá. Đường trung bình di chuyển là một chỉ số kỹ thuật thường được sử dụng, có thể loại bỏ biến động ngắn hạn, phản ánh xu hướng tổng thể của giá bằng cách trung bình giá trong một khoảng thời gian qua.
Chiến lược giao dịch chéo đường hai đường SMA là một chiến lược giao dịch định lượng đơn giản, dễ hiểu và linh hoạt. Bằng cách sử dụng các mối quan hệ chéo của các đường trung bình di chuyển theo chu kỳ khác nhau, chiến lược có thể nắm bắt hiệu quả các thay đổi trong xu hướng giá, cung cấp tín hiệu mua và bán cho thương nhân. 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à có thể tạo ra hiệu ứng giao dịch thường xuyên và trì trệ khi thị trường biến động lớn. Để tối ưu hóa chiến lược hơn nữa, bạn có thể xem xét việc đưa ra các chỉ số kỹ thuật khác, lựa chọn tham số tối ưu hóa, tăng điều kiện lướt qua, điều chỉnh tham số động và thêm các biện pháp quản lý rủi ro.
/*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")