Chiến lược này là một hệ thống giao dịch theo xu hướng kết hợp nhiều chỉ số kỹ thuật. Nó tích hợp các tín hiệu thị trường từ các chiều khác nhau bao gồm Moving Average (EMA), Volatility Tracking (ATR), Volume Trend (PVT), và Momentum Oscillator (Ninja) để cải thiện độ chính xác giao dịch. Chiến lược sử dụng một cơ chế dừng lỗ năng động để kiểm soát nghiêm ngặt rủi ro trong khi theo dõi xu hướng.
Logic cốt lõi được xây dựng trên bốn trụ cột chính: 1. Sử dụng EMA 200 giai đoạn như là cơ sở xác định xu hướng chính, chia thị trường thành các trạng thái tăng và giảm 2. Hệ thống Chandelier Exit dựa trên ATR, xác định các điểm chuyển đổi xu hướng bằng cách theo dõi mức cao và thấp kết hợp với biến động 3. Chỉ số PVT kết hợp biến đổi giá với khối lượng để xác nhận tính hợp lệ của xu hướng giá 4. Ninja dao động ghi lại sự thay đổi động lực thị trường bằng cách so sánh trung bình động ngắn hạn và trung hạn
Các tín hiệu giao dịch được tạo ra dưới các điều kiện sau: - Long: Giá trên 200EMA, Chandelier Exit cho thấy tín hiệu mua, được xác nhận bởi PVT hoặc chỉ số Ninja - ngắn: Giá dưới 200EMA, Chandelier Exit cho thấy tín hiệu bán, được xác nhận bởi PVT hoặc chỉ số Ninja
Chiến lược này xây dựng một hệ thống giao dịch tương đối hoàn chỉnh thông qua sự phối hợp đa chỉ số và cơ chế dừng lỗ năng động. Những lợi thế cốt lõi của nó nằm trong xác nhận tín hiệu đa chiều và kiểm soát rủi ro nghiêm ngặt. Mặc dù có rủi ro chậm trễ và tín hiệu sai, thông qua tối ưu hóa và cải thiệ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. Các nhà giao dịch được khuyên nên tiến hành kiểm tra kỹ lưỡng và tối ưu hóa tham số trước khi giao dịch trực tiếp.
/*backtest start: 2024-11-12 00:00:00 end: 2024-12-11 08:00:00 period: 2h basePeriod: 2h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Triple Indicator Strategy", shorttitle="TIS", overlay=true) // --- Inputs --- var string calcGroup = "Calculation Parameters" atrLength = input.int(22, title="ATR Period", group=calcGroup) atrMult = input.float(3.0, title="ATR Multiplier", step=0.1, group=calcGroup) emaLength = input.int(200, title="EMA Length", group=calcGroup) // --- ATR and EMA Calculations --- atr = atrMult * ta.atr(atrLength) ema200 = ta.ema(close, emaLength) // --- Chandelier Exit Logic --- longStop = ta.highest(high, atrLength) - atr shortStop = ta.lowest(low, atrLength) + atr var int dir = 1 dir := close > shortStop ? 1 : close < longStop ? -1 : dir buySignal = dir == 1 and dir[1] == -1 sellSignal = dir == -1 and dir[1] == 1 // --- Price Volume Trend (PVT) --- pvt = ta.cum((close - close[1]) / close[1] * volume) pvtSignal = ta.ema(pvt, 21) pvtBuy = ta.crossover(pvt, pvtSignal) pvtSell = ta.crossunder(pvt, pvtSignal) // --- Ninja Indicator --- ninjaOsc = (ta.ema(close, 3) - ta.ema(close, 13)) / ta.ema(close, 13) * 100 ninjaSignal = ta.ema(ninjaOsc, 24) ninjaBuy = ta.crossover(ninjaOsc, ninjaSignal) ninjaSell = ta.crossunder(ninjaOsc, ninjaSignal) // --- Strategy Conditions --- longCondition = buySignal and close > ema200 and (pvtBuy or ninjaBuy) shortCondition = sellSignal and close < ema200 and (pvtSell or ninjaSell) if longCondition strategy.entry("Buy", strategy.long) strategy.exit("Exit Long", "Buy", stop=low - atr) if shortCondition strategy.entry("Sell", strategy.short) strategy.exit("Exit Short", "Sell", stop=high + atr) // --- Plotting --- plot(ema200, title="EMA 200", color=color.blue, linewidth=2) plotshape(buySignal, title="Chandelier Buy", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small) plotshape(sellSignal, title="Chandelier Sell", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small) // --- Labels for Buy/Sell with price --- if buySignal label.new(bar_index, low, "Buy: " + str.tostring(close), color=color.green, style=label.style_label_up, yloc=yloc.belowbar, size=size.small) if sellSignal label.new(bar_index, high, "Sell: " + str.tostring(close), color=color.red, style=label.style_label_down, yloc=yloc.abovebar, size=size.small) // --- Alerts --- alertcondition(longCondition, title="Buy Alert", message="Buy Signal Triggered!") alertcondition(shortCondition, title="Sell Alert", message="Sell Signal Triggered!")