Chiến lược này là một hệ thống giao dịch tự động dựa trên chỉ số MACD, kết hợp các cơ chế dừng lỗ và lấy lợi nhuận năng động. Chiến lược cốt lõi xác định các tín hiệu giao dịch thông qua đường MACD và chéo đường tín hiệu, trong khi tích hợp stop-loss dựa trên tỷ lệ phần trăm, mục tiêu lợi nhuận và trailing stops để quản lý rủi ro. Chiến lược tính toán chỉ số MACD bằng cách sử dụng sự khác biệt giữa các đường trung bình di chuyển nhanh và chậm, xác định các điểm đảo ngược xu hướng thị trường thông qua các đường chéo đường tín hiệu để đưa ra các quyết định giao dịch tương ứng.
Logic cốt lõi bao gồm một số thành phần chính:
Chiến lược này xây dựng một hệ thống giao dịch tự động mạnh mẽ thông qua các tín hiệu chéo MACD và quản lý rủi ro toàn diện. Mặc dù có chỗ cho tối ưu hóa, khung cơ bản đã được phát triển tốt. Thông qua tối ưu hóa và cải tiến liên tục, chiến lược có tiềm năng duy trì hiệu suất ổn định trong các môi trường thị trường khác nhau. Để thực hiện giao dịch trực tiếp, nên tiến hành kiểm tra kỹ lưỡng và điều chỉnh các tham số theo đặc điểm thị trường cụ thể.
/*backtest start: 2024-01-01 00:00:00 end: 2024-11-01 00:00:00 period: 12h basePeriod: 12h 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/ // © traderhub //@version=5 strategy("MACD Strategy with Settings", overlay=true) // Параметры MACD в контрольной панели fastLength = input.int(12, title="Fast Length", minval=1, maxval=50) slowLength = input.int(26, title="Slow Length", minval=1, maxval=50) signalSmoothing = input.int(9, title="Signal Smoothing", minval=1, maxval=50) // Параметры риска stopLossPerc = input.float(1, title="Stop Loss (%)", step=0.1) // Стоп-лосс в процентах takeProfitPerc = input.float(2, title="Take Profit (%)", step=0.1) // Тейк-профит в процентах trailStopPerc = input.float(1.5, title="Trailing Stop (%)", step=0.1) // Трейлинг-стоп в процентах // Вычисляем MACD [macdLine, signalLine, _] = ta.macd(close, fastLength, slowLength, signalSmoothing) // Показываем MACD и сигнальную линию на графике plot(macdLine, color=color.blue, title="MACD Line") plot(signalLine, color=color.red, title="Signal Line") hline(0, "Zero Line", color=color.gray) // Условия для покупки и продажи longCondition = ta.crossover(macdLine, signalLine) // Покупка при пересечении MACD вверх сигнальной линии shortCondition = ta.crossunder(macdLine, signalLine) // Продажа при пересечении MACD вниз сигнальной линии // Расчет стоп-лосса и тейк-профита var float longStopLevel = na var float longTakeProfitLevel = na if (longCondition) longStopLevel := strategy.position_avg_price * (1 - stopLossPerc / 100) longTakeProfitLevel := strategy.position_avg_price * (1 + takeProfitPerc / 100) strategy.entry("Long", strategy.long) if (strategy.position_size > 0) // Установка стоп-лосса и тейк-профита strategy.exit("Take Profit/Stop Loss", "Long", stop=longStopLevel, limit=longTakeProfitLevel, trail_offset=trailStopPerc) // Закрытие позиции при медвежьем сигнале if (shortCondition) strategy.close("Long") strategy.entry("Short", strategy.short)