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

Tra nhanh

Một trang gom mọi thứ hay dùng. Chi tiết từng mục ở Tham chiếu.

Khung script​

indicator({
name: "Tên", // bắt buộc
pane: "price", // "price" trên giá | "new" ngăn riêng
params: { len: param.int(14, { min: 2, max: 100, label: "Chu kỳ" }) },
plot: (d, p) => ({ "Đường": line(ta.ema(d.close, p.len)) }),
alerts: (d, p) => ({ "Giá cắt lên": d.close.crossAbove(ta.ema(d.close, p.len)) }),
});
strategy({
name: "Tên",
params: { len: param.int(20, { min: 5, max: 100, label: "Chu kỳ" }) },
signals: (d, p) => ({ entry: d.close.crossAbove(ta.sma(d.close, p.len)), exit: d.close.crossBelow(ta.sma(d.close, p.len)) }),
risk: { stopLoss: 0.07, takeProfit: 0.2, trailingStop: 0.1, maxHoldBars: 40 },
});
indicator({
name: "Theo từng nến",
series: (d) => ({ ema: ta.ema(d.close, 20) }),
state: () => ({ dem: 0 }),
onBar: (ctx, s) => {
s.dem = ctx.close > ctx.v.ema ? s.dem + 1 : 0;
return { dem: s.dem };
},
plot: (d, p, o) => ({ "Số nến trên EMA": columns(o.dem) }),
});

Dữ liệu d​

d.open d.high d.low d.close d.volume · d.hl2 d.hlc3 d.ohlc4 · d.time d.index d.value d.ret · d.source("close") · d.const(5) · d.tf("1W") d.tf("1D", { forming: true }) · d.ltf("1") → .sum / mean / max / min / first / last / count / std / at · d.session.first / last / minute / weekday / day · d.info.symbol d.resolution · d.symbol("VNINDEX") d.bench · d.flow().delta / cvd d.footprint().poc (Chuyên nghiệp) · chỉ khi lọc rổ / Studio: d.fin("ROE") d.macro("cpi_yoy") d.foreignNet…

Phép của chuỗi​

NhómPhép
Số họcadd sub mul div pow min max neg abs log exp sqrt sign round(n) clip(lo, hi)
So sánhgt gte lt lte eq neq between(a, b)
Logicand or not where(dk, khac) isNaN notNaN fillna(v) ffill(n)
Thời gianshift(n) diff(n) pct(n) cumsum cumprod cummax cummin ewm(n) highest(n) lowest(n)
Sự kiệncrossAbove(x) crossBelow(x) cross(x) barsSince() hold(n) valueWhen(dk, k)
Cửa sổrolling(n).sum / mean / std / var / min / max / count / rank / zscore / median / quantile(q)
Tự viếtmap((x, i) => …) zip(b, (x, y) => …) combine([a, b], (vs) => …) named("tên")

ta.*​

sma ema wma hma rma rsi roc slope (chuỗi, n) · macd(x, 12, 26, 9) → macd signal hist · bb(x, 20, 2) → upper mid lower pctB width · atr(d, 14) · adx(d, 14) → adx plusDI minusDI · stoch(d, 14, 3, 3) → k d · cci(d, 20) mfi(d, 14) williamsR(d, 14) obv(d) vwap(d, 20) · donchian(d, 20) keltner(d, 20, 2, 10) → upper mid lower · supertrend(d, 10, 3) → line dir · psar(d, 0.02, 0.2) · ichimoku(d, 9, 26, 52) → tenkan kijun spanA spanB · patterns(d, opts) · ta.run("id", { … }, nguon?) — 162 chỉ báo

Tham số​

param.int(14, { min, max, step, label }) · param.num(2.5, …) · param.pct(0.07, …) · param.bool(true, { label }) · param.choice("EMA", ["SMA", "EMA"], { label }) · param.enum("ema", { ema: "Hàm mũ", sma: "Đơn giản" }) · param.price(null) · param.time(null) · param.symbol("VNINDEX")

Đầu ra​

line(x, { color, width, dash, step, points, offset }) · hist(x, { up, down, base }) · columns(x) · area(x, { base }) · band(tren, duoi, { fill }) · fill("A", "B", { color, below }) · hline(70, { dash }) · shape(dk, { at: "above" | "below" | "value" | "top" | "bottom", shape, char, text, size, value }) · bgcolor(dk, { color, opacity }) · barcolor(dk, { color }) · candles({ open, high, low, close }, { up, down, wick, when })

Chung: pane, opacity, format, hidden, colors: [{ when, color }]. Màu: up down accent ref ceil floor ai text textMuted palette.0…palette.5 #RRGGBB(AA).

onBar — ctx​

ctx.open/high/low/close/volume/time · ctx.i ctx.closed ctx.realtime ctx.warmup ctx.symbol ctx.resolution · ctx.v.x ctx.prev("x", k) ctx.bar(k) · ctx.ta.sma/ema/rma/wma/rsi/stdev/sum/slope/highest/lowest/prev/change/cum/barsSince/crossAbove/crossBelow/cross/valueWhen/atr · ctx.track("x", v).at(k) · ctx.persist("k", () => ({})) · ctx.draw.line/box/label/polyline/remove/clear · ctx.table(ten, { position, header, rows }) · ctx.log(…) · ctx.alert(ten, loi) · ctx.ltf("x") (mảng nến nhỏ của d.ltf)

Thư viện​

library({ name, exports: { ham: (d, n) => …, HANG: 3 } }) · const lib = use("<id>@<phiên bản>") — Thư viện

Chiến lược​

signals → { entry, exit, limit, stop, short } · filter · risk { stopLoss, takeProfit, trailingStop, maxHoldBars, stopMode } · portfolio { capital, sizing, pyramiding } · execution { at, delay, validBars } · costs { fees, sellTax, slippage, impact } · rules { settlement, lotSize, priceLimit, limitLock, maxAdvPct, … } · Studio: universe, optimize, rank / select, weights · lệnh giấy trong onBar: ctx.buy ctx.sell ctx.order ctx.exit ctx.closePosition ctx.cancel · ctx.position ctx.orders ctx.equity ctx.cash

Đổi từ cách nghĩ thông thường​

MuốnViết
Giá trên MAd.close.gt(ta.sma(d.close, 50))
Hai điều kiệna.and(b)
Hôm quax.shift(1)
Cắt lêna.crossAbove(b)
Đỉnh n nến trước (để bứt phá)d.high.highest(n).shift(1)
Chỉ lần đầu đúngdk.and(dk.shift(1).fillna(0).not())
Nếu – thì – không thìa.where(dk, b)
% thay đổi n nếnd.close.pct(n) (tỷ lệ) · ta.roc(d.close, n) (%)
Vẽ một sốhline(70) · line(d.const(x))
Nhớ qua các nếnstate + onBar

Lỗi hay gặp​

> / && với chuỗi → dùng .gt() / .and() · shift(-1) → nhìn trước · giá trị onBar không vẽ → đưa qua o · ctx.ta trong if → gọi trước hoặc truyền khoá · d.tf khung nhỏ hơn biểu đồ → d.ltf · rank / topN chỉ ở Studio · use(…) sai id / phiên bản — Lỗi thường gặp