
Chiến lược này là một hệ thống theo dõi xu hướng dựa trên đường trung bình di chuyển tự điều chỉnh Kaufman (KAMA) và MACD. Nó thực hiện theo dõi thông minh và nắm bắt chính xác thời gian giao dịch của xu hướng thị trường bằng cách sử dụng KAMA làm chỉ số phán đoán xu hướng chính, kết hợp với MACD làm chỉ số xác nhận động lực. Chiến lược này hoạt động trên khung thời gian 4 giờ, sử dụng các mục tiêu dừng lỗ và lợi nhuận động để quản lý rủi ro.
Logic cốt lõi của chiến lược này dựa trên các thành phần chính sau:
Đây là một chiến lược theo dõi xu hướng kết hợp sự sáng tạo của chỉ số kỹ thuật cổ điển KAMA với MACD. Chiến lược này có khả năng thực tiễn và ổn định mạnh mẽ thông qua sự kết hợp của các moving average và động lượng tự điều chỉnh được xác nhận, cùng với hệ thống quản lý rủi ro hoàn hảo. Mặc dù có một số rủi ro về sự trì trệ và nhạy cảm của tham số, nhưng sự ổn định và lợi nhuận của chiến lược có thể được nâng cao hơn nữa thông qua hướng tối ưu hóa được đề xuất.
/*backtest
start: 2024-02-20 00:00:00
end: 2025-02-18 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"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/
// © mckat
//@version=5
strategy("4-Hour KAMA Strategy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10)
// === Inputs ===
ama_length = input.int(50, title="KAMA Length for 4H")
fast_length = input.int(3, title="KAMA Fast Length")
slow_length = input.int(30, title="KAMA Slow Length")
atr_length = input.int(14, title="ATR Length")
atr_mult = input.float(3.0, title="ATR Multiplier for Stop-Loss & Take-Profit")
// === KAMA Calculation ===
var float kama = na
price_change = math.abs(close - close[ama_length])
volatility_sum = 0.0
for i = 0 to ama_length - 1
volatility_sum := volatility_sum + math.abs(close[i] - close[i + 1])
efficiency_ratio = price_change / volatility_sum
smoothing_constant = math.pow(efficiency_ratio * (2 / (fast_length + 1) - 2 / (slow_length + 1)) + 2 / (slow_length + 1), 2)
kama := na(kama[1]) ? close : kama[1] + smoothing_constant * (close - kama[1])
// Plot KAMA
plot(kama, color=color.blue, title="KAMA (50)")
// === ATR for Stop-Loss and Take-Profit ===
atr = ta.atr(atr_length)
stop_loss = close - atr * atr_mult
take_profit = close + atr * atr_mult
// === MACD for Momentum Confirmation (Slow Settings for 4H) ===
[macd_line, signal_line, _] = ta.macd(close, 26, 52, 18)
macd_bullish = macd_line > signal_line
macd_bearish = macd_line < signal_line
// === Entry and Exit Conditions ===
buy_condition = ta.crossover(close, kama) and macd_bullish
sell_condition = ta.crossunder(close, kama) and macd_bearish
// === Execute Trades ===
if (buy_condition)
strategy.entry("Buy", strategy.long)
if (sell_condition)
strategy.close("Buy")
// === Dynamic Stop-Loss and Take-Profit ===
strategy.exit("Exit", "Buy", stop=stop_loss, limit=take_profit)
// === Plot Signals ===
plotshape(series=buy_condition, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY")
plotshape(series=sell_condition, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")