v1.9.0 雙層 Canvas 渲染,自由平移

為交易應用打造的圖表引擎。

從蠟燭圖到 Renko,95 個指標、69 種繪圖工具、交易所即時行情,還能直接在圖上下單。以 Canvas2D 繪製,零相依套件。可直接放入完整的 ChartWidget,或在 headless 的 Chart 上打造自己的介面。

Vanilla TSReactVueSvelte

連線中 · BINANCE · BTCUSDT · 5m 拖曳 平移滾輪 縮放拖曳座標軸 調整刻度
17
圖表類型
85
指標
40
繪圖工具
0
執行期相依套件
≈100kB
gzip 後的 headless 核心
<0.3ms
10 萬根K線下的懸停重繪
功能實驗室

每項功能,都在即時圖表上。

選擇一個場景。每個場景都會啟動完整的 ChartWidget,並設定成展示某項功能的狀態——之後就交給你拖曳、繪圖與切換。

斐波那契與江恩工具可自訂級別,另有艾略特波浪、諧波型態、筆記與筆刷。雙擊繪圖開啟設定,右擊開啟選單;警示會跟隨趨勢線,多/空部位工具會算出部位大小。

捲動到此處即可啟動即時圖表
切換商品或週期即可計時

試試看

  • 雙擊斐波那契回撤,編輯它的級別
  • 右擊一個繪圖:上移一層、群組或新增警示
  • 選擇筆刷或路徑工具;按 Enter 結束一條路徑
chart.addDrawing({
  type: 'riskReward',               // Long/Short Position
  anchors: [entry, stop],           // { time, price } each
  options: { accountSize: 10_000, risk: 1, rewardRatio: 2 },
})
chart.addDrawingAlert(trendLine, { condition: 'crossing' })
chart.groupDrawings([fib, note], 'Swing')
深入底層

經過量測、文件齊全,並可自由擴充

功能實驗室背後的引擎。以下每個數字都能用 pnpm bench 重現。

影格預算

0.001ms
10 萬根K線、4 個指標下的即時 tick
27ms
切換商品後完整重算,10 萬根K線
0.32ms
LTTB 降採樣,10 萬 → 1,600 個點
<0.3ms
懸停重繪,從 500 到 10 萬根K線都一樣快

兩層疊放的 Canvas:滑鼠懸停時只重繪上方輕量的那一層。每個渲染器都只走訪畫面上的K線。

手勢

拖曳
平移,可越過最後一根K線
滾輪
以游標為中心縮放
雙指縮放
在觸控螢幕上縮放
向右拖曳
邊拖邊載入更早的K線
拖曳座標軸
縮放該軸
Ctrl + 拖曳
選取繪圖
Shift + 拖曳
測量
Alt + 點擊
固定提示框
元件一次呼叫,完整交易介面
ChartWidget 內建工具列、繪圖側欄、自選清單、價格警示、物件樹、資料視窗、K線回放與命令面板(Ctrl+K),支援 16 種語言,從英文、越南文到中文、日文、韓文與阿拉伯文。
資料任何市場行情來源
內建 Binance、Coinbase、Bybit 與 Kraken 轉接器;其他來源可用 WebSocketAdapter 與 PollingAdapter。往回捲動時會自動載入更早的K線;斷線會自動重連,並捨棄已被取代的商品切換。
交易直接在圖上下單
ExecutionAdapter 搭配模擬券商,可拖曳建立委託、下括號單、拖曳停損與停利線,警示可發送到 webhook 與桌面通知。
框架React、Vue 與 Svelte
@tradecanvas/react、/vue 與 /svelte 以具型別的響應式 props 包裝同一個引擎。完整的 Chart 實例只需一個 ref 就能取得。
外掛每一層都能擴充
可註冊支援增量 update() 的自訂指標、繪圖工具、圖表類型與疊加層,全域或單一圖表皆可。
分析回測就在圖表旁
逐根K線執行的 Backtester,附蒙地卡羅區間帶;指標在 Web Worker 管線中運算,讓主執行緒保持空閒。
金融圖表

不只是蠟燭圖

迷你走勢圖、權益曲線、委託簿深度、類股熱力圖、瀑布圖與儀表圖,適用於投資組合與 KPI。

BTC $65,234
ETH $3,412
SOL $148.00
BNB $582.00
ADA $0.4500
DOT $7.23
投資組合績效
委託簿深度
加密貨幣市場熱力圖
損益歸因
恐懼與貪婪指數
快速開始

同一個圖表,五種上手方式

完整的 widget、框架元件或 headless 引擎,全部共用同一個渲染器。

import { ChartWidget } from '@tradecanvas/chart/widget'
import { BinanceAdapter } from '@tradecanvas/chart'

new ChartWidget(document.getElementById('chart')!, {
  symbol: 'BTCUSDT',
  timeframe: '5m',
  adapter: new BinanceAdapter(),
  locale: 'en',            // 14 languages: 'vi', 'ja', 'zh'…
  trading: true,
})

今天就在你的應用中放上即時圖表。