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

Phương Thức chart.point

ctx object namespace cho chart point — ctx.line, ctx.label, ctx.box, ctx.polyline khi visual là đối tượng có điểm cuối hoặc biên.

ctx Object Namespace: Khi Visual Là Một Đối Tượng#

Chọn object namespace khi bạn cần điểm cuối, biên, nhãn, hoặc shape mà không thể biểu diễn tự nhiên dưới dạng một giá trị trên mỗi hàng. Đối tượng vẫn phải đến từ dữ liệu đã chuẩn bị; chỉ việc lắp ráp đối tượng mới diễn ra bên trong build_visuals.

Các ctx object namespace khả dụng#

NamespaceDùng cho
ctx.line.new(...)Đoạn line giữa hai chart point (x1/y1 → x2/y2).
ctx.label.new(...)Label văn bản neo tại một chart point với style tùy chỉnh.
ctx.box.new(...)Hình chữ nhật xác định bởi chart point trên-trái và dưới-phải.
ctx.polyline.new(...)Đường đa đoạn qua một mảng chart point.
ctx.table.new(...)Widget table được quản lý với hàng, cột, và văn bản ô.

Quy ước tọa độ chart.point#

Tất cả đối tượng ctx.* nhận x là chỉ số bar (integer từ column index) và y là giá trị giá float. Luôn ép kiểu tọa độ một cách tường minh:

ctx.label.new(
    key="signal_label",
    x=int(last["index"]),
    y=float(last["low"]),
    text="BUY",
    color="#2962ff",
    style="label_down",
)

Quy tắc: chuẩn bị tọa độ trong frame, lắp ráp đối tượng trong build_visuals#

# build_indicator_frame — prepare anchor columns
frame["signal_low"] = np.where(frame["buy_signal"], frame["low"], np.nan)

# build_visuals — assemble object from prepared data only
def build_visuals(frame, params=None, ctx=None):
    last = frame.iloc[-1]
    if not np.isnan(last.get("signal_low", float("nan"))):
        return ctx.label.new(
            key="buy_label",
            x=int(last["index"]),
            y=float(last["signal_low"]),
            text="BUY",
        )
    return None