Isolated Scroll Container

1. Mô tả RSI Momentum Divergence Zones Strategy

Tìm phân kỳ giữa giá và một chỉ số RSI đặc biệt (RSI tính trên đà tăng/giảm của giá chứ không phải trên giá), rồi biến mỗi phân kỳ thành một vùng giá ngang có thể sống hoặc bị phá.

1.1 Concept của chỉ báo

Chỉ báo dựa trên khái niệm phân kỳ (divergence) quen thuộc: giá lập đỉnh cao hơn nhưng chỉ báo động lượng lại lập đỉnh thấp hơn (hoặc giá lập đáy thấp hơn nhưng chỉ báo lập đáy cao hơn) — dấu hiệu cho thấy nhịp đẩy giá hiện tại đang yếu dần và có thể sắp đảo chiều. Điểm khác biệt nằm ở hai chỗ:

  • Oscillator không phải RSI của giá, mà là RSI của ĐÀ (momentum) giá. Chỉ báo tính trước mom = close − close[10] (giá đóng cửa hiện tại trừ giá đóng cửa 10 nến trước — tức "trong 10 nến qua giá đi được bao xa"), rồi mới đưa chuỗi số đó vào công thức RSI. Nói nôm na: RSI thường đo "giá đang mạnh hay yếu", còn ở đây chỉ báo đo "cái đà của giá đang mạnh lên hay yếu đi" — sớm hơn và nhạy hơn một bậc. Đây cũng là lý do có chữ "Momentum" trong tên.
  • Mỗi phân kỳ không chỉ là một cái nhãn rồi thôi, mà đẻ ra một VÙNG GIÁ sống được. Chỉ báo lấy đúng mức đáy (phân kỳ tăng) hoặc đỉnh (phân kỳ giảm) của cây nến gây ra phân kỳ, kẻ một dải ngang dày tại đó và kéo dài mãi về phía trước chừng nào giá còn tôn trọng mức đó. Khi giá phá hẳn qua, dải bị chuyển thành nét đứt và ngừng kéo dài — người dùng nhìn được ngay mức nào còn hiệu lực, mức nào đã mất.

