
Chiến lược này theo dõi xu hướng giá cổ phiếu bằng cách tính toán đường trung bình, thiết lập vị trí đầu hoặc đầu trống khi giá vượt qua đường trung bình, thuộc loại chiến lược theo dõi xu hướng.
Chiến lược này bắt đầu bằng cách tính trung bình điểm cao 20 ngày làm đường dẫn lên, trung bình điểm thấp 20 ngày làm đường dẫn xuống và tính đường trung bình. Đường trung bình đại diện cho xu hướng trung bình gần đây của giá. Xây dựng vị trí đa đầu khi giá vượt qua đường trung bình trên đường; Xây dựng vị trí trống khi giá vượt qua đường trung bình dưới đường. Theo dõi xu hướng giá cho đến khi giá trở lại trở lại đường trung bình giữa đường.
Chiến lược này nói chung là đơn giản, trực tiếp, thông qua các kênh giá cơ bản để đánh giá xu hướng giá cổ phiếu, thuộc loại chiến lược theo dõi xu hướng. Ưu điểm là dễ vận hành, tận dụng tối đa các cơ hội đầu tư do xu hướng giá mang lại, tránh bị khóa vốn. Ưu điểm là cài đặt tham số không đúng có thể ảnh hưởng đến hiệu quả, và có một số rủi ro của thử nghiệm điều chỉnh. Bằng cách tối ưu hóa hợp lý, có thể nâng cao sự ổn định của chiến lược, tăng cường hiệu suất cổ phiếu thực.
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
//future strategy
//strategy(title = "stub", default_qty_type = strategy.fixed, default_qty_value = 1, overlay = true, commission_type=strategy.commission.cash_per_contract,commission_value=2)
//stock strategy
strategy(title = "dc", default_qty_type = strategy.percent_of_equity, default_qty_value = 20, overlay = true, commission_type=strategy.commission.cash_per_contract,commission_value=.005)
//forex strategy
//strategy(title = "stub", default_qty_type = strategy.percent_of_equity, default_qty_value = 20, overlay = true)
//crypto strategy
//strategy(title = "stub", default_qty_type = strategy.percent_of_equity, default_qty_value = 20, overlay = true, commission_type=strategy.commission.percent,commission_value=.25,default_qty_value=20)
testStartYear = input(2000, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)
testEndYear = input(2019, "Backtest Start Year")
testEndMonth = input(3)
testEndDay = input(31, "Backtest Start Day")
testPeriodEnd = timestamp(testStartYear,testStartMonth,testStartDay,0,0)
testPeriod() =>
true
//time >= testPeriodStart ? true : false
dcPeriod = 20
dcUpper = highest(close, dcPeriod)[1]
dcLower = lowest(close, dcPeriod)[1]
dcAverage = (dcUpper + dcLower) / 2
plot(dcLower, style=line, linewidth=3, color=red, offset=1)
plot(dcUpper, style=line, linewidth=3, color=aqua, offset=1)
plot(dcAverage, color=black, style=line, linewidth=3, title="Mid-Line Average")
strategy.entry("simpleBuy", strategy.long, when=close > dcAverage)
strategy.close("simpleBuy",when=close < dcLower)
strategy.entry("simpleSell", strategy.short,when=close < dcAverage)
strategy.close("simpleSell",when=close > dcAverage)