Isolated Scroll Container

1. Mô tả Auto-Length Moving Average + Trend Signals Strategy

Một đường trung bình động mà chính độ dài của nó co giãn theo từng nến, dẫn dắt bởi một điều kiện thị trường do bạn chọn (độ dốc, RSI, khối lượng, Bollinger, MACD, Stochastic, CCI, momentum, hoặc không dùng điều kiện nào cả). Phía trên đường thích ứng đó là một đường thứ hai, mượt hơn, chỉ dùng để phán đoán hướng và tô màu cho các vòng tròn, tam giác cùng một "điểm xu hướng" 0–100 hiển thị trong hai bảng trên chart.

1.1 Concept của chỉ báo

Một đường trung bình động có độ dài cố định luôn là một sự đánh đổi: ngắn = nhanh nhưng dễ bị nhiễu trong vùng đi ngang, dài = mượt nhưng vào trễ khi có xu hướng. Câu trả lời của chỉ báo này là một đường trung bình tự đổi độ dài ngay trước mắt bạn: nó bắt đầu ngắn (nhanh) và dài dần (mượt dần) với mỗi nến mà một điều kiện được chọn vẫn tiếp tục đồng ý với hướng nó đã có, rồi bật ngược lại về ngắn ngay khi điều kiện đó đổi chiều hoặc trở nên trung lập.

  • Một bộ đếm dẫn dắt độ dài. Một bộ đếm bắt đầu từ 1 và độ dài của trung bình động luôn là Base MA Length + (counter − 1), giới hạn bởi Max Dynamic Length. Chừng nào điều kiện được chọn vẫn chỉ cùng một hướng từ nến này sang nến khác, bộ đếm cứ tăng và đường trung bình dài ra, mượt hơn. Ngay khi điều kiện đổi hướng hoặc trung lập, bộ đếm rơi về 1 và đường trung bình bật về độ dài cơ sở (nhanh).
  • Chín cách để quyết định "có còn đồng ý không". Bạn chọn một trong: độ dốc của chính đường trung bình, vùng RSI, khối lượng so với trung bình của chính nó, phá vỡ Bollinger Band, cắt MACD, vùng Stochastic, vùng CCI, dấu của momentum (tốc độ thay đổi), hoặc None — tắt hẳn cơ chế này và để lại một đường trung bình độ dài cố định.
  • Bộ đếm có thể tăng mãi, hoặc đung đưa qua lại. Mặc định nó cứ tăng (chỉ bị chặn bởi Max Dynamic Length). Chế độ "Reverse Counter" tuỳ chọn làm nó tăng tới một trần (Counter Break) rồi đếm ngược về 1 rồi tăng lại — một hình răng cưa lặp lại — để đường trung bình không bao giờ bị kẹt mãi ở độ dài mượt nhất.
  • Một đường thứ hai, vô hình, đảm nhận việc phán đoán xu hướng. Đường trung bình thích ứng được đưa qua một bộ lọc làm mượt hai cực để tạo ra một đường "xu hướng đã lọc" chậm hơn. Đường này — không phải đường trung bình được vẽ — mới là thứ chỉ báo theo dõi để quyết định thị trường đang tăng hay giảm, kéo dài bao nhiêu nến liên tiếp, và dùng để tô màu cho các vòng tròn, tam giác và cả chính đường trung bình.
  • Một điểm số 0–100 theo dõi bộ đếm đã đi được bao xa. Mỗi nến, tiến độ của bộ đếm hướng tới Counter Break được đổi thành phần trăm; chỉ báo còn nhớ điểm cao nhất và điểm trung bình chạy kể từ khi chart được tải.

Tóm lại: một đường trung bình động thích ứng tự nới rộng khi điều kiện kéo dài một chiều, và tự thu hẹp ngay khi điều kiện đó gãy — cộng thêm một lớp xu hướng chậm hơn, các dấu xác nhận và hai bảng thông tin dựng trên nền đó.