Niềm tin nền tảng: mức giá nơi đà thị trường "đuối" lần đầu (điểm phân kỳ) là mức mà thị trường ghi nhớ; nó có xu hướng trở thành hỗ trợ (với phân kỳ tăng) hoặc kháng cự (với phân kỳ giảm) cho tới khi bị phá vỡ dứt khoát.

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

  • Hiển thị — trong khung phụ (pane RSI) phía dưới:
    • Đường RSI đổi màu theo giá trị: chuyển dần từ xanh lá ở vùng 30 sang tím ở vùng 70. Lưu ý màu ở đây theo nghĩa "cảnh báo đảo chiều": cao = tím (coi chừng giảm), thấp = xanh (coi chừng tăng).
    • Nền tô gradient giữa đường RSI và mốc 50: phần trên 50 ngả dần sang tím khi tiến về 70, phần dưới 50 ngả dần sang xanh lá khi tiến về 30. Có thêm một đường xám nằm ngang ở mốc 50.
    • Đường nối phân kỳ: một đoạn thẳng nối đáy RSI trước với đáy RSI hiện tại (phân kỳ tăng, màu xanh lá) hoặc nối đỉnh RSI trước với đỉnh RSI hiện tại (phân kỳ giảm, màu tím). Đoạn này chỉ hiện màu khi phân kỳ hợp lệ, còn lại nó vẫn được vẽ nhưng để trong suốt hoàn toàn nên mắt thường không thấy.
    • Nhãn "Bull" / "Bear": một nhãn nền xanh lá chữ trắng chỉ lên (Bull) hoặc nền tím chữ trắng chỉ xuống (Bear), đặt ngay tại điểm đỉnh/đáy RSI gây ra phân kỳ.
  • Hiển thị — trên chart giá (vẽ đè lên nến):
    • Đường nối phân kỳ phía giá: đúng cặp điểm tương ứng với đường nối trong pane RSI, nhưng nối 2 mức đáy (Bull) hoặc 2 mức đỉnh (Bear) trên chart giá — gồm 1 đường mảnh đậm màu và 1 dải dày cùng màu độ mờ 70%.
    • Nhãn chữ "▲ Bull" / "Bear ▼": chữ màu, không có nền bong bóng, đặt tại đúng mức đáy/đỉnh của cây nến phân kỳ.
    • Vùng phân kỳ (Divergence Zone): dải ngang dày (1 đường mảnh + 1 dải nền dày mờ) bắt đầu từ cây nến phân kỳ và liên tục được kéo dài thêm 15 nến về phía trước chừng nào còn hiệu lực. Khi mức bị phá, đường mảnh chuyển sang nét đứt và dừng lại tại nến phá, dải nền dày bị xoá.
  • Alert: Chỉ báo KHÔNG có lệnh alertcondition() nào. Muốn có cảnh báo phải tự tạo alert thủ công trên TradingView dựa vào các plot có sẵn, hoặc bổ sung code.

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

  • Dùng nhãn Bull/Bear làm tín hiệu cảnh báo đảo chiều, KHÔNG phải lệnh vào ngay. Mỗi phân kỳ chỉ được xác nhận trễ 5 nến (chỉ báo phải chờ đủ 5 nến bên phải để chắc chắn đó là một đỉnh/đáy thật). Nhãn xuất hiện ở quá khứ 5 nến, còn giá hiện tại đã đi tiếp — nên hãy coi nó như "vùng này vừa có dấu hiệu đuối", rồi chờ thêm xác nhận từ hành động giá.
  • Giao dịch tại vùng phân kỳ còn hiệu lực. Dải xanh lá đang được kéo dài = mức hỗ trợ còn nguyên; canh mua khi giá hồi về chạm dải. Dải tím đang được kéo dài = kháng cự còn nguyên; canh bán khi giá bật lên chạm dải.
  • Dùng chính sự kiện "dải chuyển nét đứt" làm tín hiệu phá vỡ. Dải xanh biến thành nét đứt nghĩa là nguyên một cây nến đã đóng nằm dưới mức hỗ trợ đó — hỗ trợ mất, phe mua thua ở nhịp này. Ngược lại dải tím đứt nét = kháng cự bị phá, phe bán thua. Nhiều trader coi đây là tín hiệu đảo chiều tư duy (từ canh mua sang canh bán hoặc ngược lại) đáng giá hơn cả tín hiệu phân kỳ ban đầu.
  • Đặt Stop Loss dựa trên chính mức của dải. Vì mức dải = đáy (hoặc đỉnh) của cây nến phân kỳ, nó là một mốc kỹ thuật rõ ràng: vào lệnh mua tại dải xanh → SL đặt dưới mức dải một chút; vào lệnh bán tại dải tím → SL đặt trên mức dải.
  • Đọc vị trí đường RSI để lọc chất lượng phân kỳ. Phân kỳ tăng xảy ra khi RSI đang ở vùng thấp (nền tô xanh đậm, gần 30) đáng tin hơn phân kỳ tăng xảy ra khi RSI lửng lơ quanh 50. Tương tự với phân kỳ giảm ở vùng gần 70.
  • Chỉnh "Qty Divergence Zones" theo phong cách nhìn. Để 10 (mặc định) cho cái nhìn đa tầng nhiều mức; giảm về 2–3 nếu chỉ muốn theo các mức gần nhất và giữ chart sạch.

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

