Chuyển đến nội dung chính
ATK Pine Script®

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.attrs chỉ 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_frame cho strategy.
  • Sử dụng import_library(...) trong các file .py thô 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ạnNhững gì thuộc về đâyNhững gì không được xảy ra ở đây
build_indicator_frameMọ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_frameLogic 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_frameChuẩ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 ở đâyLý do
Chọn giữa open, close, hl2, hoặc column source do người dùng chọnbuild_indicator_frame hoặc build_signal_frameViệ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 MTFbuild_indicator_frame hoặc build_signal_frameMọ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, tpbuild_signal_frameStrategy 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 runtimebuild_trade_frameGiai đ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 labelframe.attrsConfig 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 sliceKhông lưu trữ toàn bộ chúng trong frame.attrsCá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().