1.2 Chức năng của chỉ báo

  • Hiển thị:
    • Đường MA động (dày 2px), tô màu xanh lá (lime) khi một nhịp tăng đã được xác nhận đủ lâu, đỏ khi một nhịp giảm đã được xác nhận đủ lâu, còn lại vàng (mặc định trong suốt 50%).
    • Một vùng tô mềm giữa đường MA và một EMA(10) vô hình của giá, tô xanh lá khi giá đang ở trên MA (kể từ lần cắt gần nhất) hoặc đỏ khi ở dưới, trong suốt 70%.
    • Vòng tròn đặt cách đường xu hướng đã lọc (vô hình) một khoảng ATR(200) phía trên hoặc dưới khi một xu hướng đã được xác nhận đủ lâu — màu theo một dải chuyển từ vàng sang xanh lá / vàng sang đỏ, đậm dần theo thời gian nhịp đó kéo dài.
    • Tam giác đánh dấu đúng cây nến mà một trạng thái xu hướng được xác nhận bắt đầu, kèm hai hình sao chép mờ bên dưới mỗi tam giác (khác kích thước/độ trong suốt) tạo hiệu ứng quầng sáng nhẹ.
    • Bảng Trend Strength (trên-phải, tuỳ chọn): Reset Condition, Counter Value, Trend Strength (0–100), Highest Trend Score, Average Trend Score.
    • Bảng Reset Mode Guidance (dưới-phải, tuỳ chọn): một hàng duy nhất mô tả Reset Condition đang được chọn — phù hợp với ai và lợi ích chính của nó.
  • Alert: Chỉ báo KHÔNG có lệnh alertcondition() nào. Mọi thứ dựa trên sự kiện đều phải tự bổ sung.

1.3 Cách dùng chỉ báo

  • Đọc hành vi độ dài của MA như một thước đo "chế độ" thị trường. Một đường cứ bám sát giá và liên tục reset nghĩa là điều kiện được chọn cứ đổi chiều — thường là giai đoạn nhiễu hoặc đi ngang. Một đường rõ ràng mượt ra và trễ hơn nghĩa là điều kiện đã đồng ý với một hướng trong một nhịp dài — thường là xu hướng kéo dài.
  • Chọn Reset Condition khớp với cách bạn đọc thị trường. Slope hợp với trader theo xu hướng; RSI/Stochastic/CCI hợp với trader canh vùng quá mua/quá bán; Volume hợp với trader breakout muốn thấy tham gia trên mức trung bình; Bollinger hợp với trader biến động; MACD/Momentum hợp với trader theo dõi gia tốc; None biến chỉ báo thành một SMA độ dài cố định, hữu ích làm mốc so sánh.
  • Bật "Reverse Counter After Break" nếu bạn không muốn đường trung bình mắc kẹt mãi ở độ dài mượt nhất suốt cả một xu hướng kéo dài — nó sẽ xoay vòng độ dài xuống rồi lên lại thay vì vậy. Để tắt nếu muốn mượt tối đa trong các nhịp dài, ổn định.
  • Coi màu MA và vòng tròn/tam giác là hai lớp xác nhận chỉnh riêng biệt, không phải một. Màu đường phản ứng theo ngưỡng số nến riêng của nó ("Trend Confirmation Length") còn vòng tròn/tam giác theo một ngưỡng khác ("Trending Periods") — chúng có thể không khớp nhau về việc một xu hướng đã "được xác nhận" hay chưa. Kiểm tra cả hai cài đặt nếu thấy hai thứ này lệch nhau.
  • Dùng con số Trend Strength như "bộ đếm đã tiến được bao xa tới Counter Break", không phải thước đo độ mạnh của cú đi giá. 0 nghĩa là bộ đếm vừa reset; 100 nghĩa là vừa chạm (hoặc vượt) Counter Break.
  • Nhớ rằng Highest/Average Trend Score là thống kê trọn đời — chúng cộng dồn từ nến đầu tiên của lịch sử chart, không phải từ một cửa sổ gần đây, nên là mốc tham chiếu, không phải chỉ số "hôm nay".
  • Chỉ dùng bảng dưới-phải như lời nhắc cho chế độ đang hoạt động — đổi Reset Condition Type để đọc mô tả của từng chế độ; bảng không liệt kê cả chín chế độ cùng lúc.