Đầu vào & vai trò

  • rsiLength ("RSI Length", số nguyên, mặc định 14, nhóm Settings): số nến dùng để làm mượt trong công thức RSI. Lưu ý quan trọng: nó được áp lên chuỗi đà giá chứ không phải lên giá. Giảm xuống 7 → đường RSI giật mạnh, chạm 30/70 liên tục, số đỉnh/đáy RSI nhiều hơn → nhiều phân kỳ hơn nhưng nhiễu hơn. Tăng lên 21 → đường mượt, ít đỉnh/đáy, phân kỳ hiếm nhưng chọn lọc hơn. Đây là input DUY NHẤT thay đổi được số lượng và vị trí phân kỳ — mọi tham số khác chỉ liên quan tới hiển thị.
  • enableDivCheck ("Enable Divergence Detection", tick chọn, mặc định BẬT, nhóm Divergence): công tắc tổng của toàn bộ cỗ máy tìm phân kỳ. Tắt đi → chỉ báo thoái hoá thành một oscillator thuần tuý: chỉ còn đường RSI đổi màu, nền gradient và đường 50; biến mất hoàn toàn nhãn Bull/Bear, đường nối phân kỳ (cả 2 phía) và mọi dải vùng giá.
  • showDivLevels ("Show Divergence Zones", tick chọn, mặc định BẬT, nhóm Divergence): chỉ điều khiển riêng phần dải ngang trên chart giá. Tắt đi → vẫn còn nhãn Bull/Bear và đường nối phân kỳ, nhưng không còn dải ngang nào được tạo, kéo dài hay theo dõi. Dùng khi muốn đọc tín hiệu phân kỳ mà không muốn chart bị phủ đầy dải ngang.
  • qtyDivLevels ("Qty Divergence Zones", số nguyên, mặc định 10, nhóm Divergence): số dải còn hiệu lực tối đa được giữ cho MỖI phía. Bull và Bear dùng hai danh sách riêng, nên mặc định 10 nghĩa là tối đa 10 dải xanh + 10 dải tím = 20 dải sống cùng lúc. Khi dải thứ 11 của một phía ra đời, dải CŨ NHẤT của phía đó bị xoá hẳn khỏi chart (cả đường mảnh lẫn dải nền).
  • divBullColor ("Bullish Color", chọn màu, mặc định #33c570 — xanh lá): dùng cho mọi thứ thuộc phe tăng — nhãn Bull, đường nối đáy RSI, đường + dải nền của vùng hỗ trợ, và là màu cực dưới (mốc 30) của đường RSI cũng như của nền gradient phía dưới 50.
  • divBearColor ("Bearish Color", chọn màu, mặc định #ae4ce6 — tím): đối xứng hoàn toàn cho phe giảm, và là màu cực trên (mốc 70).

Hằng số cố định trong code (KHÔNG phải input, muốn đổi phải sửa code)

  • divLookbackL = 5 và divLookbackR = 5: số nến bên trái và bên phải cần có để công nhận một đỉnh/đáy của đường RSI. Vế "5 bên phải" chính là nguyên nhân gây độ trễ 5 nến của mọi tín hiệu.
  • minBarsInRange = 5 và maxBarsInRange = 50: khoảng cách cho phép (tính bằng nến) giữa đỉnh/đáy RSI hiện tại và đỉnh/đáy RSI liền trước. Quá gần hoặc quá xa thì phân kỳ bị loại — tránh so sánh hai điểm chẳng liên quan gì nhau.
  • max_lines_count = 500: khai báo ở dòng đầu, giới hạn tổng số đường kẻ mà chỉ báo được phép tồn tại trên chart cùng lúc.

Các khối logic chính

📊 Luồng 1 — Dựng đường oscillator (mọi nến)

  • Bước 1: rsiSrc = ta.mom(close, 10) — lấy giá đóng cửa hiện tại trừ giá đóng cửa của 10 nến trước. Ví dụ: XAUUSD đóng cửa hôm nay 2650, 10 nến trước đóng 2630 → rsiSrc = +20. Nếu 10 nến trước đóng 2670 → rsiSrc = −20. Đây là một chuỗi số dao động quanh 0, âm được, cho biết "10 nến qua giá đi lên hay xuống và đi bao xa".
  • Bước 2: rsiVal = ta.rsi(rsiSrc, rsiLength) — đưa chính chuỗi số đó vào công thức RSI 14. RSI đo tỉ lệ giữa tổng mức tăng và tổng mức giảm của chuỗi đầu vào, kết quả luôn nằm trong 0–100. Vì đầu vào là "đà giá", nên rsiVal ≈ 70 có nghĩa là đà giá đã liên tục mạnh lên trong nhiều nến gần đây, chứ không phải "giá đang quá mua" theo nghĩa RSI cổ điển.
  • Bước 3: rsiRight = rsiVal[divLookbackR] = giá trị RSI của 5 nến trước. Con số này được dùng ở khắp nơi vì mọi so sánh phân kỳ đều diễn ra tại điểm pivot — mà pivot luôn nằm cách nến hiện tại đúng 5 nến.
  • Vì RSI cần 14 nến và mom cần 10 nến, khoảng 24 nến đầu tiên của chart không có giá trị (na) — không có đường, không có tín hiệu.

🔍 Luồng 2 — Tìm đỉnh/đáy của đường RSI (mọi nến, chỉ khi Enable Divergence Detection bật)

  • foundPL = not na(ta.pivotlow(rsiVal, 5, 5)) — cờ báo "vừa xác nhận xong một ĐÁY của đường RSI". Cơ chế: một nến được coi là đáy khi giá trị RSI tại đó thấp hơn cả 5 nến bên trái lẫn 5 nến bên phải. Vì phải chờ đủ 5 nến bên phải, cờ này chỉ bật lên tại nến thứ 5 SAU đáy thật. Ví dụ: đáy RSI thật nằm ở nến số 100 → tới nến số 105 cờ foundPL mới bật.
  • foundPH — hoàn toàn đối xứng, báo "vừa xác nhận xong một ĐỈNH của đường RSI".
  • Hai cờ này chỉ bật lên ở những nến rời rạc, không phải mọi nến. Chúng là "nhịp đập" điều khiển toàn bộ phần còn lại của chỉ báo.

⚖️ Luồng 3 — Kiểm 3 điều kiện để công nhận phân kỳ (chỉ tại nến có cờ pivot)

  • Phân kỳ TĂNG (Bullish) — cần đủ cả 3:
    • ① RSI tạo đáy cao hơn (Higher Low): rsiRight > ta.valuewhen(foundPL, rsiRight, 1) — so RSI tại đáy hiện tại với RSI tại đáy liền trước. Hàm valuewhen(điều_kiện, giá_trị, 1) nghĩa là "lấy giá trị đó tại lần thứ 2 tính ngược từ hiện tại mà điều kiện đúng" — tức đúng bằng đáy RSI trước đó.
    • ② Giá tạo đáy thấp hơn (Lower Low): low[5] < ta.valuewhen(foundPL, low[5], 1) — giá thấp nhất của cây nến pivot hiện tại phải thấp hơn giá thấp nhất của cây nến pivot trước.
    • ③ Khoảng cách hợp lệ: _inRange(foundPL[1]) — số nến giữa hai lần phát hiện pivot phải nằm trong khoảng 5–50.
    • Ví dụ cụ thể: đáy RSI trước ở nến 80 với RSI = 22 và giá thấp nhất 2600; đáy RSI mới ở nến 110 với RSI = 31 và giá thấp nhất 2585. Kiểm: RSI 31 > 22 ✓ · giá 2585 < 2600 ✓ · khoảng cách 30 nến, nằm trong 5–50 ✓ → Bull được xác nhận, và mức vùng sẽ là 2585.
  • Phân kỳ GIẢM (Bearish) — hoàn toàn đối xứng: RSI tạo đỉnh thấp hơn (rsiRight < đỉnh RSI trước), giá tạo đỉnh cao hơn (high[5] > đỉnh giá trước), và khoảng cách pivot trong 5–50 nến. Mức vùng sẽ là high[5].
  • Nếu chỉ thoả 2/3 điều kiện thì không có gì xảy ra: không nhãn, không dải, đường nối vẫn được vẽ nhưng để trong suốt nên không nhìn thấy.

🎨 Luồng 4 — Vẽ trong pane RSI

  • Đường RSI: tô màu bằng color.from_gradient(rsiVal, 30, 70, xanh, tím) — pha màu tuyến tính, RSI = 30 cho xanh lá thuần, RSI = 70 cho tím thuần, ở giữa là các sắc pha trộn.
  • Nền gradient: hai lệnh fill() chồng lên nhau giữa đường RSI và đường 50 — lệnh thứ nhất tô tím ở mốc 70 và mờ dần về 30, lệnh thứ hai tô xanh ở mốc 30 và mờ dần lên 70. Kết quả: phần nhô lên phía trên 50 ngả tím, phần thụt xuống dưới 50 ngả xanh.
  • Đường nối phân kỳ: lệnh plot(foundPL ? rsiRight : na, offset = −5). Cách hoạt động: giá trị chỉ tồn tại tại những nến có pivot, còn lại là na, và plot tự nối hai giá trị liên tiếp bằng một đoạn thẳng → chính là đoạn nối đáy RSI trước với đáy RSI hiện tại. Tham số offset = −5 dời cả đoạn lùi lại 5 nến để nó nằm đúng trên vị trí pivot thật. Màu đoạn thẳng là xanh khi phân kỳ hợp lệ, còn không thì dùng noneCol (trắng độ trong suốt 100%) — vẫn vẽ nhưng vô hình.
  • Nhãn Bull/Bear: plotshape kiểu labelup (Bull) / labeldown (Bear), đặt tại đúng độ cao rsiRight theo toạ độ tuyệt đối, cũng lùi 5 nến.

🖼️ Luồng 5 — Vẽ đè lên chart giá

  • Lặp lại đúng bộ hình của Luồng 4 nhưng ở phía giá: plot(foundPL ? low[5] : na, offset = −5, force_overlay = true) nối hai mức đáy giá, cộng thêm một bản sao linewidth = 6 với độ mờ 70 để tạo cảm giác "dải" thay vì "đường".
  • Tham số force_overlay = true là thứ cho phép một chỉ báo nằm ở khung phụ vẫn vẽ được lên chart giá chính.
  • Nhãn chữ "▲\nBull" và "Bear\n▼" dùng thủ thuật ngược: nền bong bóng đặt noneCol (vô hình) còn textcolor mới là màu thật → mắt chỉ thấy chữ nổi trên nến, không thấy hộp nhãn.

📐 Luồng 6 — Tạo, nuôi và khai tử các vùng phân kỳ (chỉ khi Show Divergence Zones bật)

  • Tạo: ngay tại nến xác nhận phân kỳ, chỉ báo lấy levelY = low[5] (Bull) hoặc high[5] (Bear) rồi tạo 2 đường nằm ngang cùng mức, cùng đi từ nến pivot (bar_index − 5) tới nến hiện tại: một đường mảnh đậm màu và một đường dày 6px độ mờ 70 làm nền. Cặp này được gói thành một đối tượng và xếp vào cuối hàng đợi (mảng) của phía tương ứng.
  • Giới hạn số lượng: nếu hàng đợi vượt quá qtyDivLevels, phần tử ĐẦU HÀNG (cũ nhất) bị lấy ra và cả 2 đường của nó bị xoá khỏi chart.
  • Nuôi (chạy mỗi nến, duyệt qua toàn bộ hàng đợi): với mỗi vùng, chỉ báo hỏi một câu duy nhất —
    · Vùng Bull: giá cao nhất của nến hiện tại có còn nằm TRÊN mức vùng không?
    · Vùng Bear: giá thấp nhất của nến hiện tại có còn nằm DƯỚI mức vùng không?
    Nếu CÒN → kéo điểm cuối của cả 2 đường tới bar_index + 15, tức nhô ra trước nến hiện tại 15 nến (đây là lý do dải luôn trông như đang "chìa về tương lai").
  • Khai tử: nếu KHÔNG còn (nguyên cây nến đã rơi xuống dưới mức hỗ trợ, hoặc vọt hẳn lên trên mức kháng cự) → điểm cuối của đường mảnh bị chốt lại tại nến hiện tại, chuyển sang nét đứt, dải nền dày bị xoá, và vùng đó bị gỡ khỏi hàng đợi (chỉ báo thôi không theo dõi nữa).
  • Ví dụ theo dòng thời gian: nến 110 xác nhận Bull tại mức 2585 → dải xanh xuất hiện từ nến 105, ngay lập tức kéo tới nến 125. Các nến 111–139 giá vẫn có đỉnh trên 2585 → dải tiếp tục được đẩy sang phải từng nến một. Tới nến 140 giá rơi mạnh, cả cây nến nằm dưới 2585 → dải nền biến mất, còn lại một đường nét đứt xanh chốt tại nến 140. Từ đó vùng này không còn được tính vào 10 vùng đang hoạt động nữa.

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

  • Đường RSI + nền gradient: cảm nhận nhanh đà giá đang tăng tốc hay giảm tốc, và đang ở vùng cực nào — dùng làm bộ lọc chất lượng cho tín hiệu phân kỳ.
  • Nhãn Bull/Bear + đường nối (cả 2 khung): bằng chứng trực quan rằng giá và đà giá đang lệch pha — tín hiệu CẢNH BÁO sớm, có độ trễ cố định 5 nến.
  • Dải phân kỳ đang được kéo dài: mức hỗ trợ/kháng cự còn hiệu lực, dùng làm điểm canh vào lệnh và làm mốc đặt Stop Loss.
  • Dải chuyển nét đứt: tín hiệu mức đã bị phá — dùng làm điều kiện thoát lệnh, hoặc làm tín hiệu đảo chiều hướng giao dịch.
💡 Lưu ý kỹ thuật quan trọng:
  • Oscillator KHÔNG phải RSI tiêu chuẩn — đừng đọc nó theo kiểu 30/70 cổ điển. Đầu vào là ta.mom(close,10), nên rsiVal = 75 không có nghĩa "giá quá mua" mà là "đà giá 10-nến đang liên tục nới rộng". Đường này dao động quanh 50 nhanh và đối xứng hơn RSI giá rất nhiều, chạm vùng cực thường xuyên hơn. Hệ quả: số lượng pivot RSI (và do đó số phân kỳ) nhiều hơn đáng kể so với một chỉ báo phân kỳ RSI thông thường.
  • "Đáy thấp hơn của giá" được đo tại nến pivot RSI, không phải tại một đáy giá thật. Code so low[5] của nến pivot RSI này với low[5] của nến pivot RSI trước. Vì pivot được tìm trên đường RSI, cây nến đó không nhất thiết là đáy swing thật của giá — nó chỉ là cây nến ngẫu nhiên nằm đúng vị trí đáy RSI. Một phân kỳ có thể được công nhận dù nhìn bằng mắt giá chưa tạo đáy mới rõ ràng nào.
  • Bộ lọc khoảng cách thực tế là 6–51 nến, không phải 5–50. Code gọi _inRange(foundPL[1]) — dùng cờ pivot đã bị dời lùi 1 nến — nên ta.barssince trả về đúng bằng (khoảng cách thật − 1). Lệch 1 nến này không đáng kể trong thực chiến, nhưng cần biết nếu định port logic sang MT5 hay sửa hằng số.
  • Các dải đã phá (nét đứt) KHÔNG bao giờ được dọn dẹp. Khi một vùng bị phá, nó bị gỡ khỏi mảng theo dõi — mà bộ đếm qtyDivLevels chỉ đếm những gì CÒN trong mảng. Nghĩa là đường nét đứt ở lại chart vĩnh viễn, tích tụ dần theo thời gian. Trên chart nhiều nến, chúng sẽ âm thầm ăn hết hạn mức max_lines_count = 500, và khi chạm trần thì TradingView tự xoá các đường cũ nhất — kể cả các dải đang còn hiệu lực. Nếu thấy dải cũ tự nhiên biến mất trên chart dài, đây là lý do.
  • Vòng lặp vừa duyệt vừa xoá phần tử. Khối for dl in arr có gọi arr.remove() ngay bên trong. Pine cảnh báo không nên sửa mảng khi đang duyệt nó: khi một vùng bị phá, phần tử ngay sau nó có thể bị bỏ qua trong lần duyệt đó. Hậu quả nhẹ — vùng bị bỏ sót sẽ được xử lý ở nến kế tiếp, nên dải có thể trễ đúng 1 nến khi nhiều vùng cùng bị phá một lúc.
  • Điều kiện sống của vùng khá "lỏng". Vùng Bull chỉ chết khi high <= mức, tức TOÀN BỘ cây nến phải nằm dưới mức hỗ trợ. Giá xuyên thủng mức trong phiên rồi đóng cửa hồi lên (râu nến dài) sẽ KHÔNG làm vùng chết. Đây là lựa chọn thiết kế có chủ đích để lọc nhiễu quét râu, nhưng nó cũng khiến vùng sống dai hơn cảm nhận trực quan của nhiều người.
  • Toàn bộ phần dò phân kỳ nằm trong khối if doCheck. Các hàm cần lịch sử liên tục (ta.pivotlow, ta.valuewhen, ta.barssince) về nguyên tắc nên được gọi ở mọi nến. Ở đây không sao vì enableDivCheck là một input cố định suốt phiên chạy — hoặc luôn bật, hoặc luôn tắt. Nhưng nếu ai đó sửa code để bật/tắt động theo điều kiện thị trường, kết quả sẽ sai lệch.
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