Chiến lược này kết hợp các chỉ số trung bình động, chỉ số sức mạnh tương đối (RSI) và mô hình ngập để thực hiện các giao dịch dài và ngắn trên vàng. Nó chủ yếu sử dụng sự chéo chéo của các đường trung bình động 21 ngày, 50 ngày và 200 ngày làm tín hiệu giao dịch, với chỉ số RSI và mô hình ngập để lọc các tín hiệu nhập thêm để tối ưu hóa tốt hơn.
Chiến lược đưa ra các quyết định giao dịch dựa trên các khía cạnh sau:
Crossover trung bình di chuyển
Crossover giữa MA 21 ngày và MA 200 ngày được sử dụng làm chỉ số chính để xác định sự đảo ngược xu hướng.
Chỉ số RSI
RSI phải nằm dưới mức mua quá mức cho tín hiệu dài và trên mức bán quá mức cho tín hiệu ngắn, để tránh mua đỉnh và bán thung lũng.
Xác nhận mô hình ngập
Mô hình hấp thụ tăng là cần thiết cho tín hiệu dài khi đường chéo vàng xảy ra. Mô hình hấp thụ giảm cần thiết cho tín hiệu ngắn khi đường chéo chết xảy ra. Điều này xác nhận thêm sự đảo ngược xu hướng.
Các tín hiệu giao dịch được tạo ra khi tất cả ba điều kiện trên được đáp ứng.
Ưu điểm lớn nhất nằm trong việc sử dụng toàn diện nhiều tham số và chỉ số để ra quyết định, lọc ra các tín hiệu không chính xác và giảm stop loss không cần thiết.
Chính chiến lược trung bình động có sự ổn định tương đối tốt.
Cài đặt chỉ số RSI ngăn chặn mua đỉnh và bán thung lũng.
Việc xác nhận các mô hình ngập tràn cải thiện độ tin cậy trong phán đoán đảo ngược xu hướng.
Stop loss nhỏ hơn có hiệu quả kiểm soát rủi ro.
Trong khi chiến lược này xuất sắc trong việc lọc tín hiệu và kiểm soát rủi ro, nó vẫn chứa một số điểm yếu và rủi ro:
Điều chỉnh tham số phức tạp đòi hỏi nỗ lực đáng kể để tìm ra sự kết hợp tối ưu.
Các tín hiệu nhập cảnh nghiêm ngặt có thể bỏ lỡ một số cơ hội tốt.
Sẽ có một sự chậm trễ nhất định trong điều kiện thị trường cực kỳ biến động.
Tính ổn định và hiệu lực lâu dài cần được xác minh thêm.
Để giải quyết các rủi ro trên, chúng tôi có thể tinh chỉnh các tham số, tối ưu hóa luồng logic, kết hợp các chỉ số khác vv để cải thiện chiến lược.
Mặc dù làm tốt trong việc kết hợp nhiều chỉ số, chiến lược này vẫn còn chỗ cho việc tối ưu hóa:
Ngoài ra, tìm các bộ tham số tối ưu thông qua nhiều backtesting hơn. Đánh giá các tham số khác nhau về tác động đến kết quả để xác định sự kết hợp các tham số tốt hơn.
Kết hợp các chỉ số khác như MACD, KD vv để giúp đánh giá thời gian đảo ngược xu hướng.
Cải thiện và tinh chỉnh các cơ chế dừng lỗ. Đánh giá xem tỷ lệ phần trăm dừng lỗ lớn hơn có thể giảm các thay đổi vị trí không cần thiết hay không.
Kiểm tra các bộ dữ liệu lịch sử lâu hơn để xác minh tính hợp lệ lâu dài của chiến lược. Kiểm tra sự ổn định trong nhiều năm trong điều kiện thị trường khác nhau.
Kết luận, chiến lược này sử dụng một bộ công cụ phân tích kỹ thuật như trung bình động, RSI và mô hình ngập để thực hiện giao dịch vàng dài ngắn. Thông qua cấu hình tham số và lọc tín hiệu, nó thiết lập một hệ thống tương đối nghiêm ngặt để kiểm soát rủi ro ở một mức độ nào đó. Tuy nhiên, không có chiến lược nào hoàn toàn hoàn hảo. Chiến lược này vẫn có nhiều chỗ để tối ưu hóa và cải thiện hướng. Nói chung nó cung cấp các tham chiếu có ý nghĩa cho giao dịch định lượng, nhưng vẫn nên được sử dụng kín đáo với các điều chỉnh thực tế khi áp dụng trong thực tế.
/*backtest start: 2024-02-01 00:00:00 end: 2024-02-29 23:59:59 period: 1m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("Gold Trading with Simons Strategy", overlay=true) // Parameters length21 = input(21, minval=1, title="Length for 21 MA") length50 = input(50, minval=1, title="Length for 50 MA") length200 = input(200, minval=1, title="Length for 200 MA") rsiLength = input(14, minval=1, title="RSI Length") rsiOverbought = input(70, title="RSI Overbought Level") rsiOversold = input(30, title="RSI Oversold Level") takeProfitPercent = input(4, title="Take Profit %") stopLossPercent = input(1, title="Stop Loss %") // Moving Averages ma21 = sma(close, length21) ma50 = sma(close, length50) ma200 = sma(close, length200) // RSI rsi = rsi(close, rsiLength) // Engulfing Pattern isBullishCandle(c) => close[c] > open[c] isBearishCandle(c) => close[c] < open[c] bearishEngulfing = isBullishCandle(1) and isBearishCandle(0) and close < open[1] and open > close[1] bullishEngulfing = isBearishCandle(1) and isBullishCandle(0) and close > open[1] and open < close[1] // Calculate Take Profit and Stop Loss Levels takeProfitLevel(entryPrice) => entryPrice * (1 + takeProfitPercent / 100) stopLossLevel(entryPrice) => entryPrice * (1 - stopLossPercent / 100) // Entry Conditions longCondition = crossover(ma21, ma200) and close > ma21 and close > ma50 and rsi < rsiOverbought and bullishEngulfing shortCondition = crossunder(ma21, ma200) and close < ma21 and close < ma50 and rsi > rsiOversold and bearishEngulfing // Entry if (longCondition) entryPrice = close strategy.entry("Long", strategy.long) strategy.exit("Take Profit", "Long", limit=takeProfitLevel(entryPrice)) strategy.exit("Stop Loss", "Long", stop=stopLossLevel(entryPrice)) if (shortCondition) entryPrice = close strategy.entry("Short", strategy.short) strategy.exit("Take Profit", "Short", limit=takeProfitLevel(entryPrice)) strategy.exit("Stop Loss", "Short", stop=stopLossLevel(entryPrice)) // Plotting plot(ma21, color=color.blue, title="21 MA") plot(ma50, color=color.orange, title="50 MA") plot(ma200, color=color.red, title="200 MA") hline(rsiOverbought, "RSI Overbought", color=color.green) hline(rsiOversold, "RSI Oversold", color=color.red) plot(rsi, "RSI", color=color.purple)