Chiến lược này là một hệ thống giao dịch theo xu hướng kết hợp chỉ số xu hướng san hô với kênh Donchian. Bằng cách nắm bắt chính xác đà tăng của thị trường và cung cấp nhiều xác nhận về sự phá vỡ xu hướng, nó lọc hiệu quả các tín hiệu sai trong các thị trường dao động và cải thiện độ chính xác giao dịch. Chiến lược sử dụng các kỹ thuật trung bình động thích nghi có thể điều chỉnh động các tham số để duy trì hiệu suất ổn định trong các điều kiện thị trường khác nhau.
Lý thuyết cốt lõi được xây dựng trên hiệu ứng phối hợp của hai chỉ số chính: 1. Coral Trend Indicator: Tính toán một giá trị làm mịn của (cao + thấp + đóng) / 3 và so sánh nó với giá đóng hiện tại để xác định hướng xu hướng. 2. Kênh Donchian: Xác định xem giá có phá vỡ mức chính hay không bằng cách tính toán giá cao nhất và thấp nhất trong một khoảng thời gian được xác định bởi người dùng.
Hệ thống tạo ra tín hiệu dài khi cả hai chỉ số xác nhận xu hướng tăng (coralTrendVal == 1 và donchianTrendVal == 1), và tín hiệu ngắn khi cả hai xác nhận xu hướng giảm (coralTrendVal == -1 và donchianTrendVal == -1).
Chiến lược này đạt được một hệ thống theo xu hướng mạnh mẽ thông qua nhiều cơ chế xác nhận xu hướng và cài đặt tham số linh hoạt. Các tính năng thích nghi và logic tín hiệu rõ ràng của nó làm cho nó phù hợp với các khung thời gian giao dịch và môi trường thị trường khác nhau. Thông qua các hướng tối ưu hóa được đề xuất, có chỗ để cải thiện hơn nữa hiệu suất chiến lược. Khi áp dụng giao dịch trực tiếp, nên kết hợp các biện pháp quản lý rủi ro và tối ưu hóa các tham số theo đặc điểm của các công cụ giao dịch cụ thể.
/*backtest start: 2019-12-23 08:00:00 end: 2025-01-16 00:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":49999}] */ //@version=5 strategy("Coral Tides Strategy", shorttitle="CoralTidesStrat", overlay=true) // === Inputs === dlen = input.int(defval=20, title="Donchian Channel Period", minval=10) coralPeriod = input.int(defval=14, title="Coral Trend Period") // === Functions === // Coral Trend Calculation coralTrend(period) => smooth = (high + low + close) / 3 coral = ta.ema(smooth, period) trend = 0 trend := close > coral ? 1 : close < coral ? -1 : trend[1] [trend, coral] // Donchian Trend Calculation donchianTrend(len) => hh = ta.highest(high, len) ll = ta.lowest(low, len) trend = 0 trend := close > hh[1] ? 1 : close < ll[1] ? -1 : trend[1] trend // === Trend Calculation === [coralTrendVal, coralLine] = coralTrend(coralPeriod) donchianTrendVal = donchianTrend(dlen) // === Signal Logic === var int trendState = 0 buySignal = false sellSignal = false if (coralTrendVal == 1 and donchianTrendVal == 1 and trendState != 1) buySignal := true sellSignal := false trendState := 1 else if (coralTrendVal == -1 and donchianTrendVal == -1 and trendState != -1) sellSignal := true buySignal := false trendState := -1 else buySignal := false sellSignal := false // === Strategy Execution === // Entry Signals if (buySignal) strategy.entry("Long", strategy.long) if (sellSignal) strategy.entry("Short", strategy.short) // === Plots === // Coral Trend Line plot(coralLine, color=color.green, linewidth=2, title="Coral Trend Line") // Buy/Sell Signal Labels if buySignal label.new(bar_index, low, "BUY", color=color.green, textcolor=color.white, style=label.style_label_down, size=size.normal) if sellSignal label.new(bar_index, high, "SELL", color=color.red, textcolor=color.white, style=label.style_label_up, size=size.normal)