Isolated Scroll Container

1. Mô Tả Chiến Lược Orderflow Memory Average

Chỉ báo dạng k-NN so khớp mẫu hình, quét các nến lịch sử để tìm trạng thái thị trường tương tự với hiện tại dựa trên 6 đặc trưng, sau đó xây dựng đường trung bình "thông minh" bằng cách ngoại suy momentum trễ của các match lịch sử gần nhất lên giá hiện tại

1.1 Khái Niệm Chỉ Báo

Chỉ báo này xem "trí nhớ thị trường" như một bài toán tìm kiếm hàng xóm gần nhất (nearest- neighbor). Tại mỗi nến, thị trường hiện tại được mô tả bằng một vector đặc trưng 6 chiều - momentum ngắn hạn (rate of change 1/3/5 nến), RSI, độ biến động dựa trên ATR, và volume tương đối. Chỉ báo sau đó quét ngược tối đa scanDepth nến vào quá khứ, tính cùng vector 6 đặc trưng đó tại mọi điểm lịch sử, và đo mức độ "khác biệt" của mỗi trạng thái lịch sử so với trạng thái hiện tại bằng một tổng chênh lệch tuyệt đối có trọng số. Khoảng cách đó được chuyển thành điểm tương đồng bằng một kernel suy giảm mũ (càng gần thì càng tương đồng, đúng 100% khi khoảng cách bằng 0). topMatches trạng thái lịch sử tương đồng nhất sau đó được dùng để xây dựng một giá trị chiếu duy nhất: giá đóng cửa hiện tại được điều chỉnh theo trung bình có trọng số (theo độ tương đồng) của chính momentum trễ 5 nến của các trạng thái lịch sử đó. Được làm mượt bằng EMA, đây trở thành đường "Market Memory Average", đi kèm một Cloud có hướng và các box đánh dấu chính xác vị trí trên biểu đồ nơi các điểm tương đồng lịch sử đó đã xảy ra.

  • "Đường thông minh" tái hiện momentum trễ, không phải kết quả tương lai: nó không xem điều gì đã xảy ra SAU mỗi lần match lịch sử - nó mượn chính momentum trễ 5 nến của match đó (chính momentum đã khiến nó trở thành một match) và chiếu về phía trước từ giá đóng cửa hiện tại, dựa trên giả định rằng những giai đoạn "có cảm giác" giống nhau có xu hướng tiếp tục di chuyển theo cùng một cách.
  • Trọng số đặc trưng cố định, được tinh chỉnh thủ công: khác với một số chỉ báo k-NN khác của LuxAlgo/Zeiierman tự động tối ưu trọng số đặc trưng, chỉ báo này dùng các hệ số chia/nhân cố định cho từng đặc trưng (được chọn để đưa RSI, ROC%, ATR% và tỷ lệ volume về cùng một thang đo tương đương) - không được đưa ra làm input.
  • Box match lịch sử với cơ chế gộp chồng lấn: khi các cửa sổ lịch sử tương đồng nhất chồng lấn nhau cả về thời gian lẫn giá, box của chúng được gộp lại thành một box kết hợp (cộng dồn direction, nối text hạng/độ tương đồng) thay vì vẽ thành các hình chữ nhật chồng lấn riêng biệt.
  • Cảnh báo hoàn toàn tĩnh: mọi cảnh báo trong kịch bản này đều được định nghĩa qua alertcondition() - tổng cộng 7 điều kiện, tất cả đều có thể chọn riêng lẻ trong hộp thoại tạo cảnh báo tiêu chuẩn của TradingView, không có bất kỳ lệnh gọi alert() động nào trong toàn bộ kịch bản.