1.4 Cách hoạt động của chỉ báo

Đầu vào & vai trò — Dynamic MA

  • baseLen ("Base MA Length", số nguyên, mặc định 50, min 1): độ dài ngắn nhất mà trung bình động có thể đạt được — giá trị của nó ngay khi bộ đếm reset về 1. Ví dụ: ở 50, một MA vừa reset là một SMA(50) đơn giản; ở 20 sẽ là SMA(20) nhanh hơn ở cùng thời điểm.
  • maxDynLen ("Max Dynamic Length", số nguyên, mặc định 350, min 1): trần cứng mà độ dài không bao giờ vượt qua, dù bộ đếm tăng cao tới đâu. Ví dụ: với baseLen = 50, độ dài chạm 350 khi bộ đếm đạt 301, và giữ nguyên 350 với mọi giá trị bộ đếm cao hơn.
  • counterbreak ("Counter Break (Reverse Threshold)", số nguyên, mặc định 70, min 1): giá trị bộ đếm mà tại đó sự tăng trưởng dừng lại. Khi Reverse Counter tắt, con số này thực chất chỉ là một mốc tham chiếu (không tự nó chặn tăng trưởng — xem Flow 3). Khi Reverse Counter bật, đây là đỉnh của hình răng cưa: bộ đếm tăng 1→70, rồi đếm ngược 70→1, rồi tăng lại, chừng nào hướng của điều kiện còn giữ nguyên.
  • reverseCounter ("Reverse Counter After Break", ô tick, mặc định tắt): tắt = bộ đếm tăng không quay đầu (cho tới khi maxDynLen chặn độ dài); bật = hành vi răng cưa nói trên.
  • trending_col ("Trend Confirmation Length", số nguyên, mặc định 10, min 1): số nến liên tiếp tăng (hoặc giảm) của đường xu hướng đã lọc cần có trước khi màu của chính đường MA chuyển sang xanh lá/đỏ. Một input riêng với "Trending Periods" bên dưới — hai cái có thể không khớp nhau (xem ghi chú kỹ thuật).
  • upcol / dncol / neucol (ba ô màu, cùng một hàng, không có tên, mặc định xanh lá / đỏ / vàng trong suốt 50%): ba màu của chính đường MA động. Chỉ đổi màu.

Đầu vào & vai trò — Dynamic Reset Mode

  • resetConditionType ("Reset Condition Type", danh sách chọn, mặc định Slope, các lựa chọn Slope / RSI / Volume / Bollinger / MACD / Stochastic / CCI / Momentum / None): chọn một trong chín quy tắc ở Flow 2 để quyết định bộ đếm có tiếp tục tăng hay không. Chỉ nhóm input khớp với lựa chọn của bạn mới thực sự ảnh hưởng tới đầu ra; các nhóm còn lại đơn giản không được dùng. None giữ bộ đếm mãi ở 1, biến cả chỉ báo thành một SMA(baseLen) cố định.

