
Chiến lược này là một hệ thống giao dịch toàn diện kết hợp nhiều chỉ báo kỹ thuật. Nó chủ yếu sử dụng đường trung bình động (MA), chỉ số sức mạnh tương đối (RSI) và chỉ số định hướng trung bình (ADX) để xác định xu hướng thị trường và động lượng. Phạm vi thực nâng cao (ATR) chỉ báo được sử dụng để thiết lập vị thế dừng lỗ và chốt lời một cách linh hoạt. Hệ thống áp dụng phương pháp phân tích đa giai đoạn để xác nhận tín hiệu giao dịch thông qua sự giao nhau của các chỉ báo ở nhiều thời điểm khác nhau, không chỉ đảm bảo tính chính xác của giao dịch mà còn kiểm soát rủi ro hiệu quả.
Chiến lược này sử dụng cơ chế xác minh ba lớp để xác nhận tín hiệu giao dịch:
Đồng thời, chiến lược này sử dụng hệ thống dừng lỗ và chốt lời động dựa trên ATR:
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ự kết hợp của nhiều chỉ báo kỹ thuật. Ưu điểm cốt lõi của chiến lược này nằm ở cơ chế xác minh nhiều lớp và hệ thống quản lý rủi ro năng động, nhưng cũng cần chú ý đến khả năng thích ứng của nó trong các môi trường thị trường khác nhau. Thông qua việc tối ưu hóa và cải tiến liên tục, chiến lược này dự kiến sẽ đạt được lợi nhuận ổn định trong các giao dịch thực tế.
/*backtest
start: 2024-12-17 00:00:00
end: 2025-01-15 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":49999}]
*/
//@version=6
strategy("Daily Trading Strategy", overlay=true)
// --- Indikator ---
// Kombinasi MA untuk trend
fastMA = ta.sma(close, 20)
slowMA = ta.sma(close, 50)
// RSI untuk momentum
rsi = ta.rsi(close, 14)
// --- Fungsi untuk menghitung ADX ---
adx(length) =>
up = ta.change(high)
down = -ta.change(low)
plusDM = na(up) ? na : (up > down and up > 0 ? up : 0)
minusDM = na(down) ? na : (down > up and down > 0 ? down : 0)
trur = ta.rma(ta.tr, length)
plus = fixnan(100 * ta.rma(plusDM, length) / trur)
minus = fixnan(100 * ta.rma(minusDM, length) / trur)
sum = plus + minus
adx = 100 * ta.rma(math.abs(plus - minus) / (sum == 0 ? 1 : sum), length)
// ADX untuk kekuatan trend
adxValue = adx(14)
// --- Kondisi Entry Long ---
longEntry = ta.crossover(fastMA, slowMA) and rsi > 50 and adxValue > 25
// --- Kondisi Entry Short ---
shortEntry = ta.crossunder(fastMA, slowMA) and rsi < 50 and adxValue > 25
// --- Stop Loss dan Take Profit ---
// Fungsi untuk menghitung stop loss dan take profit
getSLTP(entryPrice, isLong) =>
atr = ta.atr(14)
sl = isLong ? entryPrice - atr * 2 : entryPrice + atr * 2
tp = isLong ? entryPrice + atr * 4 : entryPrice - atr * 4
[sl, tp]
// Hitung SL dan TP untuk posisi Long
[longSL, longTP] = getSLTP(close, true)
// Hitung SL dan TP untuk posisi Short
[shortSL, shortTP] = getSLTP(close, false)
// --- Eksekusi Order ---
if (longEntry)
strategy.entry("Long", strategy.long, stop=longSL, limit=longTP)
if (shortEntry)
strategy.entry("Short", strategy.short, stop=shortSL, limit=shortTP)
// --- Plot Indikator ---
// MA
plot(fastMA, color=color.blue)
plot(slowMA, color=color.red)
// RSI
plot(rsi, color=color.orange)
hline(50, color=color.gray)
// ADX
plot(adxValue, color=color.purple)
hline(25, color=color.gray)
// --- Alert ---
alertcondition(longEntry, title="Long Entry", message="Long Entry")
alertcondition(shortEntry, title="Short Entry", message="Short Entry")