Chiến lược này là một hệ thống theo xu hướng dựa trên các cây nến Heikin-Ashi trơn tru và đường chéo trung bình di chuyển đơn giản (SMA). Nó xác định sự thay đổi xu hướng thông qua giao điểm của các cây nến Heikin-Ashi trơn tru EMA với SMA 44 giai đoạn để nắm bắt các cơ hội xu hướng lớn trên thị trường. Chiến lược này kết hợp một cơ chế quản lý vị trí năng động tự động đóng các vị trí khi giá quá gần với đường trung bình di chuyển dài hạn, tránh rủi ro dao động trong việc củng cố thị trường.
Lý thuyết cốt lõi bao gồm ba yếu tố chính: Đầu tiên, chuyển đổi các nến truyền thống thành nến Heikin-Ashi bằng cách tính toán trung bình số học của giá mở, cao, thấp và đóng để lọc tiếng ồn thị trường; Thứ hai, sử dụng EMA 6 giai đoạn để làm mịn Heikin-Ashi, tăng thêm độ tin cậy tín hiệu; Cuối cùng, kết hợp giá đóng cửa Heikin-Ashi mịn với SMA 44 giai đoạn, tạo ra các tín hiệu dài trên các đường chéo lên và tín hiệu ngắn trên các đường chéo xuống. Khái niệm
Chiến lược này xây dựng một hệ thống giao dịch theo xu hướng mạnh mẽ bằng cách kết hợp các ngọn nến Heikin-Ashi với hệ thống SMA. Nó có các cơ chế tạo tín hiệu toàn diện và kiểm soát rủi ro hợp lý, đặc biệt phù hợp với các thị trường có đặc điểm xu hướng khác biệt. Hiệu quả thực tế của chiến lược có thể được tăng thêm thông qua các hướng tối ưu hóa được đề xuất. Nhìn chung, nó đại diện cho một chiến lược theo xu hướng được thiết kế tốt với logic rõ ràng.
/*backtest start: 2024-10-01 00:00:00 end: 2024-10-31 23:59:59 period: 1h basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Smoothed Heikin Ashi with SMA Strategy", overlay=true) // Input parameters for SMAs s1 = input.int(11, title="Short SMA Period") s2 = input.int(44, title="Long SMA Period") noPositionThreshold = input.float(0.001, title="No Position Threshold", step=0.0001) // Calculate the original Heikin-Ashi values haClose = (open + high + low + close) / 4 var float haOpen = na haOpen := na(haOpen[1]) ? (open + close) / 2 : (haOpen[1] + haClose[1]) / 2 haHigh = math.max(high, math.max(haOpen, haClose)) haLow = math.min(low, math.min(haOpen, haClose)) // Smoothing using exponential moving averages smoothLength = input.int(6, title="Smoothing Length") smoothedHaClose = ta.ema(haClose, smoothLength) smoothedHaOpen = ta.ema(haOpen, smoothLength) smoothedHaHigh = ta.ema(haHigh, smoothLength) smoothedHaLow = ta.ema(haLow, smoothLength) // Calculate SMAs smaShort = ta.sma(close, s1) smaLong = ta.sma(close, s2) // Plotting the smoothed Heikin-Ashi values plotcandle(smoothedHaOpen, smoothedHaHigh, smoothedHaLow, smoothedHaClose, color=(smoothedHaClose >= smoothedHaOpen ? color.green : color.red), title="Smoothed Heikin Ashi") plot(smaShort, color=color.blue, title="SMA Short") plot(smaLong, color=color.red, title="SMA Long") // Generate buy/sell signals based on SHA crossing 44 SMA longCondition = ta.crossover(smoothedHaClose, smaLong) shortCondition = ta.crossunder(smoothedHaClose, smaLong) noPositionCondition = math.abs(smoothedHaClose - smaLong) < noPositionThreshold // Strategy logic if (longCondition) strategy.entry("Long", strategy.long) if (shortCondition) strategy.entry("Short", strategy.short) if (noPositionCondition and strategy.position_size != 0) strategy.close_all("No Position") // Plot buy/sell signals plotshape(series=longCondition, location=location.belowbar, color=color.green, style=shape.labelup, text="BUY", size=size.small) plotshape(series=shortCondition, location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL", size=size.small) plotshape(series=noPositionCondition and strategy.position_size != 0, location=location.belowbar, color=color.yellow, style=shape.labeldown, text="EXIT", size=size.small)