
Chiến lược này kết hợp các đường trung bình di chuyển và các chỉ số ngẫu nhiên để thực hiện một hệ thống giao dịch chứng khoán tự động. Nó sử dụng hai đường trung bình di chuyển với độ dài khác nhau và các chỉ số ngẫu nhiên để nắm bắt các tín hiệu của xu hướng và mua quá mức, để thực hiện giao dịch tùy theo hướng xu hướng và tín hiệu của chỉ số của khu vực mua quá mức.
Sử dụng đường nhanh ((đường 5 ngày) và đường chậm ((đường 20 ngày) hai đường trung bình di chuyển. Khi đường nhanh đi qua đường chậm là tín hiệu mua, khi đi xuống là tín hiệu bán. Vai trò của đường trung bình di chuyển là xác định xu hướng và hướng của giá.
Các tham số của chỉ số ngẫu nhiên được đặt thành: chu kỳ đường K 14, chu kỳ trơn đường K 3, chu kỳ trơn đường D 3. đường K dưới 20 là khu vực bán tháo, hơn 80 là khu vực mua quá mức. Chức năng của chỉ số ngẫu nhiên là xác định xem bạn có ở khu vực mua quá mức hay không.
Điều kiện mua: Đường dây nhanh và đường dây chậm <20 (khu vực bán tháo) Điều kiện bán: đường nhanh, đường chậm và đường K> 80 (khu vực mua quá mức)
Mua nhiều hơn khi đáp ứng điều kiện mua; bán ít hơn khi đáp ứng điều kiện bán.
Cài đặt 1% dừng khi mua; 1% dừng khi bán.
Chiến lược này kết hợp xu hướng và chỉ số, có thể nắm bắt hiệu quả xu hướng đường dài trung bình của giá cả, đồng thời sử dụng chỉ số ngẫu nhiên để kiểm soát thời gian mua và bán, tránh hoạt động mua và bán ngẫu nhiên khi không có định hướng rõ ràng. Các tham số chiến lược có thể điều chỉnh rộng rãi và có thể được điều chỉnh cho các môi trường thị trường khác nhau.
Nếu gặp tình huống căng thẳng gây ra bởi tin tức lớn, có thể sẽ gây ra tổn thất lớn hơn. Bạn có thể thiết lập đường dừng lỗ để kiểm soát rủi ro.
Nếu gặp phải thị trường tiếp tục sắp xếp ngang, có thể sẽ dẫn đến tổn thất nhỏ liên tục. Bạn có thể điều chỉnh các tham số chu kỳ của trung bình di chuyển để giảm tổn thất.
Cần lưu ý tránh các thời điểm quan trọng của thị trường chứng khoán, vì giá có thể bị đảo ngược dẫn đến giao dịch sai.
Có thể thử nghiệm các kết hợp tham số khác nhau để tìm ra kết hợp tham số tốt nhất. Ví dụ: thử nghiệm hiệu quả của kết hợp trung bình di chuyển với độ dài khác nhau.
Có thể kết hợp với các công cụ phân tích khác như khối lượng giao dịch, tỷ lệ biến động để đặt các điều kiện lọc và tăng tỷ lệ lợi nhuận chiến lược.
Có thể nghiên cứu cơ chế lựa chọn cổ phiếu, lựa chọn cổ phiếu có hiệu suất cao hoặc chỉ số trọng lượng để giảm rủi ro cho từng cổ phiếu.
Chiến lược này hoạt động suôn sẻ, sau khi thiết lập điều kiện dừng lỗ, kết quả lợi nhuận tổng thể là tốt. Hiệu quả có thể được nâng cao hơn nữa bằng cách điều chỉnh tham số và tối ưu hóa lựa chọn hồ cổ phiếu. Nhìn chung, đây là một chiến lược giao dịch định lượng hoạt động ổn định và dễ thực hiện.
/*backtest
start: 2024-01-25 00:00:00
end: 2024-02-01 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("Moving Average and Stochastic Strategy 80% ", overlay=true)
// Moving Average Settings
maShortLength = input(5, title="Short MA Length")
maLongLength = input(20, title="Long MA Length")
// Stochastic Settings
stochLength = input(14, title="Stochastic Length")
smoothK = input(3, title="Stochastic %K")
smoothD = input(3, title="Stochastic %D")
stochOverbought = 80
stochOversold = 20
// Profit Target Settings
profitTarget = input(1, title="Profit Target (%)") // 1% profit target
// Calculate Moving Averages
maShort = sma(close, maShortLength)
maLong = sma(close, maLongLength)
// Calculate Stochastic
k = sma(stoch(close, high, low, stochLength), smoothK)
d = sma(k, smoothD)
// Entry Conditions
longConditionMA = crossover(maShort, maLong) and k < stochOversold
shortConditionMA = crossunder(maShort, maLong) and k > stochOverbought
// Opposite Conditions
oppositeLongConditionMA = crossunder(maShort, maLong) and k < stochOversold
oppositeShortConditionMA = crossover(maShort, maLong) and k > stochOverbought
// Strategy Logic
if (longConditionMA)
strategy.entry("Buy", strategy.long)
strategy.exit("Exit Buy", "Buy", profit=close * (50 + profitTarget / 100))
if (shortConditionMA)
strategy.entry("Sell", strategy.short)
strategy.exit("Exit Sell", "Sell", profit=close * (20 - profitTarget / 100))
// Opposite Strategy Logic
if (oppositeLongConditionMA)
strategy.entry("Sell", strategy.short)
strategy.exit("Exit Sell", "Sell", profit=close * (50 - profitTarget / 100))
if (oppositeShortConditionMA)
strategy.entry("Buy", strategy.long)
strategy.exit("Exit Buy", "Buy", profit=close * (20 + profitTarget / 100))
// Plot Moving Averages
plot(maShort, color=color.blue, title="Short MA")
plot(maLong, color=color.red, title="Long MA")
// Plot Stochastic
hline(stochOverbought, "Overbought", color=color.red)
hline(stochOversold, "Oversold", color=color.green)
plot(k, color=color.black, title="Stochastic %K")