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

Tham chiếu parameter input.*

Tham chiếu đầy đủ cho tất cả các hàm input.* trong ATK PyneScript V6 — chọn đúng họ input, parameter, và mẫu merge.

Namespace input.*#

Mỗi lần đăng ký input sẽ thêm metadata vào script context và trả về giá trị mặc định ngay lập tức, vì vậy module của bạn có thể sử dụng nó như một giá trị Python thuần.

Phương thứcKiểu trả vềArgument thường dùngTrường hợp sử dụng
input.int(defval=0, title="", key=None, **kwargs)intminval, maxval, stepĐộ dài, lookback, đếm.
input.float(defval=0.0, ...)floatminval, maxval, stepHệ số nhân, ngưỡng, kích thước.
input.bool(defval=False, ...)boolToggle booleanCờ tính năng và điều khiển hiển thị.
input.string(defval="", ...)strVăn bản thuầnChế độ, khóa nguồn, nhãn.
input.text_area(defval="", ...)strVăn bản dạng dàiGhi chú hoặc input payload văn bản.
input.time(defval=0, ...)intGiá trị mặc định dấu thời gianNeo thời gian.
input.price(defval=0.0, ...)floatGiá trị mặc định mức giáTham chiếu giá cố định.
input.source(defval="close", ...)strTên trường nguồnChọn cột nguồn thị trường.
input.symbol(defval="", ...)strBộ chọn mãInput mã ngoài.
input.session(defval="", ...)strChuỗi sessionLọc session.
input.timeframe(defval="", ...)strChuỗi timeframe như 15mXác nhận MTF.
input.color(defval="#00c853", ...)strHex hoặc chuỗi colorInput kiểu dáng trực quan.
input.enum(defval=None, title="", key=None, options=None, **kwargs)AnyoptionsLựa chọn có giới hạn.

Cách defval hoạt độngdefval là giá trị được trả về ngay lập tức khi import và là giá trị được sử dụng khi runtime chưa cung cấp override. Coi nó như cấu hình khởi động an toàn của script.

Tại sao key quan trọngkey là định danh ổn định cho cài đặt trong runtime. Giữ nó ngắn, rõ ràng và bền vững. Thay đổi key sau này sẽ phá vỡ tính liên tục giữa cài đặt đã lưu và hợp đồng script.

Cách merge params — Dùng input làm giá trị mặc định có kiểu, sau đó merge params đè lên chúng bên trong frame builder. Điều này giữ cho script chạy được như Python thuần trong khi vẫn tôn trọng các override từ runtime.

Chọn đúng họ Input#

Họ inputChọn khi...Hướng dẫn thực tế
input.intGiá trị là đếm rời rạc, lookback, hoặc khoảng cách bar.Dùng cho độ dài và đếm. Thêm minval=1 khi giá trị bằng không hoặc âm sẽ làm indicator không hợp lệ.
input.floatGiá trị là liên tục: hệ số nhân, ngưỡng, nút điều chỉnh dạng phần trăm.Dùng step để điều khiển độ chi tiết UI. Hệ số nhân BBands là float vì 1.52.25 là các giá trị có ý nghĩa.
input.boolCài đặt bật/tắt một tính năng.Phù hợp để hiển thị đánh dấu, kích hoạt bộ lọc, hoặc chuyển đổi giữa các lớp output cơ bản và nâng cao.
input.stringNgười dùng chọn một nhãn chế độ dạng tự do ngắn hoặc tên nguồn.Dùng khi giá trị là văn bản nhưng không bị giới hạn tự nhiên bởi enum nghiêm ngặt. Với các lựa chọn bị ràng buộc cao, ưu tiên input.enum.
input.sourceNgười dùng nên chọn một nguồn thị trường dạng cột.Dùng cho open, high, low, close, hoặc tên nguồn dẫn xuất. Luôn triển khai fallback khi nguồn được chọn không tồn tại.
input.timeframeNgười dùng chọn timeframe thay thế để xác nhận hoặc tổng hợp.Chỉ dùng khi script thực sự gọi request.security hoặc logic tương tự. Không thêm input timeframe làm trang trí.
input.priceCài đặt là mức chart cố định.Dùng cho ngưỡng, vùng, và neo thủ công nơi số đại diện cho giá, không phải hệ số nhân chung.
input.timeNgười dùng phải chọn dấu thời gian cụ thể.Hữu ích cho nghiên cứu phạm vi cố định, cửa sổ thủ công, và đối tượng neo theo thời gian.
input.colorNgười dùng điều khiển kiểu dáng mà không thay đổi logic.Giữ input color ở mức thẩm mỹ. Không gán cho chúng các quyết định ngữ nghĩa mà nên là cài đặt boolean hoặc enum thực sự.
input.enumLựa chọn phải giới hạn trong các giá trị hợp lệ đã biết.Tốt nhất cho các chế độ như sma so với ema, lựa chọn vị trí panel, hoặc biến thể logic có tên nơi văn bản tùy ý sẽ dễ gây lỗi.

Ví dụ code: Chọn đúng họ Input#

from source import input


# Discrete bar count.
length = input.int(20, title="Length", key="length", minval=1)

# Continuous multiplier.
multiplier = input.float(2.0, title="StdDev Mult", key="multiplier", minval=0.1, step=0.1)

# Free text for lightweight labels.
label_text = input.string("baseline", title="Label", key="label_text")

# Multi-line notes.
notes = input.text_area("alpha\nbeta", title="Notes", key="notes")

# Interactive chart-pick pair.
trigger_time = input.time(1700000000, title="Trigger Time", key="trigger_time", confirm=True)
trigger_price = input.price(101.25, title="Trigger Price", key="trigger_price", confirm=True)

# Market source selector.
source_type = input.source("close", title="Source", key="source_type")

# Symbol and session selectors.
ticker = input.symbol("BINANCE:BTCUSDT", title="Ticker", key="ticker")
session_value = input.session("0930-1600", title="Session", key="session_value")

# Only add timeframe when you really call request.security later.
confirm_tf = input.timeframe("15m", title="Confirm TF", key="confirm_tf")

# Input-owned color value.
line_color = input.color("#2962ff", title="Line Color", key="line_color")

# Bounded named choice.
ma_mode = input.enum("ema", title="MA Mode", key="ma_mode", options=["sma", "ema", "rma"])

Nguyên tắc chung: nếu văn bản tự do sẽ cho phép người dùng nhập giá trị không hợp lệ, không dùng input.string. Dùng input.enum hoặc họ input cụ thể hơn thay thế.

Input tương tác: ATK hiện bảo toàn confirm, cặp time/price, và metadata giá trị đã chọn cho input.timeinput.price. Dùng các trường này khi người dùng nên neo một sự kiện chart một cách rõ ràng thay vì nhập một số chung.

Mẫu merge Input#

length = input.int(20, title="Length", key="length", minval=1)
multiplier = input.float(2.0, title="StdDev Mult", key="multiplier", minval=0.1, step=0.1)
source_type = input.source("close", title="Source", key="source_type")


def build_indicator_frame(df, params=None):
    frame = df.copy().reset_index(drop=True)
    p = {
        "length": int(length),
        "multiplier": float(multiplier),
        "source_type": str(source_type),
    } | dict(params or {})

    source_name = str(p.get("source_type", "close") or "close")
    source_series = frame[source_name] if source_name in frame.columns else frame["close"]
    # use p["length"] and p["multiplier"] for computation

Tải ví dụ input nâng cao