Đi tới nội dung chính
Chuyển tới nội dung chính

Đầu ra và màu

Đầu ra là những gì script vẽ lên biểu đồ. plot trả một đối tượng { "Tên": đầuRa, … }: tên (khoá) hiện ở chú giải, cột Tại nến, cột của Lọc bằng script và là tên dùng trong fill; giá trị là một trong 11 hàm dưới. Tối đa 64 đầu ra mỗi script.

Mỗi giá trị trong plot phải là một đầu ra — trả thẳng một chuỗi ({ A: d.close }) báo plot: "A" phải là line(…), hist(…), band(…)….

Bảng tóm tắt​

HàmVẽDùng cho
line(x, opts)ĐườngTrung bình, RSI, mức động
hist(x, opts)Cột quanh mức gốc, hai màuMACD histogram, dao động quanh 0
columns(x, opts)Cột từ 0Khối lượng, số đếm
area(x, opts)Vùng tô từ mức gốc tới đườngSụt giảm, dòng tiền
band(tren, duoi, opts)Hai đường biên + tô giữaBollinger, Keltner, kênh
fill(a, b, opts)Tô giữa hai đầu ra (theo tên) hoặc hai chuỗiVùng giữa hai EMA, vùng quá mua
hline(so, opts)Đường ngang cố địnhMức 30 / 70, mức 0
shape(dk, opts)Dấu ở nến điều kiện đúngMũi tên tín hiệu, cờ, ký tự
bgcolor(dk, opts)Tô nền nến điều kiện đúngGiai đoạn xu hướng, phiên
barcolor(dk, opts)Tô lại nến giáNến đột biến, nến trong xu hướng
candles(ohlc, opts)Nến tuỳ biếnHeikin Ashi, nến của chỉ báo

Tuỳ chọn chung​

Tuỳ chọnKiểuNghĩa
pane"price" | "new" | tênNgăn của đầu ra này; mặc định theo pane của chỉ báo. Một tên khác ("KL") tạo ngăn phụ theo tên — cùng tên thì chung ngăn
opacity0…1Độ đục (1 = đục hẳn). Với vùng, tô, nền: độ đục phần tô
format"price" | "percent" | "number" | "integer" | "volume" | "compact" | "ratio"Cách hiện số ở chú giải và thang
hiddentrueẨn mặc định; vẫn có trong chú giải để bật
colormàuMàu chính — bảng màu
colors[{ when: dk, color }, …]Đổi màu theo điều kiện ở từng nến: luật đầu tiên đúng thắng; không luật nào đúng → color. Dùng cho line, hist, columns, area, shape, bgcolor, barcolor

line​

line(x, { color?, colors?, width? = 1.5, dash?, step?, points?, offset?, pane?, opacity?, format?, hidden? })

Tuỳ chọnNghĩa
widthĐộ dày (điểm ảnh)
dash"solid" (mặc định), "dash", "dot"
steptrue: bậc thang (giá trị giữ ngang tới nến đổi)
points"circles": chấm tại từng nến; "cross": chữ thập
offsetDời khi vẽ (số nến; dương sang phải, âm sang trái). Chỉ đổi hình vẽ, không đổi giá trị của chuỗi

x có thể là một số: line(50) vẽ đường ngang 50 (như hline nhưng có trong cột Tại nến).

hist​

hist(x, { up?, down?, base? = 0, color?, colors?, … }) — cột từ mức base tới giá trị. Không đặt color: cột ≥ base màu up (mặc định xanh tăng), < base màu down (đỏ giảm). Đặt color thì mọi cột một màu (trừ khi có up / down).

columns​

columns(x, { color?, colors?, … }) — cột từ 0, một màu. Hợp với khối lượng, số đếm.

area​

area(x, { color?, base? = 0, opacity? = 0,25, … }) — đường + vùng tô từ base tới đường.

band​

band(tren, duoi, { color?, fill?, width?, opacity?, … }) — hai đường biên (tren, duoi: chuỗi hoặc số) và vùng tô giữa. fill là màu phần tô (mặc định theo color). band(70, 30) tô dải giữa hai số.

fill​

fill(a, b, { color?, below?, opacity? = 0,15 })

  • a, b là tên của hai đầu ra khác trong cùng plot (đường, mức ngang, vùng, cột) — fill phải đứng sau chúng; hoặc là hai chuỗi bất kỳ.
  • Tô màu color khi a trên b, màu below khi a dưới b (đổi tại điểm cắt). below: "#00000000" (trong suốt) để chỉ tô một phía.

hline​

hline(so, { color? = xám, dash? = "dash", width? = 1, pane? }) — đường ngang tại một số (không nhận chuỗi; hline("70") báo hline(value) cần một số). Giá trị phụ thuộc chuỗi thì dùng line(...).

shape​

shape(dk, { at?, shape?, char?, text?, color?, colors?, size?, value?, … }) — dấu ở mọi nến dk đúng.

Tuỳ chọnGiá trịMặc định
at"above" trên nến, "below" dưới nến, "value" tại mức value, "top" / "bottom" mép trên / dưới ngăn"above"
shape"triangleUp", "triangleDown", "arrowUp", "arrowDown", "circle", "square", "diamond", "flag", "label"tam giác theo at
charMột ký tự thay hình: "★", "B", "▲"
textChữ ngắn kèm dấu
size"s", "m", "l""m"
valueChuỗi / số: mức đặt dấu khi at: "value"

