Chiến lược này là một phiên bản cải tiến của chiến lược giao dịch dựa trên chỉ số MACD. Nó kết hợp các đặc điểm theo xu hướng của chỉ số MACD với các ý tưởng giao dịch động lực, tạo ra các tín hiệu giao dịch bằng cách phân tích sự khác biệt giữa các đường trung bình di chuyển nhanh và chậm. Trong khi đó, chiến lược cũng giới thiệu các phương pháp tối ưu hóa như xác nhận xu hướng, xác nhận trì hoãn tín hiệu, tỷ lệ dừng lỗ cố định và lấy lợi nhuận, để cải thiện độ bền và lợi nhuận của chiến lược.
Cốt lõi của chiến lược này là chỉ số MACD, bao gồm sự khác biệt giữa đường trung bình di chuyển nhanh (EMA) và đường trung bình di chuyển chậm (EMA). Khi đường EMA nhanh vượt qua đường EMA chậm, nó tạo ra tín hiệu mua hoặc bán. Cụ thể, khi đường MACD xuyên qua đường tín hiệu từ dưới lên trên, nó tạo ra tín hiệu mua; khi đường MACD giảm xuống dưới đường tín hiệu từ trên xuống dưới, nó tạo ra tín hiệu bán.
Ngoài các tín hiệu chéo MACD cơ bản, chiến lược cũng giới thiệu một cơ chế xác nhận xu hướng. Nó so sánh với đường trung bình di chuyển đơn giản (SMA) để xác định xem thị trường hiện tại có xu hướng tăng hay giảm. Chỉ khi tín hiệu mua xuất hiện trong xu hướng tăng, hoặc tín hiệu bán xuất hiện trong xu hướng giảm, giao dịch sẽ được thực hiện. Điều này có hiệu quả tránh các tín hiệu sai được tạo ra trong thị trường dao động.
Hơn nữa, chiến lược này mở rộng thời gian xác nhận tín hiệu. nghĩa là, chỉ khi ngọn nến hiện tại đáp ứng các điều kiện mua hoặc bán và ngọn nến trước đó cũng đáp ứng các điều kiện tương tự, giao dịch tương ứng sẽ được thực hiện. Điều này tiếp tục cải thiện độ tin cậy của các tín hiệu.
Cuối cùng, chiến lược thiết lập mức dừng lỗ và lấy lợi nhuận theo tỷ lệ phần trăm cố định. Một khi giao dịch được thực hiện, giá dừng lỗ và lấy lợi nhuận sẽ được tính dựa trên giá nhập cảnh, và vị trí sẽ tự động đóng khi giá này đạt được. Điều này giúp kiểm soát rủi ro và lợi nhuận của một giao dịch duy nhất.
Chiến lược này là một chiến lược giao dịch cải tiến dựa trên chỉ số MACD. Thông qua xác nhận xu hướng, xác nhận chậm tín hiệu, dừng lỗ cố định và lấy lợi nhuận và các phương pháp khác, nó cải thiện độ bền và tiềm năng lợi nhuận của chiến lược. Tuy nhiên, nó cũng phải đối mặt với rủi ro trong tối ưu hóa tham số, nhận dạng xu hướng, chỉ số duy nhất, dữ liệu kiểm tra lại và các khía cạnh khác. Trong tương lai, chúng ta có thể xem xét tối ưu hóa chiến lược từ các khía cạnh như kết hợp các chỉ số khác, dừng lỗ và lấy lợi nhuận động, quản lý vị trí và học máy để cải thiện thêm hiệu quả ứng dụng thực tế của nó.
/*backtest start: 2023-05-08 00:00:00 end: 2024-05-13 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © sligetit //@version=5 strategy("Improved MACD_VXI Strategy", overlay=true) // Calculate MACD and Signal Line fastLength = input.int(13, title="Fast Length") slowLength = input.int(21, title="Slow Length") signalLength = input.int(8, title="Signal Length") fastMA = ta.ema(close, fastLength) slowMA = ta.ema(close, slowLength) macd = fastMA - slowMA signal = ta.sma(macd, signalLength) // Plot MACD and Signal Line plot(macd, color=color.red, linewidth=1) plot(signal, color=color.blue, linewidth=2) // Calculate Cross Signals with Trend Confirmation smaPeriod = input.int(50, title="SMA Period") sma = ta.sma(close, smaPeriod) trendUp = close > sma trendDown = close < sma crossOver = ta.crossover(signal, macd) crossUnder = ta.crossunder(signal, macd) buySignal = crossOver and trendUp sellSignal = crossUnder and trendDown // Execute Buy/Sell Operations if buySignal strategy.entry("Buy", strategy.long) if sellSignal strategy.entry("Sell", strategy.short) // Extend Signal Confirmation Time Window longSignal = crossOver[1] and trendUp[1] shortSignal = crossUnder[1] and trendDown[1] if longSignal strategy.entry("Buy", strategy.long) if shortSignal strategy.entry("Sell", strategy.short) // Set Fixed Percentage Stop Loss and Take Profit stopLossPercent = input.float(1, title="Stop Loss (%)") / 100 takeProfitPercent = input.float(2, title="Take Profit (%)") / 100 stopLossPrice = strategy.position_avg_price * (1 - stopLossPercent) takeProfitPrice = strategy.position_avg_price * (1 + takeProfitPercent) strategy.exit("Stop Loss/Profit", "Buy", stop=stopLossPrice, limit=takeProfitPrice) strategy.exit("Stop Loss/Profit", "Sell", stop=stopLossPrice, limit=takeProfitPrice)