Đầu vào & vai trò — chín nhóm điều kiện

  • Slope: slopeOB ("Slope Length", mặc định 50) — số nến về trước mà MA động được so với chính nó để xác định độ dốc.
  • RSI: rsiLength (mặc định 14), và một hàng quá mua/quá bán ghép đôi, trong đó ô đầu tiên ("RSI Overbought/Oversold", mặc định 60) giữ giá trị quá mua rsiOB và ô thứ hai không có tên ngay bên cạnh (mặc định 40) giữ giá trị quá bán rsiOS — bố cục "ô không tên mang tooltip" này lặp lại ở Stochastic và CCI bên dưới.
  • Volume: volSmaLength ("Volume SMA Length", mặc định 20) — mặc dù tên gọi như vậy, nó thực ra được dùng làm độ dài của một WMA (xem ghi chú kỹ thuật về vế so sánh cố định ẩn).
  • Bollinger: bbLength (mặc định 200) và bbMult ("Bollinger Multiplier", mặc định 1.1) — độ dài nhìn lại và hệ số độ lệch chuẩn của một Bollinger Band tính trên close.
  • MACD: macdFast (mặc định 50), macdSlow (mặc định 100), macdSignal (mặc định 25) — lưu ý những con số này lớn hơn nhiều so với MACD sách giáo khoa 12/26/9, khiến đây là một cách đọc chậm, kiểu khung thời gian cao.
  • Stochastic: stochLength (mặc định 50) và cặp quá mua/quá bán stochOB / stochOS (mặc định 60 / 40) — đây là %K thô, không có lớp làm mượt nào thêm.
  • CCI: cciLength (mặc định 100) và cặp cciOB / cciOS (mặc định 10 / −10) — một dải hẹp sát số 0, không phải mức "cực đoan" ±100 kinh điển; xem ghi chú về việc nó đổi dấu thường xuyên tới đâu.
  • Momentum: momentumLength (mặc định 140) — độ dài nhìn lại của phép tính tốc độ thay đổi; chỉ dấu của nó (dương/âm) được dùng.

Đầu vào & vai trò — Trend & Signals / Table Display

  • length ("Trend smoother", mặc định 20): chu kỳ đưa vào bộ lọc làm mượt hai cực biến MA động thành đường "xu hướng đã lọc" chậm hơn. Trước/sau: 10 → đường đã lọc nhanh hơn, nhạy hơn; 50 → chậm hơn, phẳng hơn.
  • trendSmoothing ("Smoothing Weight", mặc định 0.8, khoảng 0.1–1.0): hệ số giảm chấn của cùng bộ lọc đó. Ví dụ: càng gần 1.0, bộ lọc càng bám sát MA (ít trễ, dao động nhiều hơn); càng gần 0.1, nó càng mượt và chậm rõ rệt.
  • trending ("Trending Periods", mặc định 20, min 1): số nến liên tiếp tăng (hoặc giảm) của xu hướng đã lọc cần có trước khi vòng tròn và tam giác được bật. Một ngưỡng riêng với "Trend Confirmation Length" ở trên, vốn chỉ ảnh hưởng tới màu của đường MA.
  • trendUp_col / trendDn_col / grad_col (ba ô màu, mặc định xanh lá / đỏ / vàng): các màu đầu dải chuyển và màu trung lập/khởi đầu cho vòng tròn và tam giác — một bộ màu riêng với upcol/dncol/neucol ở trên, dù mặc định tình cờ trùng nhau.
  • showGuidanceTable ("Show Reset Mode Guidance Table", mặc định bật) và trendStrengthTable ("Show Trend Strength Table", mặc định bật): bật/tắt độc lập hai bảng. Chỉ là hiển thị.

Hằng số cố định trong code (KHÔNG phải input)

  • Khoảng đặt vòng tròn/tam giác: luôn là một ATR(200) phía trên hoặc dưới đường xu hướng đã lọc — không chỉnh được.
  • Dải chuyển màu: độ đậm xanh lá/đỏ của vòng tròn và tam giác luôn chạy giữa 10 và 50 nến liên tiếp, cố định trong code — độc lập với cả "Trend Confirmation Length" lẫn "Trending Periods".
  • Vế cố định của điều kiện Volume: điều kiện "Volume" luôn so SMA(volume, 20) cố định với WMA dựa trên volSmaLength — con số 20 không bao giờ theo input.
  • Đường phụ vô hình: visualclose = EMA(close, 10), vẽ trong suốt 100%, chỉ tồn tại để neo vùng tô giữa nó và đường MA.
  • Độ lệch của dấu bắt đầu: các tam giác đánh dấu bắt đầu xu hướng được vẽ với offset = -1 (lùi một nến).
  • Bố cục bảng: bảng trên-phải có 4 cột × 6 hàng (một hàng để trống cho thoáng) ở position.top_right; bảng dưới-phải có 3 cột × 2 hàng ở position.bottom_right. Cả hai chỉ được vẽ lại ở nến cuối.
  • Giới hạn: max_lines_count = 500, max_boxes_count = 500, max_bars_back = 500 — những trần rộng rãi mà các plot/shape/bảng của script không bao giờ dùng gần tới.

