
Chiến lược này thực hiện mô hình nắm giữ đường dài bằng cách sử dụng hình dạng chéo đường trung bình trong các chu kỳ khác nhau và các chỉ số RSI để đánh giá thời gian mua và bán thị trường. Chiến lược có thể được tối ưu hóa theo thời gian thực bằng cách điều chỉnh các tham số, áp dụng cho đầu tư đường dài trong chỉ số lớn.
Chiến lược này chủ yếu sử dụng đường EMA trung bình để xác định thời gian mua và bán. Đồng thời kết hợp với chỉ số RSI để xác định xem có quá mua hay quá bán hay không.
Cụ thể, logic phán quyết của tín hiệu mua là: mua khi giá vượt qua EMA20 dưới và vượt qua EMA50 để hình thành ngã ba, để có thể đánh giá hiệu quả hơn về điểm biến động xu hướng. Ngoài ra, bạn cũng phải đáp ứng các điều kiện giá đóng cửa nhỏ hơn giá mở và thấp hơn giá thấp nhất ngày trước, điều này có thể loại bỏ một số đột phá giả.
Chúng tôi đặt các điều kiện mua trên cho các tham số khác nhau, xây dựng 4 quy tắc mua, tương ứng với chu kỳ trung bình khác nhau và số lượng water_level. Điều này có thể được thực hiện bằng cách thiết lập các vị trí đặt hàng theo lô, để phân bổ số lượng trung bình.
Đối với bán ra, điều kiện phán quyết là: bán khi giá trên vượt qua EMA10 hình thành ngã và chỉ số RSI hiển thị tín hiệu mua quá mức; hoặc bán khi giá dưới vượt qua EMA10 hình thành ngã và RSI hiển thị bán quá mức. Ngoài ra, điều kiện đáp ứng tỷ lệ lợi nhuận nhất định cũng được kiểm tra.
Ưu điểm lớn nhất của chiến lược này là xác định điểm biến đổi của thị trường thông qua hình dạng chéo của đường trung bình, để theo dõi xu hướng. So với hệ thống đường trung bình đơn lẻ, phương pháp chéo hai đường trung bình có thể lọc ra một số tín hiệu sai. Ngoài ra, chiến lược này cũng giới thiệu chỉ số RSI để xác định vùng quá mua quá bán, điều này cũng có thể làm giảm rủi ro giao dịch.
Một lợi thế khác là tạo ra các lô giữ bằng cách điều chỉnh các tham số, cách đặt hàng kim tự tháp này có thể cho phép giá chi phí di chuyển xuống, thu được lợi nhuận tối đa khi xu hướng xuất hiện. Đồng thời, phân tán số lượng cũng làm giảm rủi ro của số lượng đơn lẻ.
Rủi ro chính của chiến lược này là:
Hệ thống đồng tuyến tự nó rất nhạy cảm với sự chậm trễ và không thể phản ứng kịp thời với sự kiện bất ngờ, điều này có thể dẫn đến không thể dừng lỗ kịp thời. Rủi ro này có thể được giảm bằng cách thêm điểm dừng lỗ.
Chính sách này không giới hạn khoảng thời gian mua, nếu cấu hình sai có thể mua quá sớm, do đó bị mắc kẹt trong khoảng thời gian thanh toán. Rủi ro này có thể được giải quyết bằng cách giới hạn khoảng thời gian mua.
Phương pháp xây dựng lô hàng của chiến lược này có thể dẫn đến rủi ro của vị trí quá lớn, không thể chịu được sự phá vỡ đơn phương. Điều này có thể làm giảm phần rủi ro này bằng cách điều chỉnh các tham số nước và thêm cơ chế kiểm soát rủi ro.
Chiến lược này cũng có thể được tối ưu hóa theo các hướng sau:
Thêm chiến lược dừng lỗ, dừng lỗ khi giá giảm xuống một số mức hỗ trợ quan trọng, điều này có thể kiểm soát hiệu quả rủi ro giảm giá.
Thêm mô-đun xác minh trước khi giao dịch để xác định hướng xu hướng lớn và chỉ đặt vị trí khi xu hướng đi lên, điều này có thể tránh rủi ro giao dịch ngược.
Giới hạn khoảng mua, chỉ có thể đặt hàng trong một khoảng thời gian nhất định, tránh mở vị trí quá sớm.
Việc đưa ra các thuật toán học máy kết hợp với nhiều yếu tố để quyết định thời điểm mua hàng có thể giúp tăng tỷ lệ chiến lược chiến thắng.
Bài viết này mô tả chi tiết về một chiến lược định lượng đường dài, sử dụng hình dạng chéo hai đường bằng nhau kết hợp với chỉ số RSI để xác định điểm vào thị trường, và sử dụng phương pháp xây dựng kho hàng loạt để đạt được hiệu quả tối đa. Chiến lược này có thể áp dụng cho hầu hết các chỉ số và cổ phiếu thông qua điều chỉnh tham số, là một chiến lược theo dõi đường dài phổ biến hơn. Đồng thời, phân tích các điểm rủi ro có thể tồn tại trong chiến lược và các chiến lược tối ưu hóa tiếp theo.
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("EMA_zorba1", shorttitle="3 NIFTY RSI EMA", overlay=true)
// Input parameters
qt1 = input.int(1, title="Quantity 1", minval=1)
qt2 = input.int(2, title="Quantity 2", minval=1)
qt3 = input.int(3, title="Quantity 3", minval=1)
qt4 = input.int(4, title="Quantity 4", minval=1)
ema10 = ta.ema(close, 10)
ema20 = ta.ema(close, 20)
ema50 = ta.ema(close, 50)
ema100 = ta.ema(close, 100)
ema200 = ta.ema(close, 200)
// RSI(14) condition
rsi_threshold = 65
rsi_crossed_above_70 = ta.rsi(close, 14) > rsi_threshold
rsi_crossed_above_70_two_days_ago = ta.rsi(close[5], 14) > rsi_threshold or ta.rsi(close[4], 14) > rsi_threshold or ta.rsi(close[3], 14) > rsi_threshold
rsi_crossed_above_70_yesterday = ta.rsi(close[1], 14) > rsi_threshold
// Date range filter
start_date = timestamp(year=2021, month=1, day=1)
end_date = timestamp(year=2024, month=1, day=1)
in_date_range = true
// Profit condition
profit_percentage = input(1, title="Profit Percentage") // Adjust this value as needed
// Pyramiding setting
pyramiding = input.int(1, title="Pyramiding", minval=1, maxval=10)
// Buy conditions
buy_condition_1 = in_date_range and close < ema20 and close > ema50 and close < open and close < low[1]
buy_condition_2 = in_date_range and close < ema50 and close > ema100 and close < open and close < low[1]
buy_condition_3 = in_date_range and close < ema100 and close > ema200 and close < open and close < low[1]
buy_condition_4 = in_date_range and close < ema200 and close < open and close < low[1]
// Exit conditions
profit_condition = strategy.position_avg_price * (1 + profit_percentage / 100) <= close
exit_condition_1 = in_date_range and ((close > ema10 and ema10 > ema20 and ema10 > ema50 and ema10 > ema100 and ema10 > ema200 and close < open) and rsi_crossed_above_70_two_days_ago) and profit_condition and close < low[1] and close < low[2]
exit_condition_2 = in_date_range and ((close < ema10 and close[1] > ema10 and close < close[1] and ema10 > ema20 and ema10 > ema50 and ema10 > ema100 and ema10 > ema200 and close < open) and rsi_crossed_above_70_yesterday) and profit_condition and close < low[1] and close < low[2]
// Strategy logic
strategy.entry("Buy1", strategy.long, qty=qt1 * pyramiding, when=buy_condition_1)
strategy.entry("Buy2", strategy.long, qty=qt2 * pyramiding, when=buy_condition_2)
strategy.entry("Buy3", strategy.long, qty=qt3 * pyramiding, when=buy_condition_3)
strategy.entry("Buy4", strategy.long, qty=qt4 * pyramiding, when=buy_condition_4)
strategy.close("Buy1", when=exit_condition_1 or exit_condition_2)
strategy.close("Buy2", when=exit_condition_1 or exit_condition_2)
strategy.close("Buy3", when=exit_condition_1 or exit_condition_2)
strategy.close("Buy4", when=exit_condition_1 or exit_condition_2)