
Chiến lược này kết hợp các chỉ số xu hướng DMI (chỉ số động lực định hướng) và ADX (chỉ số xu hướng trung bình) để xác định xu hướng mạnh mẽ của thị trường và nắm bắt cơ hội giao dịch. Chiến lược xác định hướng xu hướng bằng cách giao chéo các đường + DI và -DI của DMI, đồng thời sử dụng chỉ số ADX để đo cường độ của xu hướng và chỉ giao dịch khi xu hướng rõ ràng. Đây là một hệ thống giao dịch theo dõi xu hướng hoàn chỉnh, bao gồm các chức năng quản lý rủi ro như tín hiệu thị trường, dừng lỗ và tháo lỗ.
Logic cốt lõi của chiến lược bao gồm các yếu tố chính sau:
Biện pháp đối phó:
Chiến lược chéo DMI + ADX là một chiến lược theo dõi xu hướng cổ điển, tìm kiếm cơ hội giao dịch trong thị trường có xu hướng mạnh bằng cách kết hợp các chỉ số hướng và cường độ. Chiến lược có logic rõ ràng, kiểm soát rủi ro hoàn hảo, có khả năng thực tiễn và khả năng mở rộng tốt.
/*backtest
start: 2024-02-19 00:00:00
end: 2024-10-25 08:00:00
period: 4h
basePeriod: 4h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=6
strategy("DMI + ADX Strategy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=250)
// Nastavenie parametrov
adxLength = input.int(14, title="ADX Length")
adxSmoothing = input.int(14, title="ADX Smoothing")
dmiLength = input.int(14, title="DMI Length")
adxThreshold = input.float(25.0, title="ADX Threshold")
stopLossPerc = input.float(1.0, title="Stop Loss (%)")
takeProfitPerc = input.float(2.0, title="Take Profit (%)")
// Výpočet DMI a ADX pomocou ta.dmi
[plusDI, minusDI, adxValue] = ta.dmi(dmiLength, adxSmoothing)
// Nákupné podmienky
longCondition = ta.crossover(plusDI, minusDI) and adxValue > adxThreshold
if (longCondition)
strategy.entry("Long", strategy.long)
// Predajné podmienky
shortCondition = ta.crossunder(plusDI, minusDI) and adxValue > adxThreshold
if (shortCondition)
strategy.entry("Short", strategy.short)
// Definovanie Stop a Limit pre Long pozíciu
longStop = strategy.position_avg_price * (1 - stopLossPerc / 100)
longLimit = strategy.position_avg_price * (1 + takeProfitPerc / 100)
if (strategy.position_size > 0)
strategy.exit("Long Exit", "Long", stop=longStop, limit=longLimit)
// Definovanie Stop a Limit pre Short pozíciu
shortStop = strategy.position_avg_price * (1 + stopLossPerc / 100)
shortLimit = strategy.position_avg_price * (1 - takeProfitPerc / 100)
if (strategy.position_size < 0)
strategy.exit("Short Exit", "Short", stop=shortStop, limit=shortLimit)
// Vizualizácia indikátorov na grafe
plot(adxValue, title="ADX", color=color.blue)
hline(adxThreshold, "ADX Threshold", color=color.gray)
plot(plusDI, title="+DI", color=color.green)
plot(minusDI, title="-DI", color=color.red)