Các khối logic chính

⏱️ Flow 0 — Thứ tự làm việc ở mỗi cây nến

  • ① tính một MA tạm thời dùng bộ đếm của nến trước → ② đọc điều kiện đã chọn thành currentState dựa trên MA tạm thời đó → ③ cập nhật bộ đếm từ currentState → ④ tính lại MA chính thức với bộ đếm đã cập nhật (đây là cái được vẽ) → ⑤ làm mượt nó thành đường xu hướng đã lọc → ⑥ đếm các nhịp tăng/giảm liên tiếp và đặt màu → ⑦ cập nhật vùng tô close-so-với-MA → ⑧ vẽ vòng tròn/tam giác → ⑨ cập nhật điểm xu hướng và hai bảng.

📐 Flow 1 — MA động tạm thời (trước khi nến này cập nhật)

  • dynLen = min(baseLen + (counter − 1), maxDynLen) và ma = SMA(close, dynLen), dùng bất kỳ giá trị counter nào còn lại từ nến trước đó (đây là giá trị chạy liên tục, không bị reset ở đây). ma tạm thời này chính là thứ điều kiện "Slope" ở Flow 2 so sánh — bản thân bộ đếm chỉ được cập nhật sau đó, ở Flow 3.

🎯 Flow 2 — Đọc điều kiện đã chọn thành currentState

  • Đúng một trong chín quy tắc dưới đây chạy, tuỳ theo Reset Condition Type. Mỗi quy tắc cho ra +1 (tăng/đồng ý), −1 (giảm/đồng ý theo chiều kia) hoặc 0 (trung lập).
  • Slope: ma > ma[slopeOB] → 1, ma < ma[slopeOB] → −1, còn lại 0. Lưu ý: ma[slopeOB] không phải một mức SMA(50) cố định cách 50 nến — đó là bất kỳ giá trị nào mà chính chuỗi thích ứng này từng có 50 nến trước, được tính với bất kỳ độ dài nào mà bộ đếm đã gán tại thời điểm đó (xem ghi chú kỹ thuật).
  • RSI: rsiValue > rsiOB → 1 (VD RSI 64 > 60), rsiValue < rsiOS → −1 (VD RSI 35 < 40), còn lại 0 (vùng 40–60 là trung lập).
  • Volume: SMA(volume, 20) > WMA(volume, volSmaLength) → 1, ngược lại → −1, còn lại 0.
  • Bollinger: close > bbUpper → 1, close < bbLower → −1, còn lại 0 (nằm trong hai dải băng là trung lập).
  • MACD: macdLine > signalLine → 1, ngược lại → −1, còn lại 0.
  • Stochastic: %K > stochOB → 1 (VD 65 > 60), %K < stochOS → −1 (VD 32 < 40), còn lại 0.
  • CCI: CCI > cciOB → 1 (VD CCI 25 > 10), CCI < cciOS → −1 (VD CCI −18 < −10), còn lại 0. Với dải mặc định ±10 — hẹp hơn nhiều so với mức "cực đoan" ±100 thường thấy — CCI tương đối ít khi dừng đúng ở 0, nên chế độ này có xu hướng thường xuyên có hướng (khác 0), nhưng vẫn có thể đổi dấu khá dễ dàng từ nến này sang nến kế.
  • Momentum: ROC(close, 140) > 0 → 1, < 0 → −1, chỉ bằng 0 trong trường hợp hiếm đúng bằng không.
  • None: luôn luôn 0.