1.2 Tính Năng Chỉ Báo

  • Đường Market Memory Average (tuỳ chọn): đường chiếu có trọng số theo độ tương đồng, được làm mượt bằng EMA, tô màu tăng/giảm/trung tính dựa trên độ dốc của chính nó qua một khoảng nhìn lại có thể cấu hình.
  • Memory Cloud (tuỳ chọn): một cloud gradient 4 lớp được vẽ giữa đường Market Memory Average và một đường tham chiếu lệch theo ATR, nằm phía dưới đường khi tăng và phía trên khi giảm, độ trong suốt tăng dần khi càng xa đường.
  • Box Match Lịch Sử (tuỳ chọn): các box được vẽ quanh đúng các nến của những match có thứ hạng tương đồng cao nhất (chỉ trên nến gần nhất), tô màu theo direction ròng lịch sử của chúng, các match chồng lấn được tự động gộp thành một box duy nhất.
  • Nhãn Match Lịch Sử (tuỳ chọn): một nhãn trên mỗi box match hiển thị thứ hạng (#1, #2, ...) và phần trăm tương đồng cho mọi match được gộp vào box đó, cỡ chữ và màu có thể cấu hình.
  • Điều Khiển Đặc Trưng So Sánh: độ dài RSI, độ dài ATR, và độ dài MA Volume có thể cấu hình độc lập, chỉ dùng làm input cho việc tìm kiếm tương đồng (không tự vẽ riêng lên biểu đồ).
  • Cảnh Báo: 7 mục alertcondition() hoàn toàn tĩnh - giá cắt lên/xuống đường trung bình, độ dốc của đường trung bình chuyển sang tăng, giảm, hoặc trung tính, cùng 3 cảnh báo tổ hợp "bất kỳ điều nào ở trên" - mỗi mục đều có thể chọn riêng lẻ trong hộp thoại cảnh báo của TradingView.

1.3 Cách Sử Dụng Chỉ Báo

  • Xem Market Memory Average như một đường nền vọng lại momentum, không phải một mức hỗ trợ/kháng cự theo nghĩa truyền thống - nó nằm ở vị trí mà giá sẽ đạt tới nếu tiếp tục di chuyển theo cách mà các điểm tương đồng lịch sử gần nhất của nó đã di chuyển.
  • Dùng các box match lịch sử để kiểm chứng câu chuyện - nếu các box tập trung quanh những giai đoạn quá khứ rõ ràng tăng hoặc rõ ràng giảm, độ dốc của đường trung bình có cơ sở lịch sử mạch lạc hơn so với khi các box phân tán và trái chiều nhau.
  • Đọc phía của Cloud như một tín hiệu về sức mạnh xu hướng - một cloud rộng, nghiêng mạnh về một phía (hoàn toàn ở dưới trong xu hướng tăng, hoàn toàn ở trên trong xu hướng giảm) phản ánh một độ dốc bền vững, trong khi một cloud liên tục phẳng ra/đổi phía gợi ý độ dốc của đường trung bình đang không ổn định.
  • Tăng đồng thời Độ Sâu Quét Lịch Sử và Độ Nhạy Tương Đồng để có tín hiệu nghiêm ngặt, hiếm hơn - quét sâu hơn tìm được nhiều điểm tương đồng ứng viên hơn, và độ nhạy cao hơn đòi hỏi chúng phải là những match gần hơn mới được tính vào đường trung bình, cả hai cùng đánh đổi độ phản ứng lấy độ tin cậy.
  • Đối chiếu với các cài đặt RSI/ATR/Volume nền tảng nếu các match trông có vẻ sai lệch - vì ba độ dài đặc trưng này trực tiếp quyết định "tương đồng" nghĩa là gì, sự không khớp giữa khung thời gian đặc trưng và chế độ biến động thực tế của biểu đồ có thể khiến các match lịch sử trở nên kém liên quan.

1.4 Cách Chỉ Báo Hoạt Động

Các Input & Vai Trò

  • scanDepth ("Historical Scan Depth" - Độ Sâu Quét Lịch Sử, mặc định: 300, khoảng 20-2000): quét ngược bao nhiêu nến vào quá khứ mỗi nến để tìm các ứng viên tương đồng. Giá trị cao hơn quét nhiều lịch sử hơn nhưng chi phí tính toán mỗi nến tăng tuyến tính theo.
  • topMatches ("Top Similar Matches" - Số Match Tương Đồng Hàng Đầu, mặc định: 5, khoảng 2-20): có bao nhiêu ứng viên có độ tương đồng cao nhất (sau khi sắp xếp) thực sự được dùng để xây dựng trung bình có trọng số, và trên nến cuối cùng, được vẽ thành box match.
  • patternBars ("Historical Pattern Length" - Độ Dài Mẫu Hình Lịch Sử, mặc định: 10, khoảng 3-50): có bao nhiêu nến được đưa vào mỗi box match lịch sử (khoảng high/low bao phủ số nến này, kết thúc tại điểm được match) - đây là tham số chỉ ảnh hưởng hiển thị, không phải một phần của phép tính khoảng cách tương đồng.
  • sensitivity ("Similarity Sensitivity" - Độ Nhạy Tương Đồng, mặc định: 1.5, khoảng 0.1-5.0): hệ số nhân trong số mũ của kernel tương đồng (100 * exp(-distance * sensitivity)) - giá trị cao hơn phạt khoảng cách nặng hơn, nên chỉ những trạng thái lịch sử rất gần mới giữ được độ tương đồng đáng kể.
  • rsiLength / atrLength / volLength ("RSI Length" mặc định 14 / "ATR Length" mặc định 14 / "Volume MA Length" mặc định 20): độ dài nhìn lại cho các đặc trưng RSI, ATR, và volume tương đối dùng cho việc so sánh tương đồng - các giá trị này chỉ dùng làm input khớp mẫu, không bao giờ được tự vẽ riêng.
  • showSmartLine ("Show Market Memory Average" - Hiện Market Memory Average, mặc định: true): bật/tắt đường chiếu - nhưng đồng thời cũng khoá toàn bộ pipeline tính toán bên dưới nuôi dữ liệu cho Cloud (xem ghi chú bên dưới).
  • smartSmoothLength ("Average Smoothing" - Làm Mượt Trung Bình, mặc định: 50, khoảng 1-200): độ dài EMA áp dụng lên giá trị chiếu thô có trọng số theo độ tương đồng để tạo ra đường được vẽ cuối cùng.
  • smartTrendLength ("Slope Detection Length" - Độ Dài Phát Hiện Độ Dốc, mặc định: 20, khoảng 1-200): giá trị hiện tại của đường làm mượt được so sánh với giá trị bao nhiêu nến trước đó để xác định màu tăng/giảm/trung tính.
  • showCloud ("Show Cloud" - Hiện Cloud, mặc định: true) / cloudSpread ("Cloud Spread" - Độ Rộng Cloud, mặc định: 1.5) / cloudTransp ("Cloud Transparency" - Độ Trong Suốt Cloud, mặc định: 65, khoảng 0-95): bật/tắt Memory Cloud, kiểm soát cạnh ngoài của cloud vươn xa bao nhiêu ATR so với đường trung bình, và đặt độ trong suốt cơ sở của nó (4 lớp gradient lệch ±18/±6 so với giá trị cơ sở này).
  • showMatchBoxes ("Show Historical Match Boxes" - Hiện Box Match Lịch Sử, mặc định: true): bật/tắt việc vẽ các box mẫu hình lịch sử trên nến cuối cùng.
  • bullColor / bearColor / neutralColor ("Bullish"/"Bearish"/"Neutral" - Tăng/Giảm/ Trung Tính, mặc định: lime / đỏ / xanh dương): dùng chung để tô màu cho cả trạng thái độ dốc của đường trung bình lẫn direction ròng của các box match lịch sử.
  • showMatchLabels ("Show Historical Match Labels" - Hiện Nhãn Match Lịch Sử, mặc định: true) / matchLabelSizeIn ("Label Text Size" - Cỡ Chữ Nhãn, mặc định: "Small") / matchLabelColor ("Label Text Color" - Màu Chữ Nhãn, mặc định: xám): bật/tắt và tạo kiểu cho các nhãn hạng/phần trăm tương đồng gắn trên mỗi box match.

Các Luồng Logic Chính

🎯 Flow 1: Những Gì Bạn Nhìn Thấy

  • Một đường "Market Memory Average" được làm mượt, tô màu theo độ dốc của chính nó, một Cloud gradient 4 lớp ở phía ngược với hướng độ dốc, và (chỉ được làm mới trên nến gần nhất) các box có màu kèm nhãn hạng/độ tương đồng đánh dấu chính xác vị trí trong lịch sử nơi các điểm tương đồng gần nhất của thị trường hiện tại đã xảy ra.

📐 Flow 2: Xây Dựng Vector Đặc Trưng

  • Mỗi nến tính 6 đặc trưng: rate of change 1/3/5 nến (roc1/roc3/roc5), RSI được chuẩn hoá về thang 0-1, ATR biểu diễn dưới dạng phần trăm của giá đóng cửa, và volume tương đối (volume hiện tại chia cho đường trung bình động của chính nó, mặc định là 1.0 nếu đường trung bình bằng 0). Vì phần quét tương đồng bên dưới đọc các series này theo offset biến thiên lên tới scanDepth nến, mỗi series được khai báo max_bars_back(…, 2000) tường minh để Pine cấp đủ bộ đệm lịch sử cho vòng lặp đọc.

🔍 Flow 3: Quét Lịch Sử Tìm Match

  • Khi đã đủ nến (bar_index > scanDepth + patternBars), danh sách match được xoá và xây dựng lại mỗi nến. Vòng lặp đi ngược từ patternBars + 1 tới min(scanDepth, bar_index - patternBars - 1) nến trước, đọc snapshot 6 đặc trưng của chính nến lịch sử đó qua chỉ số offset series.
  • Với mỗi điểm lịch sử, một khoảng cách chênh lệch tuyệt đối có trọng số được tính: chênh lệch ROC1 ÷2, chênh lệch ROC3 ÷4, chênh lệch ROC5 ÷6, chênh lệch RSI ×2, chênh lệch ATR% ÷2, chênh lệch volume tương đối ÷1.5. Các hệ số chia/nhân này là hằng số cố định được chọn để đưa khoảng giá trị đặc trưng của mỗi loại về cùng một thang đo tương đương (RSI trong khoảng 0-1 nên được khuếch đại; ROC5 thường có độ trải rộng lớn nhất nên bị giảm nhiều nhất).
  • Tổng khoảng cách được đưa vào kernel tương đồng dạng mũ: similarity = 100 * exp(-distance * sensitivity) - các trạng thái giống hệt nhau đạt điểm 100%, và độ tương đồng suy giảm mượt mà khi các trạng thái càng khác biệt, với sensitivity kiểm soát tốc độ suy giảm đó.
  • Mỗi ứng viên cũng ghi lại momentum của chính nó (chính ROC 5 nến trễ của nến lịch sử đó) và một dấu direction (+1/-1/0) được suy ra từ dấu của momentum đó - đây là yếu tố sau này quyết định cả lực đẩy của đường chiếu lẫn màu tăng/giảm/trung tính của các box match.

⚖️ Flow 4: Xây Dựng Chiếu Trung Bình Có Trọng Số

  • Sau khi quét xong, tất cả ứng viên được sắp xếp giảm dần theo độ tương đồng và topMatches ứng viên hàng đầu được giữ lại. Giá trị momentum trễ của chúng được lấy trung bình, có trọng số theo chính điểm tương đồng của mỗi match (những match có độ tương đồng cao hơn kéo trung bình về phía momentum của chính chúng mạnh hơn).
  • Momentum trung bình có trọng số đó được áp dụng lên giá đóng cửa hiện tại - close * (1 + avgWeightedMomentum / 100) - tạo ra giá trị "đường thông minh" thô, chưa làm mượt cho nến hiện tại. Giá trị này là na bất cứ khi nào showSmartLine tắt hoặc không tìm thấy match nào.

🧱 Flow 5: Vẽ Box Match Lịch Sử (Chỉ Nến Cuối)

  • Chỉ khi barstate.islast là true: mọi box/nhãn đã vẽ trước đó bị xoá, và (nếu showMatchBoxes bật) mỗi top match nhận được một box ứng viên bao phủ khoảng high/low thực tế của cửa sổ patternBars nến, đặt đúng tại vị trí lịch sử thật của nó.
  • Trước khi tạo một đối tượng box thực sự, mỗi ứng viên được kiểm tra với các ứng viên đã tích luỹ trước đó cả về chồng lấn thời gian lẫn chồng lấn giá; nếu cả hai đều chồng lấn, hai box được gộp làm một (mở rộng biên thời gian/giá, nối text hạng/độ tương đồng, cộng dồn direction) thay vì vẽ thành hai box riêng biệt.
  • Sau khi gộp xong, mỗi box cuối cùng được tô màu tăng/giảm/trung tính theo dấu của direction cộng dồn của nó, và (nếu showMatchLabels bật) nhận một nhãn với text hạng/độ tương đồng đã nối, đặt phía trên hoặc dưới box tuỳ theo direction ròng đó.

📈 Flow 6: Làm Mượt, Độ Dốc & Tô Màu

  • Giá trị đường thông minh thô được làm mượt bằng EMA với độ dài smartSmoothLength. Độ dốc của nó được đo bằng chênh lệch giữa giá trị làm mượt hiện tại và giá trị smartTrendLength nến trước đó; dấu của chênh lệch đó chọn màu tăng/giảm/trung tính, dùng chung cho cả chính đường lẫn Cloud về sau.

☁️ Flow 7: Memory Cloud

  • Một mức tham chiếu được đặt cách đường làm mượt cloudSpread lần ATR, ở phía ngược với hướng độ dốc (dưới đường khi tăng, trên đường khi giảm, trùng với đường khi hoàn toàn phẳng). Ba mức trung gian được nội suy tại 25%/50%/75% trên đường tới mức tham chiếu đó, và bốn lệnh gọi fill() riêng biệt tô các khoảng giữa các mức liên tiếp với độ trong suốt tăng dần khi càng xa đường - tạo ra một gradient mờ dần thay vì một dải màu phẳng.

🔔 Flow 8: Cảnh Báo

  • Cả 7 điều kiện cảnh báo đều được định nghĩa bằng alertcondition() : giá cắt lên/xuống đường trung bình đã làm mượt, độ dốc chuyển sang tăng, giảm, hoặc trung tính (mỗi loại được phát hiện dưới dạng edge-trigger so với trạng thái nến trước), cùng 3 tổ hợp tiện lợi "bất kỳ điều nào" (bất kỳ lần cắt nào, bất kỳ lần đổi màu nào, bất kỳ cảnh báo nào). Vì tất cả đều là tĩnh, mỗi mục xuất hiện như một tuỳ chọn có thể chọn riêng trong hộp thoại tạo cảnh báo của TradingView - không cần dùng "Any alert() function call" ở đây.
Ghi chú triển khai - tắt đường cũng làm câm luôn Cloud: similaritySmartLine chỉ nhận giá trị thực khi showSmartLine bật (ngược lại nó bị ép về na mỗi nến). Tuy nhiên, Cloud lại được xây dựng hoàn toàn từ smoothedSmartLine (chính EMA của giá trị đó) và có công tắc showCloud của riêng nó, trông có vẻ độc lập. Trên thực tế, tắt "Show Market Memory Average" trong khi vẫn để "Show Cloud" bật sẽ làm cạn nguồn dữ liệu của Cloud luôn, vì EMA bên dưới không có gì khác ngoài na để làm mượt - vì vậy hai công tắc này thực chất không độc lập với nhau, dù nằm ở hai nhóm input khác nhau và có vẻ điều khiển hai phần hiển thị không liên quan.

Đầu Ra & Vai Trò Sử Dụng

  • Đường Market Memory Average: tín hiệu định hướng chính, ngoại suy momentum trễ của các điểm tương đồng lịch sử gần nhất lên giá hiện tại.
  • Memory Cloud: một thước đo trực quan về độ bền/sức mạnh xu hướng qua độ rộng và phía mà nó nằm so với đường.
  • Box & nhãn match lịch sử: dấu vết bằng chứng - chính xác những nến quá khứ nào đã dẫn dắt đường trung bình hiện tại và chúng tương đồng đến mức nào.
  • Cảnh báo: 7 mục alertcondition() hoàn toàn tĩnh (xem Flow 8), mỗi mục đều có thể chọn riêng lẻ trong hộp thoại cảnh báo của TradingView.
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