1. Mô tả Chiến Lược Automated Pattern Targets
Chỉ báo tự động dò tìm 16 loại mẫu hình giá kinh điển, tự vẽ đường viền, tự tính Entry/Stop Loss/Target và bắn cảnh báo khi mẫu hình phá vỡ (breakout) được xác nhận.
1.1 Concept của chỉ báo
Chỉ báo dựa trên lý thuyết phân tích kỹ thuật cổ điển: giá thường lặp lại theo các "hình mẫu hình học" (Hai Đỉnh, Vai-Đầu-Vai, Cờ, Tam Giác, Cốc Tay Cầm...) hình thành từ cuộc giằng co tâm lý giữa phe mua và phe bán tại các vùng đỉnh/đáy. Khi 1 hình mẫu hoàn tất và giá phá vỡ (breakout) ra khỏi đường viền của nó, xác suất giá tiếp tục đi theo hướng phá vỡ với biên độ tối thiểu bằng đúng "chiều cao" của hình mẫu (gọi là đo lường mục tiêu - measured move) được cho là cao hơn ngẫu nhiên.
Chỉ báo tự động hoá toàn bộ quy trình mà 1 trader kỹ thuật thường làm bằng tay: tìm đỉnh/đáy xoay chiều (pivot) → ghép các đỉnh/đáy đó thành 1 trong 8 khuôn hình học (tổng cộng 16 tên gọi mẫu hình khác nhau, tính cả chiều tăng/giảm) → xác nhận phá vỡ bằng ngưỡng biến động (ATR) hoặc theo % giá → tự tính Entry/Stop Loss/Target đúng công thức đo lường riêng của từng mẫu hình → lọc bỏ mẫu hình có tỷ lệ Rủi ro:Lợi nhuận (Risk:Reward) quá thấp trước khi hiển thị.
1.2 Chức năng của chỉ báo
- Hiển thị hình mẫu: vẽ 2 đường viền của mẫu hình (đường cổ, cạnh kênh giá, cạnh cốc...) màu xanh ngọc (tăng) hoặc hồng đỏ (giảm), tô màu mờ vùng nằm giữa 2 đường viền, và gắn 1 nhãn tên mẫu hình (VD "Head & Shoulders") ngay giữa hình vẽ.
- Hiển thị Entry/Stop/Target: khi bật show_tgt, chỉ báo vẽ thêm 3 đường kẻ ngang nét đứt kéo dài 50 nến kể từ điểm breakout — Entry màu vàng, Stop Loss màu đỏ hồng, Target màu xanh lá — mỗi đường kèm nhãn hiển thị đúng mức giá và, riêng đường Target, kèm luôn tỷ lệ R:R thực tế sau khi trừ phí trượt giá + hoa hồng.
- Bảng Dashboard: 1 bảng nhỏ ở góc trên-phải màn hình, gồm 9 dòng: tên mẫu hình + cặp tiền/khung giờ, Thiên hướng (▲Bull/▼Bear), Tên mẫu hình đang hiển thị, ATR(14), điểm "Vol Spike" dạng thanh khối (10 ô), điểm "R:R Quality" dạng thanh khối, điểm "Pivot Depth" dạng thanh khối, số nến đã trôi qua kể từ breakout gần nhất, và tổng số pivot (đỉnh+đáy) đã ghi nhận.
- Alert: mỗi khi có 1 mẫu hình MỚI được xác nhận đầy đủ Entry/Stop/Target, chỉ báo bắn ra 1 cảnh báo dạng văn bản JSON gồm mã cổ phiếu/cặp tiền, tên mẫu hình, thiên hướng, giá Entry, Target, Stop — dùng để kết nối sang bot giao dịch tự động hoặc webhook thông báo (Telegram, Discord...).
1.3 Cách dùng chỉ báo
- Chờ chỉ báo tự vẽ xong 1 mẫu hình kèm 3 đường Entry/Stop/Target trên chart → vào lệnh ngay tại mức Entry (chính là giá mở cửa của nến kế tiếp sau nến breakout), đặt Stop Loss và chốt lời (Take Profit) đúng y 2 mức giá còn lại mà chỉ báo đã vẽ sẵn.
- Trước khi vào lệnh, nhìn nhanh bảng Dashboard góc trên-phải để lọc chất lượng tín hiệu: nếu thanh "Vol Spike" chỉ tô 1-2/10 ô nghĩa là breakout thiếu lực khối lượng xác nhận → nên cân nhắc bỏ qua; nếu "R:R Quality" thấp nghĩa là tỷ lệ lời/lỗ chỉ vừa đủ ngưỡng tối thiểu min_rr chứ không dư dả; nếu "Pivot Depth" thấp nghĩa là chart còn ít dữ liệu lịch sử, độ tin cậy pattern thấp hơn.
- Chỉ bật những loại mẫu hình phù hợp phong cách giao dịch của bản thân trong nhóm "Patterns" (VD chỉ giữ lại Double Top/Bottom nếu chuyên giao dịch đảo chiều tại vùng đỉnh/đáy) để chart bớt rối và tín hiệu tập trung đúng chiến lược.
- Có thể tạm bật show_ignore_conf để xem trước hình dạng TẤT CẢ mẫu hình kể cả khi chưa đạt điều kiện volume/R:R, phục vụ mục đích học/quan sát hình mẫu, KHÔNG dùng để vào lệnh thật.
- Nếu quen quản lý vốn theo bội số R cố định (VD luôn chốt lời ở đúng 2R), có thể bật rr_dyn_en để chỉ báo ép Target về đúng Entry ± Risk × rr_dyn_mult thay vì dùng công thức đo lường hình học mặc định của từng mẫu hình.
- Dùng cảnh báo JSON (mục Alert) để nối chỉ báo với bot/webhook, tự động nhận tín hiệu Entry/Stop/Target ngay khi mẫu hình mới được xác nhận, không cần ngồi canh chart 24/7.
1.4 Cách hoạt động của chỉ báo
Đầu vào & vai trò
- cooldown (số nguyên, mặc định 5): số nến tối thiểu phải trôi qua kể từ điểm bắt đầu của mẫu hình trước đó thì 1 mẫu hình mới mới được phép vẽ lại. Hạ về 1 → chỉ báo gần như vẽ lại pattern mỗi khi có pivot mới, hình vẽ chồng chéo liên tục; tăng lên 20 → giãn cách các tín hiệu, đỡ spam hơn nhưng bỏ lỡ tín hiệu gần nhau.
- sym_tol (%, mặc định 10%): độ lệch tối đa cho phép giữa 2 vai của mẫu Vai-Đầu-Vai hoặc 2 mép miệng của Cốc Tay Cầm để vẫn coi là "đối xứng". VD 2 vai ở giá 100 và 108 lệch (108-100)/104 ≈ 7.7% < 10% → vẫn được công nhận; hạ tolerance xuống 5% thì cặp giá này sẽ bị loại vì "không đủ đối xứng".
- lvl_tol (%, mặc định 3%): độ lệch tối đa cho phép giữa các đỉnh (hoặc đáy) trong Double/Triple Top/Bottom để coi là "cùng 1 mức giá". Nới rộng lên 5% sẽ dễ nhận Double Top hơn nhưng độ chính xác của tín hiệu giảm xuống.
- min_size_pct / min_atr_mult (mặc định 0.5% và 1.0×): chiều cao tối thiểu để 1 mẫu hình được công nhận — chỉ báo lấy giá trị LỚN HƠN giữa "0.5% giá hiện tại" và "1.0 lần ATR(14)". Ở giá 2000 với ATR=8, ngưỡng sẽ là max(10, 8)=10 điểm; nếu tăng min_atr_mult lên 2.0, ngưỡng nhảy lên 16 điểm → mẫu hình nhỏ bị loại nhiều hơn, chỉ giữ lại mẫu hình lớn, đáng tin.
- 16 công tắc bật/tắt mẫu hình (nhóm "Patterns", mặc định TẤT CẢ bật): mỗi công tắc chỉ ẩn/hiện đúng 1 loại mẫu hình tương ứng (VD tắt show_cup_std thì chỉ báo sẽ không bao giờ vẽ Cốc Tay Cầm chuẩn nữa, kể cả khi hình dạng giá khớp điều kiện).
- lb_left / lb_right (mặc định 10/10): số nến cần thiết ở mỗi bên để xác nhận 1 điểm là đỉnh/đáy xoay chiều (pivot). Giảm xuống 5 → pivot được phát hiện sớm hơn nhưng dễ dính đỉnh/đáy giả (nhiễu); tăng lên 20 → pivot đáng tin hơn nhưng phải đợi lâu hơn mới xác nhận, phù hợp khung thời gian lớn.
- req_close_brk / req_body_brk (mặc định false/false): bật req_close_brk → giá đóng cửa nến phải vượt hẳn ra ngoài đường viền mới tính breakout (thay vì chỉ cần bóng nến chạm tới); bật thêm req_body_brk → đòi hỏi CẢ open lẫn close đều vượt ngưỡng (breakout bằng cả thân nến), khắt khe hơn, giảm breakout giả nhưng cũng giảm số tín hiệu.
- use_atr_brk + break_atr/break_pct (mặc định true, ATR×1.0): chọn ngưỡng phá vỡ tính theo biến động (ATR) hay theo % giá cố định. VD ATR=10, break_atr=1 → giá phải vượt đường viền tối thiểu 10 điểm; nếu chuyển sang dùng %, ở giá 2000 với break_pct=0.3% thì ngưỡng chỉ còn 6 điểm — lỏng hơn, dễ nhận breakout hơn nhưng cũng dễ bị nhiễu hơn khi thị trường biến động thấp.
- brk_confirm_bars (mặc định 1): số nến liên tiếp phải giữ vững ngoài đường viền mới coi breakout là thật (chống trường hợp giá vọt qua rồi quay đầu ngay). Tăng lên 3 → giảm hẳn breakout giả nhưng vào lệnh trễ hơn 2 nến so với mặc định.
- req_vol + vol_mult + vol_len (mặc định false, ×1.0, SMA 20): bật req_vol → volume tại đúng nến breakout phải vượt trung bình 20 nến (SMA) nhân với vol_mult mới được công nhận hợp lệ. VD SMA volume = 1000, vol_mult=1.5 → nến breakout cần volume tối thiểu 1500; nếu không đạt, mẫu hình bị âm thầm loại bỏ, không hiển thị.
- min_rr (mặc định 1.0): tỷ lệ Reward:Risk tối thiểu SAU KHI đã trừ phí trượt giá (slippage_ticks) và hoa hồng (commission_pct). Mẫu hình có R:R thực tế dưới ngưỡng này sẽ bị loại hoàn toàn, không được vẽ lên chart dù hình dạng đúng và đã breakout.
- use_sl_pct_tgt + sl_pct_tgt (mặc định true, 25%): công thức tính Stop Loss mặc định — SL được đặt cách Entry một khoảng bằng 25% khoảng cách Entry→Target, tạo ra tỷ lệ R:R có cấu trúc cố định khoảng 4:1 cho MỌI mẫu hình. Nếu tắt input này, SL sẽ chuyển sang đặt tại điểm neo hình học của mẫu hình (VD đáy tay cầm của Cốc, đỉnh vai của Vai-Đầu-Vai) cộng/trừ thêm đệm stop_buffer × ATR.
- rr_dyn_en + rr_dyn_mult (mặc định false, 2.0×): bật rr_dyn_en sẽ GHI ĐÈ hoàn toàn Target đo lường hình học gốc, thay bằng Target = Entry ± (khoảng cách Entry-Stop) × rr_dyn_mult — VD rủi ro 10 điểm, rr_dyn_mult=2 → Target luôn cách Entry đúng 20 điểm bất kể mẫu hình gì.
- max_patterns (mặc định 1): số mẫu hình gần nhất được giữ lại hình vẽ trên chart cùng lúc; mẫu hình cũ hơn số này sẽ tự động bị xoá để tránh chart rối.
- alert_en (mặc định true): bật/tắt việc bắn cảnh báo JSON mỗi khi có mẫu hình mới hợp lệ.
Các khối logic chính
- Từ hiển thị nhìn ngược vào trong: mọi thứ trader nhìn thấy trên chart — hình vẽ mẫu hình, 3 đường Entry/Stop/Target, bảng Dashboard, cảnh báo JSON — đều xuất phát từ ĐÚNG 1 kết quả duy nhất được chọn ra ở mỗi nến đã đóng nến (barstate.isconfirmed).
- Tầng nền — phát hiện Pivot: mỗi nến, chỉ báo kiểm tra nến ở vị trí lùi lại lb_left cây có phải là đỉnh/đáy cao nhất/thấp nhất trong 1 cửa sổ khoảng 20 nến xung quanh hay không (dựa theo lb_left/lb_right). Nếu đúng, pivot đó được lưu vào đầu 1 danh sách riêng cho đỉnh và 1 danh sách riêng cho đáy (phần tử đầu danh sách luôn là pivot gần nhất).
- Tầng nhận diện hình học (8 khuôn hình, chạy song song mỗi nến): mỗi hàm nhận diện tự lấy ra 2-3 pivot gần nhất phù hợp vai trò của nó rồi kiểm tra: (a) thứ tự thời gian đúng (pivot phải xuất hiện đúng trình tự trước-sau), (b) điều kiện hình học riêng (đối xứng theo sym_tol/lvl_tol, độ dốc 2 đường viền cùng chiều hay hội tụ vào nhau tuỳ loại mẫu hình), (c) chiều cao mẫu hình đạt ngưỡng tối thiểu. VD Hai Đỉnh (Double Top) cần đúng 2 đỉnh gần bằng nhau (theo lvl_tol) với 1 đáy nằm giữa, đúng thứ tự đỉnh-đáy-đỉnh theo thời gian.
- Tầng quét Breakout (dùng chung cho cả 8 loại): với mỗi mẫu hình khả dĩ, chỉ báo nội suy tuyến tính đường viền của nó (VD đường cổ Vai-Đầu-Vai, cạnh kênh giá Cờ...) để "chiếu" đường này tới từng nến trong quá khứ gần, rồi so giá nến đó với 1 ngưỡng lệch (theo ATR hoặc theo %) quanh đường chiếu; nếu giá vượt ngưỡng và giữ đủ số nến xác nhận liên tiếp thì breakout được ghi nhận tại đúng nến đó.
- Tầng tính Entry/Target/Stop: Entry luôn là giá mở cửa của nến NGAY SAU nến breakout (không nhìn trước tương lai). Target dùng đúng công thức đo lường riêng của từng mẫu hình — VD Vai-Đầu-Vai: điểm phá đường cổ trừ đi chiều cao từ đầu xuống cổ; Cốc Tay Cầm: điểm phá miệng cốc cộng chiều cao từ đáy cốc lên miệng; Cờ/Đuôi Nheo: điểm phá cộng chiều cao cột cờ trước đó; Tam Giác/Chữ Nhật: điểm phá cộng/trừ chiều cao đáy hình. Nếu bật rr_dyn_en, toàn bộ công thức trên bị bỏ qua, Target chuyển thành Entry ± Risk×rr_dyn_mult. Stop mặc định = 25% khoảng Entry→Target, hoặc điểm neo hình học ± đệm ATR nếu tắt use_sl_pct_tgt.
- Tầng lọc hợp lệ (dùng chung cho cả 8 loại): loại bỏ mẫu hình nếu (khi req_vol bật) volume tại nến breakout không đạt SMA×vol_mult, hoặc nếu tỷ lệ R:R sau khi trừ phí trượt giá + hoa hồng thấp hơn min_rr.
- Tầng phân xử ưu tiên: mỗi nến CHỈ 1 mẫu hình được chọn để hiển thị, theo đúng thứ tự ưu tiên cố định: Hai Đỉnh/Đáy → Ba Đỉnh/Đáy → Vai-Đầu-Vai → Cờ/Đuôi Nheo → Nêm → Tam Giác → Chữ Nhật → Cốc Tay Cầm. Mẫu hình đầu tiên khớp đủ điều kiện trong danh sách này sẽ "thắng", các mẫu hình khác dù cũng thoả điều kiện trong cùng nến đó sẽ bị bỏ qua.
- Tầng cổng khởi động + chống lặp: chỉ báo chỉ bắt đầu quét mẫu hình sau khi đã qua 600 nến đầu (thời gian khởi động, warm-up) và đã có tối thiểu 2 đỉnh + 2 đáy pivot được ghi nhận. Một mẫu hình chỉ được coi là "mới" và được vẽ lại khi điểm bắt đầu của nó cách điểm bắt đầu của mẫu hình được vẽ lần trước đó hơn cooldown nến — nhờ vậy chỉ báo không vẽ đi vẽ lại cùng 1 mẫu hình mỗi nến trong khi các pivot cũ vẫn đang là pivot gần nhất.
- Tầng vẽ + cảnh báo: khi có mẫu hình mới hợp lệ, chỉ báo vẽ 2 đường viền + tô màu vùng giữa (nếu mẫu hình có cấu trúc dạng kênh), gắn nhãn tên mẫu hình, vẽ thêm 3 đường Entry/Stop/Target kèm nhãn giá + R:R (nếu show_tgt bật), đồng thời cập nhật toàn bộ 9 dòng của bảng Dashboard và bắn 1 cảnh báo JSON (nếu alert_en bật). Hình vẽ của các mẫu hình cũ vượt quá số lượng max_patterns sẽ bị tự động xoá.
Đầu ra & vai trò trong sử dụng
- Đường viền + vùng tô màu mẫu hình: giúp trader tự đối chiếu trực quan bằng mắt hình dạng và vị trí bắt đầu/kết thúc của mẫu hình, kiểm tra chéo trước khi tin theo tín hiệu tự động.
- 3 đường Entry/Stop/Target: dùng trực tiếp làm mức vào lệnh, mức cắt lỗ, mức chốt lời khi giao dịch thủ công, hoặc đối chiếu với công thức quản lý vốn riêng của trader.
- Bảng Dashboard: công cụ lọc nhanh chất lượng tín hiệu ngay trước khi vào lệnh (thiên hướng, tên mẫu hình đang active, ATR, điểm khối lượng, điểm R:R, độ sâu pivot, số nến kể từ breakout).
- Cảnh báo JSON: nguồn dữ liệu chuẩn để nối sang webhook hoặc bot giao dịch tự động, giúp trader không cần ngồi canh chart 24/7 mà vẫn không bỏ lỡ tín hiệu mới.


