Các phương pháp hay và Anti-Pattern
Các pattern khuyên dùng và những lỗi thường gặp cần tránh khi viết script ATK PyneScript V6.
Các phương pháp hay#
Nên làm#
- Tính toán mọi thứ trong frame builder phù hợp.
- Sử dụng các column
visual_*cho các trực quan hóa theo hàng. - Sử dụng
frame.attrschỉ cho config đối tượng tĩnh. - Sử dụng các giá trị
keyổn định cho trực quan hóa và input. - Ưu tiên
build_mapped_trade_framecho strategy. - Sử dụng
import_library(...)trong các file.pythô và dành import dạng quoted cho source đã được tiền xử lý bởi editor. - Trích dẫn ví dụ từ
source/example_user_scriptsđể người dùng có thể dán và chạy ngay lập tức.
Không nên làm#
- Không tính toán TA bên trong
build_visuals. - Không tính toán logic strategy bên trong
build_trade_frame. - Không lưu trữ payload động, nhạy cảm với slice hoàn toàn bên trong
frame.attrs. - Không hướng dẫn người dùng bằng các ví dụ cũ đã ẩn ranh giới giữa các giai đoạn.
- Không sửa lỗi tương thích runtime chỉ trong ví dụ người dùng khi bản sửa đúng thuộc về upstream.
Tóm tắt quyền sở hữu giai đoạn#
| Giai đoạn | Những gì thuộc về đây | Những gì không được xảy ra ở đây |
|---|---|---|
build_indicator_frame | Mọi tính toán indicator series, giải quyết source, xử lý warmup, chuẩn bị visual_* theo hàng, config attrs tĩnh. | Các lệnh vẽ cuối cùng thông qua ctx.*. |
build_signal_frame | Logic tín hiệu, logic lọc, các trường thực thi trade-frame chuẩn, chuẩn bị trực quan hóa strategy. | Chuẩn hóa schema order vượt quá các helper chỉ dành cho mapping. |
build_trade_frame | Chuẩn hóa chỉ dành cho mapping, thường là build_mapped_trade_frame(...). | ta.*, request.*, rolling window, nhóm DataFrame, tính lại tín hiệu. |
build_visuals | Ánh xạ chỉ dành cho render vào ctx.* hoặc ctx.atk.*. | Thay đổi frame, tính toán TA, lưu trữ payload động toàn frame đã cũ trong frame.attrs. |
Hướng dẫn quyết định#
| Nếu bạn cần... | Đặt ở đây | Lý do |
|---|---|---|
Chọn giữa open, close, hl2, hoặc column source do người dùng chọn | build_indicator_frame hoặc build_signal_frame | Việc chọn source là một phần của tính toán, không phải render. |
| Tính toán EMA, ATR, BBands, MACD, hoặc bộ lọc xu hướng MTF | build_indicator_frame hoặc build_signal_frame | Mọi công việc TA và request thuộc về các giai đoạn tính toán. |
Xuất entry_price, sl, tp | build_signal_frame | Strategy nên chuẩn bị đầy đủ các trường thực thi trước khi mapping trade. |
| Chuyển đổi các column trade-frame chuẩn thành schema chuẩn hóa của runtime | build_trade_frame | Giai đoạn này tồn tại để chuẩn hóa, không phải để tạo logic giao dịch mới. |
| Tạo dashboard table, zone box, hoặc tập đối tượng từ payload đã chuẩn bị | build_visuals | Đây là render thuần túy dữ liệu đã được chuẩn bị sẵn. |
| Lưu trữ tập style tĩnh như màu table, độ rộng, header, hoặc template label | frame.attrs | Config tĩnh an toàn ở đây vì nó không phụ thuộc vào độ dài slice hiện tại. |
| Lưu trữ anchor x/y hàng cuối, đuôi dự kiến, hoặc chỉ mục phụ thuộc slice | Không lưu trữ toàn bộ chúng trong frame.attrs | Các giá trị đó có thể bị cũ khi runtime chỉ truyền một slice vào build_visuals. |
Nếu bạn sử dụng frame.attrs cho trực quan hóa dạng đối tượng, chỉ lưu trữ config tĩnh ở đây và suy ra các giá trị động x, y, tail, hoặc phụ thuộc slice từ frame thực tế được truyền vào build_visuals().