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ố Supertrend với trung bình chuyển động thích nghi Kaufman (KAMA). Nó xác định động những thay đổi xu hướng thị trường, tìm kiếm những cơ hội dài trong xu hướng tăng, và sử dụng các cơ chế dừng lỗ linh hoạt để kiểm soát rủi ro. Khái niệm cốt lõi dựa trên khả năng xác định hướng xu hướng của chỉ số Supertrend, kết hợp với các đặc điểm thích nghi biến động thị trường của KAMA, để thiết lập các vị trí dài trong xu hướng thị trường tăng.
Chiến lược này sử dụng một hệ thống xác nhận chỉ số kỹ thuật kép. Đầu tiên, chỉ số Supertrend tính toán hướng xu hướng bằng cách sử dụng ATR và hệ số tùy chỉnh, chỉ ra xu hướng tăng khi đường chỉ số dưới giá. Thứ hai, chỉ số KAMA điều chỉnh độ nhạy trung bình động thông qua một cơ chế thích nghi, phù hợp hơn với các điều kiện thị trường khác nhau.
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 chỉ số kỹ thuật Supertrend và KAMA. Ưu điểm chính của nó nằm trong khả năng thích nghi và kiểm soát rủi ro, với độ tin cậy tín hiệu giao dịch tăng cường thông qua xác nhận kép. Trong khi đối mặt với những thách thức trong thị trường hỗn loạn, hiệu suất tổng thể của chiến lược có thể được cải thiện hơn nữa thông qua cài đặt tham số thích hợp và thực hiện tối ưu hóa. Nó đặc biệt phù hợp với giao dịch xu hướng trung và dài hạn và hoạt động tốt trên các thị trường có xu hướng rõ ràng.
/*backtest start: 2019-12-23 08:00:00 end: 2024-12-25 08:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=6 strategy("Supertrend + KAMA Long Strategy", overlay=true, commission_type=strategy.commission.percent, commission_value=0.1, slippage=3) // User-defined inputs for date range startDate = input(timestamp("2018-01-01 00:00:00"), title="Start Date") endDate = input(timestamp("2069-12-31 23:59:59"), title="End Date") inDateRange = true // Inputs for KAMA and Supertrend kamaLength = input.int(21, title="KAMA Length", minval=1) atrPeriod = input.int(10, title="Supertrend ATR Length", minval=1) factor = input.float(3.0, title="Supertrend Factor", minval=0.01, step=0.01) //------------------------- Kaufman Moving Average Adaptive (KAMA) ------------------------- xPrice = close xvnoise = math.abs(xPrice - xPrice[1]) Length = kamaLength nfastend = 0.666 nslowend = 0.0645 nsignal = math.abs(xPrice - xPrice[Length]) float nnoise = 0.0 for i = 0 to Length - 1 nnoise := nnoise + xvnoise[i] nefratio = nnoise != 0.0 ? nsignal / nnoise : 0.0 nsmooth = math.pow(nefratio * (nfastend - nslowend) + nslowend, 2) var float nAMA = na nAMA := nz(nAMA[1]) + nsmooth * (xPrice - nz(nAMA[1])) plot(nAMA, color=color.blue, linewidth=2, title="Kaufman KAMA") //------------------------- Supertrend Calculation ------------------------- [stValue, dirValue] = ta.supertrend(factor, atrPeriod) upTrend = dirValue < 0 downTrend = dirValue >= 0 plot(dirValue < 0 ? stValue : na, "Up Trend", color=color.green, style=plot.style_linebr) plot(dirValue >= 0 ? stValue : na, "Down Trend", color=color.red, style=plot.style_linebr) //------------------------- Strategy Logic ------------------------- // Entry condition: Supertrend is in uptrend AND price is above KAMA canLong = inDateRange and upTrend and close > nAMA // Exit condition (Take Profit): Supertrend switches to downtrend AND price is below KAMA stopLoss = inDateRange and downTrend and close < nAMA if canLong strategy.entry("Long", strategy.long) label.new(bar_index, low, "BUY", color=color.green, textcolor=color.white, style=label.style_label_down, size=size.normal) if stopLoss strategy.close("Long", comment="Stop Loss") label.new(bar_index, high, "STOP LOSS", color=color.red, textcolor=color.white, style=label.style_label_up, size=size.normal) //------------------------- Alerts ------------------------- alertcondition(canLong, title="Long Entry", message="Supertrend + KAMA Long Signal") alertcondition(stopLoss, title="Stop Loss", message="Supertrend switched to Downtrend and Price below KAMA")