🔁 Flow 3 — Cập nhật bộ đếm

  • Nếu currentState = 0 (trung lập, ở bất kỳ chế độ nào — kể cả luôn luôn, ở "None"): bộ đếm reset về 1 và hướng răng cưa reset về "đang tăng". Điều này xảy ra bất kể cài đặt Reverse Counter.
  • Nếu currentState khác với trạng thái của nến trước (đổi hướng, VD từ +1 sang −1): cũng reset — bộ đếm về 1.
  • Nếu currentState khớp với trạng thái của nến trước (điều kiện vẫn đồng ý):
    • Reverse Counter tắt: counter += 1 ở mỗi nến như vậy, không giới hạn (bản thân độ dài vẫn bị chặn bởi maxDynLen). Ví dụ: 40 nến liên tiếp đồng ý → bộ đếm 40 → dynLen = 50 + 39 = 89.
    • Reverse Counter bật: bộ đếm tăng 1 → counterbreak (VD 1 → 70), rồi chuyển sang đếm ngược về 1, rồi chuyển lại và tăng tiếp — một hình răng cưa lặp lại, chừng nào điều kiện còn đồng ý. Ví dụ (counterbreak = 70): bộ đếm đi 1,2,…,70 (dynLen 50→119), rồi 69,68,…,1 (dynLen về lại 50), rồi tăng tiếp — một chu kỳ khoảng 138 nến, bị reset hoàn toàn nếu điều kiện có lúc nào đó không đồng ý hoặc trung lập.

📏 Flow 4 — MA động chính thức (cái được vẽ)

  • dynLen và ma được tính lại với bộ đếm đã cập nhật từ Flow 3 — giá trị thứ hai này mới là cái được vẽ trên chart và dùng ở mọi nơi phía sau.

🌊 Flow 5 — Làm mượt MA thành đường xu hướng đã lọc

  • Một bộ lọc thông thấp hai cực (length và trendSmoothing) được áp lên ma chính thức, tạo ra filteredTrend — trung bình của một tầng nội bộ nhanh và một tầng chậm hơn dựng từ tầng đó. Đường này không bao giờ được vẽ; nó chỉ tồn tại để dẫn dắt hướng, tô màu và đặt vị trí dấu.

📈 Flow 6 — Đếm các nhịp tăng/giảm liên tiếp và dải chuyển màu

  • isUptrend = filteredTrend > filteredTrend[2], isDowntrend = filteredTrend < filteredTrend[2] — so với giá trị cách hai nến trước, không phải một.
  • Nếu isUptrend: trendUp += 1 và trendDown reset về 0 ngay nến đó. Nếu isDowntrend: hình ảnh đối xứng. Ở một nến phẳng (cả hai đều sai — filteredTrend == filteredTrend[2] đúng bằng nhau), cả hai bộ đếm đơn giản giữ nguyên giá trị hiện tại — một khoảng dừng, không phải reset.
  • trendColor: trong một nhịp tăng, một dải chuyển từ vàng (trendUp = 10 trở xuống) tới xanh lá (trendUp = 50 trở lên), cố định trong khoảng 10–50 đó bất kể cài đặt "Trending Periods" hay "Trend Confirmation Length"; dải đối xứng (vàng → đỏ) áp dụng trong nhịp giảm; nến phẳng giữ màu vàng trơn.

