1. Mô tả Chiến Lược Retest Machine RSI
Một oscillator dựa trên RSI có khả năng "học" từ chính lịch sử của nó: mỗi cây nến được lấy 8 đặc trưng (feature) từ RSI, tìm những nến quá khứ giống nhất bằng thuật toán k-nearest-neighbors, rồi biến kết quả thực tế của chúng thành một thiên hướng được lọc qua Rank/Confidence, một trailing stop thích ứng, và các tín hiệu Long/Short
1.1 Concept của chỉ báo
Một RSI thông thường chỉ cho bạn biết "momentum hiện đang ở mức 72." Chỉ báo này đặt một câu hỏi khác: "những lần gần đây momentum trông giống thế này, điều gì đã thực sự xảy ra sau đó?" Nó được xây dựng trên ý tưởng đằng sau học máy k-nearest-neighbor (k-NN, "k láng giềng gần nhất"): mô tả mỗi cây nến bằng một tập nhỏ các đặc điểm số ("feature"), giữ một bộ nhớ chạy liên tục gồm hàng ngàn đặc điểm của các nến quá khứ cùng với việc giá thực sự đã làm gì sau đó, và khi một nến mới xuất hiện, tìm những nến lịch sử trông giống nhất và để kết quả thực tế của chúng "bỏ phiếu" cho việc điều gì có khả năng xảy ra lần này.
- 8 feature mỗi nến, đều xuất phát từ RSI: thay vì so sánh các nến bằng giá thô, cỗ máy mô tả mỗi nến bằng 8 con số tính từ RSI - mức RSI, momentum của nó, gia tốc của nó, khoảng cách tới trung tính, thứ hạng phần trăm, độ biến động của chính nó, chênh lệch nhanh/chậm, và một chỉ số "regime" đã làm mượt. Cùng nhau, 8 con số này tạo thành "dấu vân tay" của cây nến đó.
- Một ngân hàng bộ nhớ tự cập nhật: mỗi khi một nến đóng cửa, "dấu vân tay" của nó từ horizonBars nến trước sẽ được gán nhãn vĩnh viễn bằng những gì giá thực sự đã làm trong khoảng thời gian đó (một kết quả thực, đã quan sát được - không phải suy đoán) rồi được lưu lại. Theo thời gian, ngân hàng này trở thành một lịch sử "setup → kết quả" được cá nhân hoá cho đúng mã và khung thời gian bạn đang xem.
- Tự điều chỉnh (tuỳ chọn): cỗ máy có thể tự động tìm ra feature nào trong 8 feature đã từng phân tách tốt nhất giữa setup thắng và setup thua (dùng một kỹ thuật thống kê chuẩn gọi là Fisher discriminant), rồi dựa nhiều hơn vào các feature đó - thay vì bạn phải tự đoán trọng số cố định bằng tay.
- Hai đầu ra từ một cỗ máy duy nhất: cùng một "kết quả đọc" k-NN của thị trường điều khiển cả một đường oscillator "ML RSI" (trong pane riêng của chỉ báo) lẫn một trailing stop thích ứng cộng với việc tô màu nến/trend cloud trên chart giá - với tín hiệu vào lệnh Long/Short chỉ bắn ra khi setup vượt qua cả ngưỡng chất lượng (Rank) lẫn ngưỡng chắc chắn (Confidence).
1.2 Chức năng của chỉ báo
- Đường ML RSI (trong pane riêng của chỉ báo): một phiên bản làm mượt nhẹ của RSI gốc, được nghiêng nhẹ theo hướng mà cỗ máy analog hiện đang thiên vị. Màu của nó pha trộn giữa màu bear và bull dựa theo mức giá trị, cùng các vùng tô gradient làm nổi bật vùng quá mua (>70) / quá bán (<30).
- RSI Signal Line (tuỳ chọn): một đường trung bình động có thể cấu hình (SMA/EMA/SMMA/WMA/VWMA, hoặc SMA kèm Bollinger Bands) vẽ chồng lên ML RSI, dùng làm tín hiệu cắt (crossover) kiểu cổ điển.
- ML Adaptive Supertrend (trên chart giá): một đường trailing-stop mà khoảng cách tới giá không cố định - nó thu hẹp lại khi cỗ máy rất tin tưởng và nới rộng ra khi không chắc chắn hoặc khi thị trường đang chop (sideway). Bao gồm hiệu ứng phát sáng (glow) tuỳ chọn, các chấm nhỏ đánh dấu đảo chiều, và một "trend cloud" nhiều lớp mềm mại giữa đường stop và giá (glow và cloud luôn bật bất cứ khi nào Supertrend được hiển thị - không có công tắc riêng để tắt chúng).
- Tô màu nến (tuỳ chọn): tô màu các nến thật theo hướng hiện tại của Supertrend, giúp đọc nhanh mà không cần nhìn vào pane oscillator.
- Nhãn tín hiệu Long/Short (tuỳ chọn): các tam giác chỉ xuất hiện khi một cú đảo chiều vượt qua cả ngưỡng Rank lẫn Confidence, mọi bộ lọc đang bật, và thời gian chờ (cooldown) - nên ít hơn nhiều so với số lần đảo chiều thô.
- Alert: 6 điều kiện alert tĩnh có thể chọn (Long/Short/Any Signal, Flip Lên/Xuống/ Any Flip) cộng thêm 4 alert động phong phú hơn có gắn trực tiếp số Rank và Confidence sống vào nội dung tin nhắn.
1.3 Cách dùng chỉ báo
- Coi nhãn Long/Short là đầu ra chính: chúng đã được lọc qua toàn bộ cỗ máy - sự đồng thuận của các analog, sự thuận theo xu hướng, sức khoẻ biến động, tránh chop, và một cooldown - nên chúng cố ý hiếm hơn và có độ tin cậy cao hơn hẳn một cú cắt RSI thô.
- Theo dõi ML Supertrend để nắm bối cảnh xu hướng lớn hơn, độc lập với việc đã có tín hiệu bắn ra hay chưa - nó có thể đang trong xu hướng tăng (nến xanh) ngay cả khi cỗ máy chưa tìm thấy setup tăng nào đủ điều kiện (xem mục 1.4 để hiểu vì sao hai kết quả đọc này tách biệt).
- Dùng nội dung alert động để phân loại tín hiệu mà không cần mở chart: các số Rank/Confidence gắn sẵn trong đó cho phép bạn đánh giá độ tin cậy ngay từ thông báo.
- Tăng Min Rank / Min Confidence để có ít tín hiệu hơn nhưng chất lượng cao hơn; giảm xuống nếu cỗ máy quá im ắng so với phong cách của bạn.
- Để Auto-Optimize Weights luôn bật để tự thích nghi theo mã/chế độ thị trường bạn đang giao dịch; chỉ chuyển sang Feature Weights thủ công nếu bạn có lý do cụ thể muốn nhấn mạnh một đặc điểm RSI hơn các đặc điểm khác.
- Cho cỗ máy thời gian "khởi động": cả ngân hàng bộ nhớ lẫn bộ tự tối ưu trọng số đều cần một số lượng nến đã gán nhãn tối thiểu trước khi hoạt động đầy đủ (xem mục 1.4) - ở giai đoạn đầu trên một chart mới, Rank/Confidence và tần suất tín hiệu nên được kỳ vọng hoạt động khác so với khi ngân hàng đã "chín".
1.4 Cách hoạt động của chỉ báo
Đầu vào & vai trò
- priceSrc ("Price Source", mặc định: close): chuỗi giá mà mọi feature RSI được dựng từ đó. Chuyển sang hl2/ohlc4 sẽ làm mượt nhiễu từ râu nến trên toàn bộ cỗ máy.
- rsiBase ("Base RSI Length", mặc định: 14, tối thiểu 2): chu kỳ RSI cốt lõi. Một RSI nhanh (nửa độ dài này) và một RSI chậm (gấp đôi độ dài này) cũng được tính từ đó, chỉ để dựng feature "chênh lệch nhanh/chậm". Thấp hơn (7-10) → nhạy hơn, nhiều tín hiệu hơn. Cao hơn (20-30) → mượt hơn, ít tín hiệu hơn nhưng cân nhắc kỹ hơn.
- memoryDepth ("Memory Depth (bars)", mặc định: 500, khoảng 80-5000): số lượng nến đã gán nhãn trong quá khứ mà ngân hàng giữ lại để tìm analog. Ví dụ: ở mức 500, khi nến gán nhãn thứ 501 được thêm vào, nến cũ nhất sẽ bị loại bỏ. Tăng lên 1000+ trên khung thời gian cao hơn; giảm (150-300) trên chart intraday nhanh để quên các chế độ thị trường cũ nhanh chóng.
- kNeighbors ("Analog Count (k)", mặc định: 8, khoảng 1-64): số lượng khớp lịch sử gần nhất bỏ phiếu cho nến hiện tại. k nhỏ (5-8) → sắc bén nhưng dễ giật. k lớn (12-20) → đồng thuận mượt hơn, tốt hơn cho thị trường nhiễu.
- showMarks ("Show Signal Markers", mặc định: true): hiện/ẩn tam giác vào lệnh ▲/▼.
- paintBars ("Candle coloring", mặc định: true): tô màu nến theo màu chế độ (regime) của Supertrend. Thuần tuý trực quan.
- gateRank ("Min Rank to Signal", mặc định: 60, khoảng 0-100): Setup Rank tối thiểu (xem Flow 7) mà một cú đảo chiều phải đạt được để trở thành tín hiệu hiển thị/có thể alert. Cao hơn → tín hiệu hiếm hơn, tin cậy cao hơn.
- gateConf ("Min Confidence to Signal", mặc định: 50, khoảng 0-100): điểm Confidence tối thiểu cũng phải đạt được (cả hai ngưỡng đều bắt buộc, không phải một trong hai).
- useTrendGate ("Trend Gate", mặc định: true): khi bật, thiên hướng của cỗ máy chỉ có thể chuyển sang Long trong khi ML Supertrend đang ở chế độ uptrend, hoặc sang Short trong khi đang downtrend. Tắt để cho phép thiên hướng ngược xu hướng/mean-reversion.
- useVolBand ("Volatility Band", mặc định: true) / volBandLo ("Min Vol Rank", mặc định: 20, khoảng 0-100): chỉ cho phép thiên hướng cập nhật khi thứ hạng phần trăm 100-nến của ATR nằm giữa volBandLo và một trần cố định là 85 - tức là không quá im ắng cũng không quá biến động dữ dội.
- useChop ("Chop Filter", mặc định: true): khi bật, một kết quả đọc choppy/đi ngang (sức mạnh xu hướng dưới một ngưỡng cắt nội bộ) vừa chặn thiên hướng cập nhật vừa nới rộng dải của Supertrend thích ứng. Lưu ý: ngay cả khi TẮT, việc chấm điểm Rank vẫn phạt độ chop thô (xem Flow 7) - công tắc này chỉ điều khiển việc chop có chủ động chặn tín hiệu và nới dải hay không, chứ không quyết định việc chop có ảnh hưởng tới Rank hay không.
- atrFactor ("Learning Sensitivity (×ATR)", mặc định: 0.5, tối thiểu 0, bước 0.1): ngưỡng bội số ATR dùng để quyết định liệu cú di chuyển giá về sau của một nến lịch sử có được tính là thắng/thua có ý nghĩa hay không khi dựng ngân hàng bộ nhớ. Thấp (0.2-0.4) → học từ nhiều cú di chuyển nhỏ/nhiễu hơn. Cao (0.8-1.5) → chỉ học từ những cú di chuyển lớn, sạch hơn.
- autoWeightsOn ("Auto-Optimize Weights", mặc định: true): cho phép cỗ máy tự học tầm quan trọng của mỗi feature từ ngân hàng đã gán nhãn thay vì dùng trọng số thủ công bên dưới. Khi bật, 8 input trọng số thủ công bị làm mờ và không có tác dụng gì trong tính toán.
- autoSpeed ("Adaptation Speed", mặc định: 1, khoảng 0.005-1.0): tốc độ trọng số đã học trôi dần về giá trị mới tính mỗi nến (một hệ số trộn kiểu EMA). Thấp → trọng số chậm, ổn định. Cao → trọng số bám sát dữ liệu mới nhanh nhưng có thể giật. Chỉ hoạt động khi Auto-Optimize đang bật.
- wVal / wSlp / wAcc / wMid / wPct / wChn / wSpr / wReg ("RSI Value / Slope / Acceleration / Midpoint Dist / Percentile / Volatility / Fast-Slow Spread / Regime", tất cả mặc định: 1.0): trọng số tầm quan trọng thủ công cho từng feature trong 8 feature, chỉ dùng khi Auto-Optimize tắt. Tăng một trọng số khiến phép đo khoảng cách quan tâm nhiều hơn tới việc khớp đúng đặc điểm đó khi tìm analog.
- showSt ("Show ML Supertrend", mặc định: true): hiện/ẩn đường Supertrend, glow, chấm đảo chiều, và trend cloud. Quan trọng: đây là công tắc chỉ ảnh hưởng hiển thị - hướng xu hướng bên dưới vẫn được tính và vẫn điều khiển Trend Gate cùng việc tô màu nến ngay cả khi công tắc này tắt.
- stSrc ("Supertrend Source", mặc định: hl2): chuỗi giá dùng để dựng các dải.
- stMultBase ("ATR Multiplier", mặc định: 1.5, tối thiểu 0.5, bước 0.1): khoảng cách dải cơ bản tính theo đơn vị ATR, trước khi độ thích nghi ML điều chỉnh nó. Thấp hơn → stop chặt hơn, nhiều đảo chiều hơn. Cao hơn → stop rộng hơn, đi theo xu hướng lâu hơn.
- stMlResp ("ML Band Adaptivity", mặc định: 1, khoảng 0-1): mức độ mạnh mà sự tin tưởng của cỗ máy định hình lại độ rộng dải. 0 = một Supertrend hệ số cố định thuần tuý (không có ảnh hưởng ML nào). 1 = ảnh hưởng ML tối đa (dải có thể gần như gấp đôi độ rộng khi sự tin tưởng thấp).
- maTypeInput ("Type", mặc định: SMA): loại đường trung bình động của RSI Signal Line, hoặc "None" để ẩn nó.
- maLengthInput ("Length", mặc định: 14): độ dài nhìn lại của đường tín hiệu. bbMultInput ("BB StdDev", mặc định: 2.0): độ rộng Bollinger Band, chỉ dùng khi Type là "SMA + Bollinger Bands".
- sigBull/sigBear, trailBull/trailBear, rsiBull/rsiBear, smoothLineCol/bbAreaCol: điều khiển màu cho nhãn tín hiệu, Supertrend/cloud, ML RSI, và đường tín hiệu/vùng tô BB tương ứng. Thuần tuý về hình thức.
Các khối logic chính
🎯 Flow 1: Những gì bạn thấy — Hai "chế độ" (regime) đọc độc lập
- Chỉ báo này thực ra theo dõi hai kết quả đọc hướng riêng biệt có thể không thống nhất với nhau: (1) stDir, hướng của chính đường trailing-stop ML Supertrend - riêng cái này điều khiển việc tô màu nến, trend cloud, và bản thân đường Supertrend; và (2) stanceState, thiên hướng đã qua lọc của riêng cỗ máy analog - riêng cái này điều khiển việc kích hoạt tín hiệu Long/Short.
- Ví dụ: Supertrend có thể đã chuyển xanh (uptrend, stDir=1) trong khi stanceState vẫn còn 0 hoặc thậm chí -1, đơn giản vì cỗ máy k-NN chưa tìm được setup tăng nào vượt qua các gate Trend/Volatility/Chop. Trong tình huống đó bạn sẽ thấy nến tô màu tăng nhưng không có tín hiệu long nào - đây là hành vi được thiết kế như vậy, không phải lỗi.
- Đường ML RSI (trong pane oscillator riêng) là đầu ra trực quan thứ ba: RSI thô được đẩy lệch một chút theo sự tin tưởng hiện tại của cỗ máy, sau đó làm mượt nhẹ - xem Flow 8.
🧬 Flow 2: Biến giá thành 8 Feature RSI (mỗi nến)
- Ba RSI được tính từ priceSrc: RSI gốc (độ dài rsiBase), một RSI nhanh (nửa độ dài), và một RSI chậm (gấp đôi độ dài). Chỉ RSI gốc nuôi trực tiếp hầu hết các feature; RSI nhanh/chậm chỉ nuôi đúng một feature (spread).
- Mỗi feature trong 8 feature là một con số, hầu hết được chuẩn hoá về khoảng gần 0-1 bằng một hàm trợ giúp co giãn min-max một giá trị so với đỉnh/đáy chạy của chính nó trong cửa sổ 100 nến (nên một feature luôn mang ý nghĩa gần đúng "điều này cực đoan tới mức nào, so với hành vi gần đây của chính nó" chứ không phải một con số thô tuỳ tiện): value (mức RSI ÷ 100), slope (thay đổi RSI 3 nến, đã chuẩn hoá), accel (thay đổi của slope đó - tức momentum đang tăng tốc hay giảm dần), mid (khoảng cách từ RSI 50, 0=trung tính, 1=cực đoan), pct (thứ hạng phần trăm của chính RSI trong 100 nến gần nhất), churn (độ biến động của chính RSI, đã chuẩn hoá), spread (RSI nhanh trừ RSI chậm, đã chuẩn hoá), và regime (EMA 20 nến của RSI so với 50, đã chuẩn hoá).
- Cùng nhau, 8 con số này là "dấu vân tay" của cây nến này - thứ mà mọi so sánh lịch sử đều dựa vào.
🏦 Flow 3: Dựng & Gán nhãn Ngân hàng Bộ nhớ
- Bạn không thể biết một setup có "hiệu quả" hay không cho tới khi một khoảng thời gian trôi qua - vì vậy cỗ máy chờ horizonBars (4) nến sau mỗi nến đã xác nhận, rồi đo xem giá thực sự đã di chuyển bao xa từ nến đó tới hiện tại, so với một ngưỡng theo tỉ lệ ATR (atrFactor × ATR của nến đó).
- Ví dụ: atrFactor=0.5, ATR=$10 tại thời điểm đó → dải ngưỡng = $5. Một cú di chuyển tới +$12 (hơn 2×$5) gán nhãn nến đó "tăng mạnh" (+3); +$7 (hơn 1×$5 nhưng dưới 2×) gán nhãn "tăng" (+2); +$2 (dương nhưng dưới dải) gán nhãn "tăng yếu" (+1); và các ngưỡng âm đối xứng gán nhãn các kết quả giảm -1/-2/-3, với đúng $0 di chuyển được gán nhãn trung lập (0).
- Sau khi gán nhãn, các feature từ 4 nến trước của nến đó (không phải feature hôm nay) được ghép với kết quả này và thêm vào ngân hàng bộ nhớ dưới dạng một dòng - nên ngân hàng chỉ bao giờ chứa lịch sử đã được xác nhận đầy đủ, không bị repaint. Ngân hàng bị giới hạn ở memoryDepth dòng, dòng cũ nhất bị xoá trước khi đầy.
⚖️ Flow 4: Học Feature nào quan trọng (Auto-Optimize Weights)
- Khi được bật và một khi ngân hàng có ít nhất 60 dòng đã gán nhãn, cỗ máy tách mọi dòng trong ngân hàng có kết quả rõ ràng là bull (nhãn > 0) hoặc bear (nhãn < 0) thành hai nhóm (các dòng có kết quả trung lập bị loại khỏi phép tính này), sau đó với mỗi feature trong 8 feature, tính một điểm Fisher discriminant - một thước đo thống kê chuẩn cho việc một con số đơn lẻ phân tách hai nhóm tốt tới đâu: nó so sánh khoảng cách giữa trung bình của hai nhóm với mức độ phân tán nội bộ của mỗi nhóm. Một feature mà các giá trị setup bull và giá trị setup bear tập trung chặt quanh hai trung bình rất khác nhau sẽ được điểm cao; một feature mà các giá trị chồng lấn nhiều giữa setup bull và bear sẽ được điểm thấp.
- 8 điểm số sau đó được co giãn lại sao cho feature phân tách tốt nhất được trọng số 10, các feature khác co giãn theo tỉ lệ, với mọi feature được đảm bảo ít nhất một trọng số sàn 0.5 (không feature nào bị đưa về 0 hoàn toàn).
- Các trọng số mới tính này không thay thế thẳng trọng số đang chạy - chúng được trộn dần vào qua autoSpeed (một bước kiểu EMA: trọng số mới = trọng số cũ + speed × (trọng số mới tính − trọng số cũ)), nên việc chấm trọng số tiến triển mượt mà thay vì nhảy loạn xạ giữa các nến.
🔍 Flow 5: Tìm & Bỏ phiếu với k Analog Gần nhất
- Mỗi nến, cỗ máy so sánh "dấu vân tay" 8-feature của hôm nay với các dòng trong ngân hàng (chỉ mỗi dòng thứ 4 mới được xét, để tránh các nến lân cận, rất giống nhau lấn át sự đa dạng), tính một khoảng cách có trọng số ("gap") cho mỗi dòng: mỗi trong 8 chênh lệch feature thô trước tiên được đưa qua một hàm làm mềm dựa trên logarit (để một sai lệch quá lớn ở một feature không hoàn toàn áp đảo điểm số), sau đó nhân với trọng số của feature đó và cộng lại.
- kNeighbors dòng có gap nhỏ nhất được giữ lại làm "analog" cho nến này (ít hơn nếu ngân hàng chưa đủ dòng).
- Mỗi analog sau đó bỏ một phiếu có trọng số theo khoảng cách (analog gần hơn có trọng số lớn hơn, dùng trọng số 1÷(1+gap)): lớp kết quả của nó (từ -3 tới +3) đóng góp vào một tổng đang chạy, và riêng biệt vào một "giỏ" trọng số bull hoặc bear tuỳ theo dấu của nó.
- Từ các phiếu bầu này, cỗ máy tính ra: analogScore (trung bình có trọng số của lớp kết quả trên toàn bộ analog - một độ nghiêng bull/bear liên tục), biasDir (+1/-1/0, yêu cầu analogScore vượt một vùng chết ±0.15 trước khi chốt hướng), agreeFrac (bao nhiêu phần trăm tổng trọng số phiếu đồng thuận với hướng đã chọn - thước đo đồng thuận cốt lõi), và gapTight (trung bình các analog được chọn thực sự gần tới mức nào - 1.0 nghĩa là một khớp lịch sử gần như hoàn hảo, 0 nghĩa là chỉ giống một cách lỏng lẻo).
🌦️ Flow 6: Bối cảnh thị trường & ML Adaptive Supertrend
- Tách biệt với cỗ máy analog, một phép kiểm tra sức mạnh xu hướng đơn giản so sánh EMA 5 nến với EMA 50 nến tương đối theo ATR; dưới một ngưỡng cắt nội bộ, nến đó được đánh dấu "choppy" - kết quả đọc chop thô này luôn tồn tại, nhưng chỉ chủ động chặn tín hiệu/nới dải khi công tắc Chop Filter đang bật.
- Sự tin tưởng của cỗ máy (từ analogScore, đã làm mượt) kết hợp với gapTight và agreeFrac thành một điểm "drive" 0-1 duy nhất - điểm này bị cắt xuống còn 35% giá trị bất cứ khi nào chop được phát hiện (và công tắc đang bật).
- Điểm drive này trực tiếp quyết định dải ATR của Supertrend rộng tới đâu: ở drive tối đa, dải nằm đúng tại stMultBase × ATR (chặt nhất); ở drive bằng 0, chúng nới rộng tới stMultBase × (1 + stMlResp) × ATR. Các dải sau đó ratchet theo kiểu Supertrend cổ điển (stop phía long chỉ bao giờ di chuyển lên trong khi giá giữ trên nó, stop phía short chỉ bao giờ di chuyển xuống), và stDir đảo chiều khi giá đóng cửa xuyên qua dải đối diện.
🏅 Flow 7: Biến kết quả đọc thành Rank & Confidence
- Rank (0-100, "setup này tốt tới đâu"): dựng từ tối đa ~95 điểm thô trải khắp sự đồng thuận analog (25), độ chặt của analog (15), cấu trúc slope/cực đoan RSI (tối đa 15), thuận theo xu hướng (10), sức khoẻ biến động (10), phù hợp regime (10), đồng thuận hướng RSI ngắn hạn (5), và độ "chín" của thiên hướng (tối đa 5) - trừ đi một khoản phạt tối đa 20 điểm cho độ choppy thô, một kết quả đọc đã cực đoan (stretched), một cú đảo chiều sớm/giật, hoặc quá ít analog tìm được. Lưu ý: khoản phạt chop ở đây luôn dùng kết quả đọc chop thô, bất kể công tắc Chop Filter có đang bật hay không.
- Confidence (0-100, "cỗ máy chắc chắn tới đâu"): một tổ hợp riêng biệt, trọng số chủ yếu nghiêng về sự đồng thuận analog (40) và độ chặt (25), cộng thêm độ chín của thiên hướng (tối đa 15) và độ khớp slope (10), trừ đi một khoản phạt 15 điểm riêng cho một cú đảo chiều sớm/giật và một khoản phạt cho việc quá ít analog.
- Cả hai điểm số đều bằng 0 bất cứ khi nào cỗ máy hoàn toàn không có thiên hướng nào (biasDir=0).
🚦 Flow 8: Từ Thiên hướng đến Tín hiệu
- stanceState (thiên hướng có tính bền vững của riêng cỗ máy, tách biệt với Supertrend) chỉ chuyển sang một hướng mới ở nến mà biasDir đồng thuận và mọi gate đang bật (Trend/ Volatility/Chop) đều pass; nếu một gate thất bại, thiên hướng đơn giản là giữ nguyên giá trị cuối cùng thay vì reset về trung lập.
- Một "flip" được phát hiện ở nến mà thiên hướng thực sự đổi giá trị. Flip đó chỉ trở thành một tín hiệu hiển thị/có thể alert nếu, thêm vào đó, Rank ≥ gateRank VÀ Confidence ≥ gateConf, nến đã hoàn toàn xác nhận/đóng cửa, và ít nhất 5 nến đã trôi qua kể từ tín hiệu trước (cooldown).
- Đây là bộ lọc 2 tầng: bản thân thiên hướng đã đòi hỏi các điều kiện qua gate để đổi hướng, rồi cú flip kết quả lại bị lọc lần thứ hai bởi Rank và Confidence trước khi được phép thực sự đánh dấu/alert.
🎨 Flow 9: Chi tiết Hiển thị
- Đường "ML RSI" được vẽ ra không phải là RSI thô dùng để khớp feature nội bộ - đó là RSI thô bị dịch chuyển một khoản "tilt" nhỏ (tối đa khoảng ±18 điểm) tỉ lệ theo cả sự tin tưởng của cỗ máy lẫn một phiên bản đã làm mượt của Rank, rồi được làm mượt nhẹ thêm lần nữa để hiển thị.
- Trend cloud được vẽ thành 4 lớp tô ngày càng trong suốt hơn giữa đường Supertrend và giá, tất cả được tô màu theo chính hướng của Supertrend (khớp với việc tô màu nến).
- Tam giác tín hiệu được đặt tại đáy thấp nhất/đỉnh cao nhất trong 5 nến (Long/Short) thay vì ngay tại nến tín hiệu, giữ cho chúng luôn rõ ràng về mặt trực quan, không bị lẫn vào các râu nến gần đó; mỗi cái được vẽ hai lần (một hình nhỏ đặc + một hình lớn hơn bán trong suốt) để tạo hiệu ứng "hào quang" mềm mại.
🔔 Flow 10: Alert
- Điều kiện tĩnh (chọn được trong hộp thoại alert của TradingView): Long Signal, Short Signal, Any Signal, Trend Flip Up, Trend Flip Down, Any Trend Flip.
- Alert động (tự bắn ra ở các nến đã xác nhận, không cần chọn trong hộp thoại): nội dung phong phú hơn cho tín hiệu Long/Short có gắn trực tiếp số Rank và Confidence sống cùng ticker và khung thời gian vào nội dung, và nội dung đơn giản hơn (chỉ ticker + khung thời gian) cho các lần đảo chiều xu hướng.
Đầu ra & vai trò trong sử dụng
- ML RSI + Signal Line: một góc nhìn oscillator momentum, được thông tin nhẹ nhàng bởi thiên hướng đã học của cỗ máy, dùng được với cách đọc quá mua/quá bán và crossover cổ điển.
- ML Adaptive Supertrend + tô màu nến + cloud: bối cảnh xu hướng/chế độ thị trường rộng, độc lập với việc một tín hiệu vào lệnh đã thực sự bắn ra hay chưa.
- Nhãn Long/Short + Rank/Confidence: đầu ra vào lệnh đã qua lọc, đã chấm điểm chất lượng - tín hiệu hành động chính của chỉ báo.
- Alert: cả alert gốc nhanh gọn lẫn thông báo có bối cảnh phong phú để theo dõi mà không cần ngồi canh chart trực tiếp.


