
Đây là một chiến lược giao dịch đường ngắn trong ngày mạnh mẽ kết hợp hai hệ thống siêu xu hướng. Chiến lược này đảm bảo có xác nhận xu hướng mạnh mẽ trước khi giao dịch bằng cách kết hợp xu hướng siêu trục trục động ((dựa trên các điểm cao và thấp động và dải ATR) và xu hướng siêu cổ điển ((trong các bộ lọc theo dõi xu hướng dựa trên ATR truyền thống). Cơ chế xác nhận kép này làm giảm đáng kể tín hiệu giả, tăng độ chính xác và khả năng lợi nhuận của giao dịch.
Cốt lõi của chiến lược này là kết hợp hai hệ thống siêu xu hướng khác nhau để có được tín hiệu giao dịch đáng tin cậy hơn:
Hệ thống siêu xu hướng trục:
pivotPeriodtham số)pivotCenterTính giá trung tâm trục hiện tạipivotATRMultTạo các vùng hỗ trợ và kháng cự độngpivotTrend)Hệ thống siêu xu hướng cổ điển:
classicATRMultTăng số để tạo ra các dải độngstTrend)Điều kiện nhập học:
Mục tiêu dừng lỗ và lợi nhuận:
Mã thực hiện toàn bộ logic của chiến lược này, bao gồm quản lý đơn đặt hàng và chỉ số trực quan, giúp nó dễ dàng áp dụng cho giao dịch thực tế.
Bằng cách phân tích mã sâu, chiến lược này cho thấy những ưu điểm đáng chú ý sau:
Cơ chế xác nhận xu hướng kép: Bằng cách yêu cầu hai hệ thống siêu xu hướng xác nhận đồng thời, giảm đáng kể các dấu hiệu phá vỡ giả và tín hiệu sai.
Các tham số thích ứng độngMục tiêu dừng và thu lợi nhuận trong chiến lược dựa trên tính toán ATR, cho phép nó tự động điều chỉnh theo biến động thực tế của thị trường. Điều này có nghĩa là điểm dừng sẽ mở rộng tương ứng trong thị trường biến động lớn, trong khi điểm dừng sẽ thắt chặt trong thị trường biến động ít hơn, thích ứng hiệu quả với môi trường thị trường khác nhau.
Xác định xu hướng trọng tâm: Sử dụng các điểm trung tâm động thay vì mức giá cố định để xác định xu hướng, cho phép chiến lược nắm bắt tốt hơn sự thay đổi cấu trúc thị trường thực tế và các bước ngoặt quan trọng.
Tầm nhìn caoChiến lược bao gồm các chỉ số trực quan rõ ràng như đường xu hướng siêu màu và các dấu hiệu tín hiệu mua và bán, cho phép các nhà giao dịch dễ dàng xác định các cơ hội giao dịch.
Quản lý rủi ro đầy đủ: Đặt mục tiêu dừng lỗ và lợi nhuận tự động được tích hợp, loại bỏ nhu cầu quản lý rủi ro bằng tay, đảm bảo thực hiện kỷ luật giao dịch.
Tối ưu hóa giao dịch đường ngắn: Được thiết kế đặc biệt cho giao dịch đường ngắn trên biểu đồ 3-5 phút, rất phù hợp với môi trường giao dịch tần số cao và nắm bắt biến động trong ngày.
Quản lý tiền dự kiếnLưu ý: Các mã đã được thiết lập để giao dịch bằng 10% lợi nhuận của tài khoản theo mặc định, giúp duy trì kích thước vị trí thích hợp và kiểm soát rủi ro.
Mặc dù chiến lược này được thiết kế hợp lý, nhưng vẫn có những rủi ro và hạn chế tiềm ẩn như sau:
Rủi ro biến đổi nhanh chóngTrong thị trường có biến động cao, giá có thể đảo ngược nhanh chóng sau khi tín hiệu được kích hoạt, dẫn đến việc dừng lỗ được kích hoạt. Giải pháp: Xem xét tạm dừng giao dịch trong thời gian công bố dữ liệu kinh tế quan trọng hoặc biến động bất thường.
Thị trường giao dịch ngang không tốtPhương pháp giải quyết: Thêm bộ lọc thị trường ngang bổ sung, chẳng hạn như ADX (trung bình chỉ số hướng) hoặc giảm giá.
Độ nhạy tham sốPhương pháp giải quyết: thực hiện truy xuất lịch sử rộng rãi để tìm ra sự kết hợp tốt nhất của các tham số cho một thị trường và khung thời gian cụ thể.
Sự phụ thuộc vào thanh khoảnGiải pháp: Hạn chế thời gian giao dịch trong thời gian có tính thanh khoản cao, hoặc tăng bộ lọc thanh khoản.
Rủi ro mất mát liên tụcKhông có chiến lược nào có thể đảm bảo 100% chiến thắng và có thể xảy ra các giao dịch thua lỗ liên tục. Giải pháp: Thực hiện giới hạn giao dịch tối đa mỗi ngày và mức thua lỗ tối đa để ngăn chặn giao dịch quá mức và mất tiền.
Rủi ro quá ưu đãiPhương pháp giải quyết: Sử dụng thử nghiệm ngoài mẫu và thử nghiệm tiến bộ để xác minh tính ổn định của tham số.
Dựa trên phân tích mã, đây là những hướng tối ưu hóa có thể của chiến lược:
Thêm bộ lọc môi trường thị trườngCác cơ chế nhận dạng loại thị trường tích hợp (như ADX hoặc phân tích tỷ lệ biến động), tự động điều chỉnh chiến lược để phù hợp với thị trường xu hướng hoặc ngang. Việc tối ưu hóa như vậy có thể làm giảm đáng kể giao dịch thua lỗ trong môi trường thị trường không phù hợp với giao dịch đường ngắn.
Các tham số tối ưu hóa tự điều chỉnh: Thực hiện cơ chế điều chỉnh động của các tham số, tự động tối ưu hóa ATR nhân và chu kỳ dựa trên hiệu suất thị trường gần đây. Điều này sẽ cho phép chiến lược thích ứng tốt hơn với các điều kiện thị trường thay đổi mà không cần can thiệp bằng tay.
Phân tích giao thông tích hợp: Thêm yêu cầu xác nhận khối lượng giao dịch vào điều kiện nhập, đảm bảo chuyển động giá có đủ hỗ trợ tham gia thị trường. khối lượng giao dịch là chỉ số xác nhận quan trọng của hành vi giá, có thể cải thiện đáng kể chất lượng tín hiệu.
Bộ lọc thời gian: Thực hiện cơ chế lọc dựa trên thời gian giao dịch, chỉ giao dịch trong thời gian thị trường hoạt động nhất và có lợi nhất. Các chú thích mã đề nghị giao dịch trong thời gian khối lượng giao dịch cao (ví dụ: 9:15 AM đến 2:30 PM), điều này có thể được lập trình trực tiếp.
Cải thiện chiến lược dừng lỗKhám phá các chiến lược dừng lỗ phức tạp hơn, chẳng hạn như theo dõi dừng hoặc dừng dựa trên mức hỗ trợ / kháng cự, có thể cung cấp quản lý rủi ro tốt hơn so với ATR đơn giản.
Tối ưu hóa học máy: Xem xét sử dụng thuật toán học máy để xác định các điều kiện thị trường hoạt động tốt nhất cho chiến lược hoặc chọn tham số tối ưu hóa dựa trên dữ liệu lịch sử.
Xác nhận khung thời gian đa dạng: Thêm bộ lọc xu hướng cho khung thời gian cao hơn, đảm bảo giao dịch đường ngắn tuân theo xu hướng lớn hơn, tăng tỷ lệ thắng và tỷ lệ lợi nhuận rủi ro.
Những cải tiến này sẽ giúp chiến lược mạnh mẽ hơn và thích ứng tốt hơn với các môi trường thị trường khác nhau, trong khi vẫn duy trì lợi thế cốt lõi của nó trong việc xác định xu hướng kép và quản lý rủi ro động.
Chiến lược ATR tự thích ứng với động lệnh dừng hai siêu xu hướng là một hệ thống giao dịch đường ngắn được thiết kế tốt, cung cấp tín hiệu giao dịch đáng tin cậy cao bằng cách kết hợp hai chỉ số siêu xu hướng độc lập. Ưu điểm chính của chiến lược này là cơ chế xác nhận kép của nó, giảm đáng kể tín hiệu sai, đồng thời cung cấp quản lý rủi ro hiệu quả thông qua mục tiêu dừng động và lợi nhuận dựa trên ATR.
Chiến lược này đặc biệt phù hợp với các nhà giao dịch ngắn trong ngày, hoạt động tốt nhất trong thời gian giao dịch có tính thanh khoản cao của biểu đồ 3-5 phút. Tuy nhiên, người dùng nên chú ý đến những hạn chế tiềm ẩn trong thị trường giao dịch ngang và xem xét tối ưu hóa các đề xuất thực hiện, chẳng hạn như bộ lọc môi trường thị trường và xác nhận khối lượng giao dịch, để cải thiện hơn nữa hiệu suất của chiến lược.
Với sự điều chỉnh tham số cẩn thận và quản lý rủi ro thích hợp, chiến lược này có thể trở thành một công cụ có giá trị trong kho vũ khí của các nhà giao dịch, đặc biệt là đối với các nhà giao dịch tích cực tìm cách nắm bắt biến động thị trường trong một thời gian ngắn. Các tính năng hiển thị và cảnh báo được xây dựng trong mã cho phép dễ dàng thực hiện và giám sát, và thiết kế mô-đun của chiến lược cũng cung cấp một nền tảng tốt cho tùy chỉnh và cải tiến trong tương lai.
/*backtest
start: 2024-06-04 00:00:00
end: 2025-06-03 00:00:00
period: 3h
basePeriod: 3h
exchanges: [{"eid":"Futures_Binance","currency":"DOGE_USDT"}]
*/
//@version=6
strategy("🔥Scalping Fusion Strategy v6", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10, initial_capital=10000)
// === INPUTS ===
pivotPeriod = input.int(2, "Pivot Point Period", minval=1)
pivotATRPeriod = input.int(10, "Pivot ATR Period")
pivotATRMult = input.float(3.0, "Pivot ATR Multiplier", step=0.1)
classicATRPeriod = input.int(10, "Classic SuperTrend ATR Period")
classicATRMult = input.float(3.0, "Classic SuperTrend ATR Multiplier", step=0.1)
useClassicATR = input.bool(true, "Use Classic ATR Calculation")
stSource = input.source(hl2, "Classic SuperTrend Source")
slATRMult = input.float(1.5, "Stoploss ATR Multiplier")
tpATRMult = input.float(3.0, "Target ATR Multiplier")
// === PIVOT SUPER TREND LOGIC ===
ph = ta.pivothigh(high, pivotPeriod, pivotPeriod)
pl = ta.pivotlow(low, pivotPeriod, pivotPeriod)
var float pivotCenter = na
pivotPoint = not na(ph) ? ph : not na(pl) ? pl : na
if not na(pivotPoint)
pivotCenter := na(pivotCenter) ? pivotPoint : (pivotCenter * 2 + pivotPoint) / 3
pivotATR = ta.atr(pivotATRPeriod)
pivotUpper = pivotCenter - pivotATRMult * pivotATR
pivotLower = pivotCenter + pivotATRMult * pivotATR
var float trailPivotUp = na
var float trailPivotDown = na
var int pivotTrend = 0
trailPivotUp := close[1] > nz(trailPivotUp[1], pivotUpper) ? math.max(pivotUpper, nz(trailPivotUp[1], pivotUpper)) : pivotUpper
trailPivotDown := close[1] < nz(trailPivotDown[1], pivotLower) ? math.min(pivotLower, nz(trailPivotDown[1], pivotLower)) : pivotLower
pivotTrend := close > nz(trailPivotDown[1]) ? 1 : close < nz(trailPivotUp[1]) ? -1 : nz(pivotTrend[1], 1)
pivotSuperTrend = pivotTrend == 1 ? trailPivotUp : trailPivotDown
// === CLASSIC SUPER TREND LOGIC ===
atrST = useClassicATR ? ta.atr(classicATRPeriod) : ta.sma(ta.tr(true), classicATRPeriod)
stUpper = stSource - classicATRMult * atrST
stLower = stSource + classicATRMult * atrST
stUpper1 = nz(stUpper[1], stUpper)
stLower1 = nz(stLower[1], stLower)
stUpper := close[1] > stUpper1 ? math.max(stUpper, stUpper1) : stUpper
stLower := close[1] < stLower1 ? math.min(stLower, stLower1) : stLower
var int stTrend = 1
stTrend := close > stLower1 ? 1 : close < stUpper1 ? -1 : stTrend
classicSuperTrend = stTrend == 1 ? stUpper : stLower
// === ENTRY CONDITIONS ===
buySignal = pivotTrend == 1 and stTrend == 1 and pivotTrend[1] == -1
sellSignal = pivotTrend == -1 and stTrend == -1 and pivotTrend[1] == 1
// === ATR-BASED SL/TP ===
atrSLTP = ta.atr(14)
longSL = close - slATRMult * atrSLTP
longTP = close + tpATRMult * atrSLTP
shortSL = close + slATRMult * atrSLTP
shortTP = close - tpATRMult * atrSLTP
// === STRATEGY ORDERS ===
if (buySignal and strategy.position_size <= 0)
strategy.entry("Long", strategy.long)
strategy.exit("Exit Long", from_entry="Long", stop=longSL, limit=longTP)
if (sellSignal and strategy.position_size >= 0)
strategy.entry("Short", strategy.short)
strategy.exit("Exit Short", from_entry="Short", stop=shortSL, limit=shortTP)
// === VISUALS ===
plot(pivotSuperTrend, title="Pivot SuperTrend", color=pivotTrend == 1 ? color.lime : color.red, linewidth=2)
plot(classicSuperTrend, title="Classic SuperTrend", color=stTrend == 1 ? color.green : color.maroon, linewidth=2, style=plot.style_linebr)
plotshape(buySignal, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY", textcolor=color.white, size=size.small)
plotshape(sellSignal, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL", textcolor=color.white, size=size.small)
// === ALERTS ===
alertcondition(buySignal, title="Buy Alert", message="🔥 DILL Strategy Buy Signal")
alertcondition(sellSignal, title="Sell Alert", message="🔥 DILL Strategy Sell Signal")