🚦 Flow 7 — Hai phép kiểm "xu hướng đã xác nhận" riêng biệt

  • Cho vòng tròn và tam giác: confirmedUptrend = (trendDown ≥ trending) và confirmedDowntrend = (trendUp ≥ trending). Dù tên gọi, confirmedUptrend được dẫn dắt bởi bộ đếm nhịp giảm và ngược lại — nhưng các hình dùng chúng lại được đặt tên theo chiều ngược lại một lần nữa ("Trending Up" được vẽ khi confirmedDowntrend đúng, "Trending Down" khi confirmedUptrend đúng), nên xét theo nghĩa thị trường thông thường, các tên cuối cùng lại đúng: một vòng tròn tên "Trending Up" thực sự xuất hiện khi trendUp (bộ đếm nhịp tăng) đã đạt trending nến. Xem ghi chú kỹ thuật để biết chuỗi đầy đủ.
  • Cho màu của chính đường MA: confirmedUptrend_col = (trendUp ≥ trending_col) và confirmedDowntrend_col = (trendDown ≥ trending_col) — cặp này được đặt tên theo cách thông thường (Up dùng bộ đếm tăng). trending_col ("Trend Confirmation Length", mặc định 10) thường nhỏ hơn nhiều so với trending ("Trending Periods", mặc định 20), nên màu của đường MA thường xác nhận một xu hướng sớm hơn nhiều so với vòng tròn/tam giác.
  • Vị trí: circleup = filteredTrend + ATR(200), circledn = filteredTrend − ATR(200). Vòng tròn "Trending Up" nằm dưới đường (circledn), vòng tròn "Trending Down" nằm trên (circleup) — tương ứng kiểu đặt hỗ trợ và kháng cự.
  • Tam giác đánh dấu bắt đầu xu hướng: PosTrendStart = confirmedUptrend and not confirmedUptrend[1] (nến đầu tiên mà bộ đếm nhịp giảm chạm ngưỡng) vẽ một tam giác chỉ xuống tại circleup, đặt tên "Trend Up"; NegTrendStart là hình đối xứng, một tam giác chỉ lên tại circledn, đặt tên "Trend Dn". Mỗi dấu đi kèm hai hình sao chép lớn hơn, trong suốt hơn, chỉ để tạo hiệu ứng phát sáng.

🖍️ Flow 8 — Xu hướng close-so-với-MA riêng biệt (chỉ dùng cho màu vùng tô)

  • Một cờ đúng/sai đơn giản trend chuyển sang true khi ta.crossover(close, ma) và false khi ta.crossunder(close, ma) — hoàn toàn độc lập với hệ thống xu hướng-đã-lọc/bộ-đếm ở trên. Nó chỉ quyết định vùng tô giữa đường MA và visualclose vô hình có màu xanh lá hay đỏ. Một cờ trend_change được tính song song nhưng không bao giờ được dùng ở đâu khác trong script.

🧮 Flow 9 — Điểm xu hướng và hai bảng

  • trendScore = (counter − 1) / (counterbreak − 1) × 100. Ví dụ: counter = 36, counterbreak = 70 → (35 ÷ 69) × 100 ≈ 51.
  • highestTrendScore và averageTrendScore cộng dồn từ nến đầu tiên của lịch sử chart và không bao giờ được reset — đây là thống kê trọn đời, được tính lại ở mỗi nến, và chỉ đơn giản hiển thị tại nến cuối.
  • Bảng trên-phải (hiện khi trendStrengthTable bật): Reset Condition, Counter Value, Trend Strength, Highest Trend Score, Average Trend Score (có một hàng đệm ở giữa).
  • Bảng dưới-phải (hiện khi showGuidanceTable bật): hàng tiêu đề cộng một hàng dữ liệu duy nhất mô tả chỉ Reset Condition đang được chọn — người dùng điển hình của nó ("Best For") và lợi ích chính, lấy từ chín mô tả soạn sẵn trong script.

Đầu ra & vai trò trong sử dụng

  • Đường MA động + vùng tô: thước đo chế độ xu hướng/đi ngang mà chính độ mượt của nó cho biết điều kiện đã chọn đồng ý với chính nó bao lâu.
  • Vòng tròn và tam giác: một lớp xác nhận chỉnh riêng, đánh dấu các nhịp một chiều kéo dài và cây nến bắt đầu của chúng.
  • Hai bảng: một bản đọc trực tiếp về chế độ reset hiện tại, tiến độ của bộ đếm và các cực trị lịch sử của nó, cộng một dòng nhắc về việc chế độ đang hoạt động phù hợp với gì.