bgcolor​

bgcolor(dk, { color?, colors?, opacity? = 0,15, pane? }) — tô nền cột của nến dk đúng, trong ngăn của đầu ra (chỉ báo ngăn riêng tô ngăn riêng; thêm pane: "price" để tô ngăn giá).

barcolor​

barcolor(dk, { color?, colors? }) — tô lại nến giá ở nến dk đúng (cả thân và bóng).

candles​

candles({ open, high, low, close }, { up?, down?, wick?, when?, pane?, opacity? }) — vẽ nến từ bốn chuỗi tự tính. up / down màu nến tăng / giảm, wick màu bóng, when chỉ vẽ ở nến điều kiện đúng.

Màu​

MàuNghĩaNền tối
"up"Tăngxanh lá
"down"Giảmđỏ
"accent"Màu nhấnxanh dương
"ref"Tham chiếuvàng
"ceil"Trầntím
"floor"Sànxanh lơ
"ai"Màu của Copilottím nhạt
"text"Chữtrắng / đen theo nền
"textMuted"Chữ mờxám
"palette.0" … "palette.5"Bảng màu phân biệt: cam, xanh dương, tím, xanh lơ, hồng, xanh cốm
"#RRGGBB", "#RRGGBBAA"Mã màu; hai số cuối AA là độ đục (80 ≈ 50 %, 00 trong suốt)
"rgba(r, g, b, a)"Mã màu có độ đục

Màu tên tự đổi theo nền sáng / tối của giao diện; mã màu thì giữ nguyên. Bỏ trống color: đường lấy lần lượt màu của bảng màu. Tên màu khác ("warn", "muted", "neutral" có trong đặc tả cũ) hiện chưa có màu riêng — biểu đồ dùng màu tự động; nên dùng các tên trong bảng.

Ví dụ tổng hợp​

Mọi đầu ra và tuỳ chọn trong một chỉ báo:

indicator({
name: "Mọi đầu ra",
pane: "new",
state: () => ({ o: NaN, c: NaN }),
onBar: (ctx, s) => {
const c = (ctx.open + ctx.high + ctx.low + ctx.close) / 4;
const o = Number.isNaN(s.o) ? (ctx.open + ctx.close) / 2 : (s.o + s.c) / 2;
s.o = o;
s.c = c;
return { o, h: Math.max(ctx.high, o, c), l: Math.min(ctx.low, o, c), c };
},
plot: (d, p, o) => {
const r = ta.rsi(d.close, 14);
const bb = ta.bb(d.close, 20, 2);
const kc = ta.keltner(d, 20, 1.5, 10);
const m = ta.macd(d.close);
return {
RSI: line(r, { color: "accent", width: 2, colors: [{ when: r.gt(70), color: "down" }, { when: r.lt(30), color: "up" }], format: "number" }),
"70": hline(70, { color: "down", dash: "dash" }),
"30": hline(30, { color: "up", dash: "dot" }),
"Trên 70": fill("RSI", "70", { color: "down", below: "#00000000", opacity: 0.3 }),
"MACD hist": hist(m.hist, { pane: "MACD", up: "up", down: "down", base: 0 }),
"Khối lượng": columns(d.volume, { pane: "KL", color: "textMuted", opacity: 0.6, format: "volume" }),
"Sụt giảm %": area(d.close.div(d.close.highest(60)).sub(1).mul(100), { pane: "Sụt giảm", color: "down", base: 0, format: "percent" }),
Bollinger: band(bb.upper, bb.lower, { pane: "price", color: "accent", fill: "accent", opacity: 0.08, width: 1 }),
"Keltner trên": line(kc.upper, { pane: "price", color: "ai", dash: "dot" }),
"Keltner dưới": line(kc.lower, { pane: "price", color: "ai", dash: "dot" }),
"Bóp Bollinger": fill(kc.upper, bb.upper, { color: "ref", below: "#00000000", opacity: 0.2 }),
"EMA 20 dời": line(ta.ema(d.close, 20), { pane: "price", color: "palette.4", offset: 3, hidden: true }),
"Đỉnh 20 bậc thang": line(d.high.highest(20), { pane: "price", color: "up", step: true, hidden: true }),
"PSAR": line(ta.psar(d), { pane: "price", points: "circles", color: "textMuted" }),
"RSI cắt lên 30": shape(r.crossAbove(30), { at: "bottom", shape: "triangleUp", color: "up", size: "s" }),
"Đáy RSI": shape(r.lt(25), { at: "value", value: r, char: "●", color: "up" }),
"Tín hiệu giá": shape(r.crossAbove(30), { pane: "price", at: "below", shape: "label", text: "RSI", color: "up" }),
"Nền quá mua": bgcolor(r.gt(70), { color: "down", opacity: 0.08 }),
"Nến khi RSI > 70": barcolor(r.gt(70), { color: "ceil" }),
"Heikin Ashi": candles({ open: o.o, high: o.h, low: o.l, close: o.c }, { pane: "HA", up: "up", down: "down", wick: "textMuted" }),
"HA khi tăng": candles({ open: o.o, high: o.h, low: o.l, close: o.c }, { pane: "HA tăng", when: o.c.gt(o.o), up: "#16C784CC" }),
};
},
});