用途:为 openalgo-charts 图表库扩展自定义能力,包括叠加层、标注、区间带、绘图工具、图表类型和指标。库中没有插件加载器,所有可扩展点都是注册表条目或 primitive,无需改动核心文件。
选择扩展点:需要独立数据、自动缩放和价格刻度身份时用 registerChartType 注册图表类型;由用户点击拖拽放置的形状用 registerDrawingTool 注册绘图工具;按每根 K 线计算并需要独立面板、图例行和设置时用 registerIndicator 注册指标;其余绘制内容(区间带、区域、标签、水印、自定义轴标记)用 IPrimitive。默认优先 primitive,它最轻量灵活。
实现规则:绘制使用位图像素,画布上下文已按设备缩放,所有媒体像素值需乘以 ctx.dpr,否则在高分屏上模糊漂移;锚点存数据空间 { time, price } 并在绘制时转换,时间轴无间隙,像素锚点会随缩放滑动;z-order 中 bottom 在系列后、normal 在基础画布上、top 在随光标重绘的叠加画布上,跟随指针的内容放 top;autoscaleInfo 每次布局都会运行,应返回预计算范围;可命中测试的 primitive 需稳定 externalId;在 detached 中清理定时器、订阅和缓存位图;注册必须写入包入口而非深层路径,否则会创建第二个注册表 Map 导致注册不可见;图表类型需在 addSeries 之前注册;绘制文本和日志中不使用表情或图标。
用法:先对照本地类型定义确认接口形状,可运行 rg -n "interface IPrimitive|interface RendererEntry|interface DrawingTool|interface IndicatorDescriptor" node_modules/openalgo-charts/dist/index.d.ts node_modules/openalgo-charts/dist/draw/index.d.ts。实现后参考仓库测试模式编写无画布单元测试,运行 npx vitest run 和 npx tsc --noEmit 验证。
限制:资料未提供具体版本要求、平台支持范围及收费信息;接口成员名以 dist/index.d.ts 为准。