Chỉ báo
134 chỉ báo có sẵn. Thêm một chỉ báo bằng id của nó; tham số bạn bỏ qua sẽ lấy giá trị mặc định, và tham số không hợp lệ cũng quay về giá trị mặc định.
● DemoMẫu nến và các ô chỉ báoDữ liệu thị trường giả lập, sinh ngay trong trình duyệt của bạnThêm một chỉ báo
const ema = chart.addIndicator('ema', { period: 50 }) // on the price pane
const rsi = chart.addIndicator('rsi', { period: 14 }, 'bottom') // in a pane of its own
chart.updateIndicator(rsi, { period: 21 })
chart.removeIndicator(rsi) addIndicator trả về một id instance: cùng một chỉ báo có thể thêm nhiều
lần, mỗi instance có thông số, màu và mức riêng.
Nguồn dữ liệu và chỉ báo trên chỉ báo
Các chỉ báo có đánh dấu nguồn bên dưới có thể chạy trên một giá khác giá đóng cửa
(open, high, low, hl2, hlc3, ohlc4, hlcc4) hoặc trên đường của một chỉ báo khác. Đường trung bình động của RSI
được vẽ trong bảng của RSI, trên thang của RSI, và bị xoá cùng lúc với RSI.
import { indicatorSource } from '@tradecanvas/chart'
chart.updateIndicator(ema, { source: 'hlc3' })
const smoothed = chart.addIndicator('sma', { period: 9, source: indicatorSource(rsi, 'value') }) Các chỉ báo ở bảng riêng cũng có thể dùng chung một bảng: chart.addIndicator('stochastic', {}, 'bottom', { pane: rsi }).
Mức, màu và giá trị
chart.setIndicatorLevels(rsi, [20, 50, 80]) // null restores 30 / 70
chart.updateIndicatorStyle(rsi, { colors: ['#f2a93b'], lineWidths: [2] })
chart.setIndicatorVisible(rsi, false)
const series = chart.getIndicatorOutput(rsi)?.series ?? []
const latest = series[series.length - 1]?.value // keyed by the line keys below Giá trị mới nhất của mỗi đường được gắn nhãn trên trục bằng màu của đường đó; tắt các nhãn này bằng features.indicatorValueLabels: false hoặc setIndicatorValueLabelsVisible(false).
Các đường, mức, trục và con trỏ chữ thập trong cùng một bảng dùng chung một thang.
Trên bảng giá chính (48)
| id | Tên | Tham số mặc định | Đường |
|---|---|---|---|
sma | Simple Moving Average· nguồn | period: 20, source: "close" | SMA |
ema | Exponential Moving Average· nguồn | period: 20, source: "close" | EMA |
bb | Bollinger Bands· nguồn | period: 20, stdDev: 2, source: "close" | Upper, Basis, Lower |
vwap | Volume Weighted Average Price | — | VWAP |
ichimoku | Ichimoku Cloud | tenkan: 9, kijun: 26, senkou: 52, displacement: 26 | Conversion, Base, Lead A, Lead B |
psar | Parabolic SAR | step: 0.02, max: 0.2 | SAR |
supertrend | Supertrend | period: 10, multiplier: 3 | Supertrend |
keltner | Keltner Channel | emaPeriod: 20, atrPeriod: 10, multiplier: 1.5 | Upper, Basis, Lower |
donchian | Donchian Channel | period: 20 | Upper, Basis, Lower |
pivots | Pivot Points | lookback: 24, type: "traditional" | R3, R2, R1, P, S1, S2, S3 |
avwap | Anchored VWAP | anchorTime: 0 | AVWAP |
zigzag | ZigZag | deviation: 5 | Pivot |
lrc | Linear Regression Channel· nguồn | period: 100, stdDev: 2, source: "close" | Upper, Basis, Lower |
hma | Hull Moving Average· nguồn | period: 21, source: "close" | HMA |
mtfma | MTF Moving Average· nguồn | period: 50, timeframe: "1d", source: "close" | MA |
svwap | Session VWAP | bands: 1 | VWAP, +1σ, −1σ, +2σ, −2σ, +3σ, −3σ |
chandelier | Chandelier Exit | period: 22, multiplier: 3 | Long, Short |
alligator | Alligator | jaw: 13, teeth: 8, lips: 5, jawShift: 8, teethShift: 5, lipsShift: 3 | Jaw, Teeth, Lips |
vwma | Volume Weighted Moving Average· nguồn | period: 20, source: "close" | VWMA |
wma | Weighted Moving Average· nguồn | period: 20, source: "close" | WMA |
envelope | Moving Average Envelope· nguồn | period: 20, percent: 2.5, source: "close" | Upper, Basis, Lower |
tema | Triple EMA· nguồn | period: 20, source: "close" | TEMA |
volumeProfile | Volume Profile | rows: 24 | — |
dema | Double Exponential Moving Average· nguồn | period: 20, source: "close" | DEMA |
smma | Smoothed Moving Average· nguồn | period: 14, source: "close" | SMMA |
alma | Arnaud Legoux Moving Average· nguồn | period: 9, offset: 0.85, sigma: 6, source: "close" | ALMA |
kama | Kaufman Adaptive Moving Average· nguồn | period: 10, fast: 2, slow: 30, source: "close" | KAMA |
lsma | Least Squares Moving Average· nguồn | period: 25, offset: 0, source: "close" | LSMA |
mcginley | McGinley Dynamic· nguồn | period: 14, source: "close" | McGinley |
macross | MA Cross· nguồn | fast: 9, slow: 21, type: "sma", source: "close" | Fast, Slow |
fractals | Williams Fractals | period: 2 | Up, Down |
cks | Chande Kroll Stop | p: 10, x: 1, q: 9 | Stop Long, Stop Short |
seb | Standard Error Bands | period: 21, mult: 2, smooth: 3 | Upper, Middle, Lower |
gmma | Guppy Multiple Moving Average | — | EMA 3, EMA 5, EMA 8, EMA 10, EMA 12, EMA 15, EMA 30, EMA 35, EMA 40, EMA 45, EMA 50, EMA 60 |
maribbon | Moving Average Ribbon | ma1: 20, ma2: 50, ma3: 100, ma4: 200, exponential: 0 | MA 1, MA 2, MA 3, MA 4 |
avgprice | Average Price | — | Average |
medprice | Median Price | — | Median |
typprice | Typical Price | — | Typical |
machannel | Moving Average Channel | upperLength: 20, lowerLength: 20, upperOffset: 0, lowerOffset: 0 | Upper, Lower |
hamming | Moving Average Hamming· nguồn | period: 10, source: "close" | MA |
madouble | Moving Average Double· nguồn | first: 20, second: 50, type: "sma", source: "close" | MA 1, MA 2 |
matriple | Moving Average Triple· nguồn | first: 10, second: 20, third: 50, type: "sma", source: "close" | MA 1, MA 2, MA 3 |
volindex | Volatility Index | period: 7, mult: 3 | Stop |
tsf | Time Series Forecast | period: 14 | TSF |
wclose | Weighted Close | — | Weighted |
demark | DeMark Projected Range | — | Projected high, Projected low |
rainbow | Moving Average Rainbow | first: 10, step: 10, count: 10, exponential: 0 | MA 1, MA 2, MA 3, MA 4, MA 5, MA 6, MA 7, MA 8, MA 9, MA 10, MA 11, MA 12, MA 13, MA 14, MA 15, MA 16, MA 17, MA 18, MA 19, MA 20 |
candlepatterns | Candlestick Patterns | trendPeriod: 10, reversal: 1, continuation: 1, indecision: 0 | Bullish, Bearish, Indecision |
mtfma vẽ một đường trung bình động từ khung thời gian lớn hơn lên biểu đồ hiện tại — ví dụ
MA50 khung ngày trên nến 1h. Nó chỉ lấy trung bình các giá đóng cửa đã hoàn tất của khung lớn hơn, nên
đổi bậc tại mỗi ranh giới và không bao giờ vẽ lại (repaint).
Trong bảng riêng (86)
| id | Tên | Tham số mặc định | Đường | Mức |
|---|---|---|---|---|
rsi | Relative Strength Index· nguồn | period: 14, source: "close" | RSI | 30, 70 |
macd | MACD· nguồn | fast: 12, slow: 26, signal: 9, source: "close" | Histogram, MACD, Signal | — |
stochastic | Stochastic Oscillator | kPeriod: 14, dPeriod: 3, smooth: 3 | %K, %D | 20, 80 |
atr | Average True Range | period: 14 | ATR | — |
adx | Average Directional Index | period: 14 | ADX, +DI, −DI | — |
obv | On Balance Volume | — | OBV | — |
williamsR | Williams %R | period: 14 | %R | -80, -20 |
cci | Commodity Channel Index | period: 20 | CCI | -100, 0, 100 |
mfi | Money Flow Index | period: 14 | MFI | 20, 80 |
aroon | Aroon | period: 25 | Up, Down | — |
roc | Rate of Change· nguồn | period: 12, source: "close" | ROC | 0 |
tsi | True Strength Index· nguồn | longPeriod: 25, shortPeriod: 13, signalPeriod: 7, source: "close" | TSI, Signal | 0 |
cmf | Chaikin Money Flow | period: 20 | CMF | — |
stddev | Standard Deviation· nguồn | period: 20, source: "close" | StdDev | — |
ad | Accumulation/Distribution | — | A/D | — |
vroc | Volume Rate of Change | period: 14 | VROC | 0 |
ao | Awesome Oscillator | fast: 5, slow: 34 | AO | — |
chaikinOsc | Chaikin Oscillator | fast: 3, slow: 10 | Chaikin | — |
voldelta | Volume Delta | mode: 0 | Delta | — |
vortex | Vortex Indicator | period: 14 | VI+, VI− | 1 |
chop | Choppiness Index | period: 14 | CHOP | 38.2, 61.8 |
uo | Ultimate Oscillator | fast: 7, mid: 14, slow: 28 | UO | 30, 70 |
fi | Force Index | period: 13 | EFI | 0 |
crsi | Connors RSI· nguồn | rsiPeriod: 3, streakPeriod: 2, rankPeriod: 100, source: "close" | CRSI | 10, 90 |
coppock | Coppock Curve· nguồn | longRoc: 14, shortRoc: 11, wma: 10, source: "close" | Coppock | 0 |
kst | Know Sure Thing· nguồn | roc1: 10, roc2: 15, roc3: 20, roc4: 30, sma1: 10, sma2: 10, sma3: 10, sma4: 15, signal: 9, source: "close" | KST, Signal | 0 |
elderray | Elder Ray | period: 13 | Bull, Bear | — |
stc | Schaff Trend Cycle· nguồn | fast: 23, slow: 50, cycle: 10, source: "close" | STC | 25, 75 |
kvo | Klinger Oscillator | fast: 34, slow: 55, signal: 13 | KVO, Signal | 0 |
fisher | Fisher Transform | period: 9 | Fisher, Trigger | 0 |
dpo | Detrended Price Oscillator· nguồn | period: 20, source: "close" | DPO | — |
bop | Balance of Power | smooth: 14 | BOP | 0 |
massindex | Mass Index | ema: 9, sum: 25 | Mass | 26.5, 27 |
cmo | Chande Momentum· nguồn | period: 9, source: "close" | CMO | -50, 0, 50 |
trix | TRIX· nguồn | period: 15, signal: 9, source: "close" | TRIX, Signal | 0 |
emv | Ease of Movement | period: 14 | EOM | 0 |
pvt | Price Volume Trend | — | PVT | — |
wad | Williams A/D | — | WAD | — |
chaikinvol | Chaikin Volatility | ema: 10, roc: 10 | CV | 0 |
rvi | Relative Vigor Index | period: 10 | RVGI, Signal | 0 |
stochrsi | Stochastic RSI· nguồn | rsiPeriod: 14, stochPeriod: 14, k: 3, d: 3, source: "close" | %K, %D | 20, 80 |
ppo | Percentage Price Oscillator· nguồn | fast: 12, slow: 26, signal: 9, source: "close" | Histogram, PPO, Signal | 0 |
ac | Accelerator Oscillator | — | AC | — |
rmi | Relative Momentum Index· nguồn | period: 20, momentum: 5, source: "close" | RMI | 30, 70 |
disparity | Disparity Index· nguồn | period: 14, source: "close" | DI | 0 |
qstick | Qstick | period: 8 | Qstick | 0 |
pgo | Pretty Good Oscillator | period: 14 | PGO | -3, 0, 3 |
bbpb | Bollinger Bands %B· nguồn | period: 20, stdDev: 2, source: "close" | %B | 0, 0.5, 1 |
bbw | Bollinger BandWidth· nguồn | period: 20, stdDev: 2, source: "close" | BBW | — |
mom | Momentum· nguồn | period: 10, source: "close" | MOM | 0 |
hv | Historical Volatility· nguồn | period: 10, annual: 365, source: "close" | HV | — |
vo | Volume Oscillator | short: 5, long: 10 | Vol Osc | 0 |
ulcer | Ulcer Index· nguồn | period: 14, source: "close" | Ulcer | — |
smi | Stochastic Momentum Index | period: 10, smooth: 3, signal: 3 | SMI, Signal | 40, -40 |
rvix | Relative Volatility Index | period: 10, smooth: 14 | RVI | 80, 50, 20 |
trendstrength | Trend Strength Index | period: 14 | Trend | 0 |
lrslope | Linear Regression Slope | period: 14 | Slope | 0 |
stderror | Standard Error | period: 14 | StdErr | — |
adr | Average Day Range | period: 14 | ADR | — |
netvolume | Net Volume | — | Net | 0 |
asi | Accumulative Swing Index | limit: 10 | ASI | — |
advdecline | Advance/Decline | length: 10 | Ratio | — |
majority | Majority Rule | period: 14 | Majority | 50 |
chopzone | Chop Zone | — | Angle | — |
smiergodic | SMI Ergodic· nguồn | short: 5, long: 20, signal: 5, source: "close" | Oscillator, Indicator, Signal | — |
po | Price Oscillator· nguồn | short: 10, long: 21, source: "close" | PO | — |
volohlc | Volatility O-H-L-C | period: 10, annual: 365 | Volatility | — |
volzt | Volatility Zero Trend Close-to-Close | period: 10, annual: 365 | Volatility | — |
psy | Psychological Line | period: 10 | PSY | 25, 75 |
newpsy | New Psychological Line | period: 10 | New PSY | -50, 0, 50 |
vr | Volume Ratio | period: 20 | VR | 70, 150, 450 |
abratio | AB Ratio | period: 26 | A, B | 100 |
sonar | Sonar | period: 20, lookback: 9, signal: 9 | Sonar, Signal | 0 |
sigma | Sigma | period: 20 | Sigma | -2, 0, 2 |
vhf | Vertical Horizontal Filter | period: 28 | VHF | — |
rsquared | R-Squared | period: 14 | R² | — |
rwi | Random Walk Index | period: 14 | RWI High, RWI Low | 1 |
nvi | Negative Volume Index | signal: 255 | NVI, Signal | — |
pvi | Positive Volume Index | signal: 255 | PVI, Signal | — |
tr | True Range | — | TR | — |
iii | Intraday Intensity | period: 21 | III % | 0 |
volpct | Volume vs Average | period: 20 | Vol % | 0 |
volchange | Volume Change | — | Volume | — |
tradevalue | Trade Value | — | Value | — |
binarywave | Binary Wave | ma: 20, fast: 12, slow: 26, signal: 9, roc: 12, stoch: 14 | Wave | 0 |
sroc | Smoothed Rate of Change | ema: 13, roc: 21 | S-ROC | 0 |
voldelta (Volume Delta) ước lượng áp lực mua/bán từ OHLCV — nến đóng cửa tăng
cộng khối lượng dương, nến giảm cộng khối lượng âm. mode: 0 là histogram theo từng nến, mode: 1 là delta luỹ kế. (Delta tick thực sự cần dữ liệu bid/ask theo từng giao dịch, thứ mà
một chuỗi OHLCV không có.)
Chỉ báo quen thuộc trên bảng giá châu Á
Những chỉ báo mà nhà đầu tư ở Hàn Quốc, Nhật Bản và Việt Nam quen thấy trên bảng giá: Psychological Line (psy, tâm lý) và New Psychological Line (newpsy), Volume Ratio (vr), AB Ratio (abratio), sonar, sigma, Binary Wave (binarywave), Trade Value (tradevalue, giá trị giao dịch) cùng Volume Change (volchange), vùng giá dự phóng DeMark (demark) và dải đường trung bình rainbow tới 20 đường. Trade Value là ước tính, giá đóng cửa × khối lượng mỗi nến; con số chính thức của sở giao dịch có trong nguồn dữ liệu của họ.
chart.addIndicator('psy', { period: 10 }, 'bottom') // tỷ lệ phiên tăng; đánh dấu 25 và 75
chart.addIndicator('vr', { period: 20 }, 'bottom') // khối lượng phiên tăng so với phiên giảm
chart.addIndicator('tradevalue', {}, 'bottom') // giá đóng cửa × khối lượng, mỗi nến
chart.addIndicator('rainbow', { first: 10, step: 10, count: 10 }) // mười đường trung bình, 10 đến 100 nến Mẫu nến
64 mẫu từ một đến năm nến: doji, búa và sao băng, marubozu và belt hold; nhấn chìm, harami, đường xuyên và mây đen, nhíp, kicking; sao mai và sao hôm, em bé bị bỏ rơi, ba chàng lính và ba con quạ, ba nến trong và ngoài, khoảng trống tasuki; three-line strike, ba phương pháp, mat hold, breakaway và ladder bottom. Mẫu đảo chiều chỉ được tính khi có xu hướng trước đó để đảo (giá đóng cửa trước mẫu vượt cả trung bình 10 nến lẫn giá đóng cửa 10 nến trước, trendPeriod), và thân nến dài hay ngắn được so với thân trung bình của các nến trước. Chỉ báo vẽ mũi tên dưới mẫu tăng và trên mẫu giảm, kèm tên viết tắt khi nến đủ rộng; nến kết thúc nhiều mẫu thì hiện mẫu dài nhất. reversal, continuation và indecision (1 hoặc 0) chọn loại mẫu.
chart.addIndicator('candlepatterns') // mũi tên và tên mẫu trên mỗi nến kết thúc một mẫu
chart.addIndicator('candlepatterns', { indecision: 1 }) // hiện cả doji và con xoay
import { detectCandlePatterns, CANDLE_PATTERNS } from '@tradecanvas/chart'
const found = detectCandlePatterns(bars, { patterns: ['bullishEngulfing', 'hammer'] })
// [{ index, time, pattern: { id, name, short, direction, kind, bars } }]
CANDLE_PATTERNS.length // 64 Chỉ báo của riêng bạn
Kế thừa IndicatorBase và khai báo những gì nó vẽ (plots), thang của bảng,
các mức và thông số; biểu đồ sẽ tự vẽ nó, co giãn bảng của nó, gắn nhãn giá trị và liệt kê nó trong
chú thích và phần cài đặt của widget mà bạn không phải viết dòng code vẽ nào. Xem hướng dẫn mẫu cho chỉ báo tuỳ chỉnh.
Bảng: đổi kích thước, thu gọn, phóng to, sắp xếp lại
Kéo đường phân cách phía trên một bảng để đổi kích thước. Trong ChartWidget, mỗi bảng có các nút ở góc phải trên: đưa bảng lên hoặc xuống, thu gọn chỉ còn dòng tiêu đề, phóng to (các bảng khác thu gọn lại, còn bảng giá chính giữ một dải hẹp). Bố cục đã lưu giữ kích thước, thứ tự, trạng thái thu gọn và phóng to của từng bảng. Làm điều tương tự bằng code:
chart.setPanelSize(rsi, 180) // px, clamped to a minimum
chart.setPaneCollapsed(macd, true) // fold to its header
chart.setMaximizedPane(rsi) // null puts the panes back
chart.movePane(rsi, -1) // one place up; 1 = down
chart.on('paneChange', (e) => e.payload.change) // 'collapsed' | 'maximized' | 'order' | 'scale'
chart.setPaneScale(atr, { log: true, invert: false }) // log while its values are above 0
chart.setPaneScale(atr, { percent: true }) // labels in percent of its first value on screen Bấm chuột phải vào một bảng trong ChartWidget để bật thang logarit, thang đảo ngược hoặc thang phần trăm riêng cho bảng đó.
Chuyển một chỉ báo sang bảng khác
Một chỉ báo có thể vào bảng của một chỉ báo khác (khi đó nó dùng chung thang của bảng đó), có bảng riêng, hoặc quay về bảng giá chính. Khi nó rời một bảng mà nó làm chủ, các chỉ báo khác trong bảng vẫn ở lại (chỉ báo kế tiếp trong bảng sẽ làm chủ bảng), và các chỉ báo đọc đường của nó sẽ đi theo nó. Trong ChartWidget, nút ⋯ trên một dòng chú thích cho chọn bảng phía trên, bảng phía dưới, một bảng mới và bảng giá chính.
chart.moveIndicatorToPane(cci, rsi) // into RSI's pane
chart.moveIndicatorToPane(cci, 'new') // a pane of its own
chart.moveIndicatorToPane(ema, 'price') // an overlay back to the price pane
chart.canMoveIndicatorToPane(cci, rsi) // whether it would move Hoàn tác và mẫu
Thêm, xoá, sửa và di chuyển chỉ báo đều là các bước hoàn tác, nằm chung lịch sử với hình vẽ (Ctrl/⌘ Z, Ctrl/⌘ Shift Z); một chỉ báo được khôi phục khi hoàn tác sẽ quay lại với đúng id cũ, nên các cảnh báo trên đường của nó vẫn khớp. Một loạt chỉnh sửa liền nhau trên cùng một chỉ báo (kéo chọn màu, gõ chu kỳ) tính là một bước. Khi tải một bố cục, lịch sử bắt đầu lại từ đầu.
Có thể lấy ra và đặt lại toàn bộ chỉ báo cùng một lúc, và đó chính là việc mẫu chỉ báo của ChartWidget làm: Lưu indicator thành mẫu… trong menu Chỉ báo lưu chúng (thông số, kiểu, mức, bảng) dưới một cái tên, còn chọn một mẫu sẽ đặt chúng vào thay cho các chỉ báo hiện có của biểu đồ, trong một bước hoàn tác.
const setup = chart.getIndicatorSetup() // what a layout keeps of them
chart.applyIndicatorSetup(setup) // in place of the chart's indicators
new ChartWidget(host, { indicatorTemplates: true }) // the default Tính toán bên ngoài biểu đồ
IndicatorWorkerHost tính một chỉ báo từ dữ liệu nến bằng chính các thông điệp mà một Web Worker
sẽ dùng. Script worker chưa có trong các gói đã phát hành, nên hãy truyền null và đăng ký
các plugin để tính ngay tại chỗ (SSR, test, script):
import { IndicatorWorkerHost, RSIIndicator } from '@tradecanvas/core'
const host = new IndicatorWorkerHost(null)
host.registerFallbackPlugin(new RSIIndicator())
const output = await host.calculate('rsi', { id: 'rsi', instanceId: 'rsi-1', params: { period: 14 } }, bars)