💡 Ghi chú kỹ thuật quan trọng:
  • Có hai cài đặt "bao nhiêu nến xác nhận xu hướng" khác nhau, cộng thêm một cái thứ ba cố định trong code. Màu đường MA dùng trending_col (mặc định 10); vòng tròn/tam giác dùng trending (mặc định 20); độ đậm của dải màu vòng tròn/tam giác chạy trên một khoảng cố định 10–50 nến mà không input nào chạm tới. Ba cái này rất dễ bị nhầm là một cài đặt.
  • "confirmedUptrend"/"confirmedDowntrend" được đặt tên ngược chiều so với "confirmedUptrend_col"/"confirmedDowntrend_col". Cặp đầu (vòng tròn/tam giác) được dẫn dắt bởi bộ đếm nhịp ngược lại so với tên gợi ý (confirmedUptrend đọc trendDown); cặp thứ hai (màu đường MA) được đặt tên theo cách thẳng thắn. Tên các plotshape của cặp đầu ("Trending Up"/"Trending Down"/"Trend Up"/"Trend Dn") lại được viết khớp với hướng thị trường thật, không theo tên biến — nên khi đọc source, hãy tin vào tên hình và hướng của trendColor, không phải tên biến thô.
  • ma[slopeOB] là một mục tiêu di động, không phải một mức nhìn lại độ dài cố định. Vì chuỗi ma được vẽ có bất kỳ độ dài động nào mà bộ đếm đã gán ở mỗi nến lịch sử, "giá trị MA 50 nến trước" có thể đã được tính với một độ dài hoàn toàn khác tại thời điểm đó (bất kỳ đâu từ baseLen tới maxDynLen). Vì vậy phép so sánh của điều kiện Slope không phải "độ dốc 50 nến của một SMA(50)" theo kiểu so sánh ngang hàng.
  • Vế SMA của điều kiện Volume bỏ qua input Volume SMA Length. Nó luôn so SMA(volume, 20) cố định với WMA(volume, volSmaLength) theo input — đổi input chỉ dịch một vế của phép so sánh.
  • "RSI/Stochastic/CCI Overbought/Oversold" thực chất là hai input chung một hàng. Ô có tên giữ giá trị quá mua; ô trống ngay bên cạnh (mang tooltip chi tiết) giữ giá trị quá bán. Dễ bị bỏ sót trong Settings.
  • Dải mặc định của CCI là ±10, không phải ±100 thông thường. Đây là một vùng hẹp sát số 0, nên với cài đặt mặc định, currentState của chế độ CCI có thể đổi dấu thường xuyên hơn các chế độ khác với mặc định rộng hơn của chúng.
  • Nến phẳng tạm dừng cả hai bộ đếm nhịp mà không reset cái nào. Khi filteredTrend đúng bằng giá trị cách hai nến trước, trendUp và trendDown đều đơn giản giữ nguyên giá trị cuối ở nến đó; các ngưỡng xác nhận đã đạt vẫn giữ nguyên trạng thái đã đạt.
  • Cờ trend close-so-với-MA chỉ tô màu vùng tô. Nó không liên quan tới hệ thống bộ đếm/xu hướng-đã-lọc dẫn dắt màu đường, vòng tròn và tam giác — vùng tô có thể xanh lá trong khi vòng tròn vẫn đang báo hiệu một nhịp giảm, hoặc ngược lại. trend_change được tính nhưng không dùng ở đâu cả.
  • Chọn "None" tắt hẳn cơ chế thích ứng. currentState luôn bằng 0, nên bộ đếm không bao giờ rời khỏi 1 và MA "động" mãi mãi chỉ là một SMA(baseLen) trơn.
  • Cả hai bảng chỉ tính trọn đời/ở nến cuối. Chúng chỉ vẽ dựa trên barstate.islast (chuẩn và như mong đợi với bảng), nhưng riêng highestTrendScore/averageTrendScore phản ánh toàn bộ lịch sử đã tải, không phải một cửa sổ gần đây — trên một chart rất dài, chúng có thể khác khá nhiều so với những gì bộ đếm đã làm gần đây.
Zoom/Pan Layered Image
Background Overlay
− +

Chỉ báo trên vừa hoá thành BOT TRADE — chỉ 1 click AI

📊Chỉ báo gốc
→
🤖AI convert 1-click
→
⚙️Bot tự trade 24/7