技能使用指南

generate-asset-price-chart(生成资产价格图表)Skill 是什么?如何把 OHLC 数据快速渲染成 K 线图?

想把手里的 OHLC 数据一键变成专业 K 线图?生成资产价格图表 Skill 专注蜡烛图渲染,零 API 调用、支持 Node.js canvas 与 Python matplotlib 双路径,内置数据校验、暗色网格与红绿蜡烛样式,适合后台作业、交易机器人与行情日报批量出图。看本文了解安装步骤、调用示例、竞品对比与常见问题,快速接入你的数据管道。

生成资产价格图表Skillgenerate-asset-price-chart
8 个章节 约 14 分钟阅读 AI 智能生成

生成资产价格图表Skill:把一份 OHLC 数据一键渲染成专业 K 线图

  • 只做一件事,做到极致:这个技能专注“把已有的 OHLC 蜡烛数据画成 K 线图”,不联网、不调行情 API,渲染逻辑干净可复用。
  • 双语言实现路径:Node.js 侧用 canvas,Python 侧用 matplotlib,同一份输入格式 [时间戳, 开盘, 最高, 最低, 收盘] 两边通用。
  • 零外部依赖风险:不需要任何行情 API Key、不需要联网,适合跑在后台作业、机器人、批处理流水线里。
  • 开箱即用的工程细节:内置数据校验、暗色背景、水平网格、绿色看涨/红色看跌蜡烛、最小实体高度处理“一字线”。
  • 最适合“数据已经有了、只差一张图”的场景:把数据获取(ETL)与可视化彻底解耦,避免重复造轮子。

1. 该技能叫什么?如何一键安装 AI 技能提升开发效率?

技能基本信息

项目 内容
技能中文名 生成资产价格图表Skill
技能英文名 generate-asset-price-chart
技能ID 13121
核心能力 基于现有 OHLC 数据生成 K 线(蜡烛图)PNG 图像
边界 不处理数据获取,不做 API 调用,不负责行情抓取

它解决什么问题?

在量化回测、交易机器人、资产看板、社群日报等场景里,开发者往往已经拿到了结构化的 OHLC 数据,却卡在“最后一百米”——把它画成一张能看、能发、能存档的图。自己从零写渲染逻辑,要处理坐标映射、灯芯与实体绘制、扁平蜡烛可见性、y 轴方向颠倒等一堆细节。这个技能把这一层逻辑标准化,直接调用即可。

“一键安装”AI 技能的思路与步骤

  1. 确认安装前提:你已经具备结构化的 OHLC 数据(数组格式:[时间戳, 开盘, 最高, 最低, 收盘]),并已具备 Node.js 或 Python 运行环境之一。
  2. 在技能市场/技能管理入口中检索技能:使用技能英文名 generate-asset-price-chart 或技能ID 13121 进行检索并添加该技能。具体的市场入口地址、添加命令与授权方式请以官方说明为准。
  3. 安装渲染依赖(这是技能真正跑起来的必要条件,技能详情中已明确给出):
    • Node.js 方案:npm install canvas
    • Python 方案:python -m pip install matplotlib
  4. 验证是否生效:用技能详情中自带的 5 行示例数据跑一次,若成功输出 candlestick.png 且日志打印“已保存:candlestick.png”,说明安装与渲染链路均已打通。
  5. 接入你的数据管道:把获取 OHLC 的模块与调用本技能的渲染模块串联,形成“取数 → 渲染 → 保存/推送”的自动化流程。

整体思路就是:技能负责“画”,你的代码负责“喂数据”。这种职责分离正是一键式 AI 技能提升开发效率的关键——你不用再为每一类图表重复写样板代码。

2. 该技能的主要功能和特点

  • 任意资产、任意时间框架通用:输入只有 OHLC 四价加时间戳,因此股票、加密货币、外汇、大宗商品、甚至非金融的时间序列,只要能被转换成“开高低收”语义,都能渲染。
  • 纯渲染、零网络请求:技能详情明确声明“无外部 API”。这意味着它可以在离线环境、内网、后台作业、定时任务中稳定运行,不受行情服务限流或宕机影响。
  • 双技术栈支持:Node.js 用 canvas 生成 PNG Buffer,Python 用 matplotlib 绘图,团队用哪种语言就用哪种,不必强行迁移。
  • 内置数据校验函数 validateOhlc:非空数组检查、每行长度检查、OHLC 数值必须为有限数字,出错时直接抛出带索引的可读错误信息,定位问题非常快。
  • 专业级默认视觉:暗色背景(#1e1e2e)、5 条水平网格线、看涨绿色(#4caf50)、看跌红色(#f44336)、灯芯与实体分离绘制。
  • 细节打磨到位:蜡烛实体最小高度设为 2 像素,保证“开盘=收盘”的扁平蜡烛依然可见;价格区间下限用 1e-9 兜底,避免除零。
  • 可配置的画布参数:width、height、padding 均可通过 options 传入,默认 1200×600,适配网页展示、报告插图、聊天机器人卡片等不同尺寸需求。
  • 与普通图表库的差异:普通图表库是“通用可视化工具箱”,需要你理解数据映射与蜡烛图配置;本技能是“开箱即用的 K 线渲染器”,函数签名即契约,减少配置成本。
  • 可组合性:技能文档明确建议与“指标计算”类技能、“行情获取”类技能组合使用,形成职责清晰的技能链。

3. 如何使用该技能?

步骤 1:准备输入数据

输入是一个二维数组,每一行为 [时间戳, 开盘, 最高, 最低, 收盘]。时间戳可以是 Unix 毫秒,也可以是任意 x 轴标签值(技能仅用它作为横轴定位依据)。示例如下:

const sample = [
  [1700000000000, 100, 110, 95, 108],
  [1700000600000, 108, 112, 104, 106],
  [1700001200000, 106, 115, 103, 113],
  [1700001800000, 113, 118, 109, 111],
  [1700002400000, 111, 119, 110, 117],
];

步骤 2:调用渲染函数

Node.js 路径下,导入 generateCandlestickChart(ohlcData, options),传入数据与可选参数(width / height / padding),函数返回 PNG 格式的 Buffer。

步骤 3:保存或输出图像

import { writeFile } from "node:fs/promises";
const image = generateCandlestickChart(sample, { width: 1200, height: 600 });
await writeFile("candlestick.png", image);
console.log("已保存:candlestick.png");

步骤 4:校验输出结果

按技能详情中的“代理提示”约定,调用后应返回三样东西:

  1. 实际使用的代码;
  2. 输出文件名(如 candlestick.png);
  3. 简短验证说明,例如“本次共渲染 5 根蜡烛,最高价 119,最低价 95”。

步骤 5:在 AI Agent 中调用时的提示词写法

技能详情给出了推荐提示词模板,核心约束是两句:“不要获取市场数据,不要添加 API 逻辑。” 同时明确输出要求(代码、文件名、验证说明)。把你自己的 OHLC 数据贴进提示词,即可让 Agent 直接产出可运行的渲染脚本。

步骤 6:排错检查

  • 报 Module not found: canvas → 执行 npm install canvas
  • Python 导入 matplotlib 失败 → 执行 python -m pip install matplotlib
  • 图表空白或整体扁平 → 检查 OHLC 值是否为数字、且各蜡烛之间确有变化
  • 感觉 y 轴上下颠倒 → 复核价格到像素的转换公式,确认“更高价格映射到更小的 y 值”

4. 同类型竞品对比分析

方案名称 定位 核心功能 安装/使用门槛 适用场景 优势与不足
生成资产价格图表Skill(本技能) 轻量级 K 线渲染器技能 输入 OHLC 数组,输出 PNG 蜡烛图,含校验、网格、明暗配色 低:装好 canvas 或 matplotlib 即可,无需 API Key 后台作业出图、机器人推送、批量报告、Agent 数据管道 优势:零联网、职责单一、双语言、内置校验;不足:不含交互、不含指标计算、不含数据获取
TradingView Lightweight Charts 前端交互式金融图表库 浏览器内可缩放、可拖动的专业 K 线组件 中:需前端工程与 DOM 环境,需要自行处理数据适配 网页端行情看板、交互式产品 优势:交互体验顶级;不足:无法直接在服务端产出 PNG,不适合无头批处理
Python mplfinance 基于 matplotlib 的金融绘图封装 一行代码画 K 线,支持成交量、均线叠加 中:需熟悉 matplotlib 生态与样式参数 研究分析、Notebook 探索 优势:生态成熟、样式丰富;不足:依赖较重,服务端批量出图需调优,非 JS 技术栈无法复用
ECharts / 通用可视化库 通用图表工具箱 支持蜡烛图类型,配套大量图表类型 中高:需理解配置项体系,蜡烛图需手写数据映射 综合型后台管理系统 优势:一库多图;不足:配置成本高,K 线细节(灯芯、扁平实体)需要额外处理

选型建议:如果你需要“服务端批量、无人值守地生成图片文件”,本技能最贴合;如果需要用户在前端拖拽缩放,选交互式图表库;如果已经在 matplotlib 生态里做研究,mplfinance 更顺手。

5. 该技能的典型应用场景与实际体验情况

场景一:量化研究员的回测复盘 角色是策略研究员,痛点是每次回测结束都要手工截图或重写绘图脚本。使用方式:把回测输出的 OHLC 序列直接传入渲染函数,批量生成每只标的、每个时间窗口的 K 线图,归档到报告目录。实际体验:上手难度低,函数签名清晰,一次接入后可以固化成公共方法;需要注意数据长度过大时画布宽度要相应放大,否则蜡烛会挤在一起。

场景二:交易机器人 / 定时后台作业 角色是后端工程师,痛点是机器人只发文字数字,用户看不懂趋势。使用方式:在定时任务中拉取最近 N 根 K 线,渲染成 PNG,随消息一起推送。实际体验:因为技能不做任何 API 调用,作业不会因行情服务波动而失败,稳定性明显提升;建议把图片尺寸固定为统一规格,便于前端卡片布局。

场景三:社群运营与内容创作者 角色是内容运营,痛点是每天要出“行情日报”配图。使用方式:把数据源导出的 OHLC 喂给技能,生成统一风格的暗色 K 线图,直接插入日报。实际体验:暗色背景加红绿蜡烛的默认样式本身就足够专业,几乎不用调样式;但要注意技能不含坐标轴文字与价格标签,若需要标注具体价位,需要在外部叠加或二次处理。

场景四:AI Agent 数据处理流水线 角色是搭建 Agent 工作流的开发者。使用方式:让 Agent 先调用取数技能拿到 OHLC,再调用本技能渲染,最后按“代码 + 文件名 + 验证说明”的格式回报。实际体验:技能详情中的“代理提示”把边界写得很死(不要取数、不要加 API 逻辑),有效降低了 Agent 越界行为的概率;建议在提示词里强调“先校验数据形状再渲染”,可进一步减少返工。

6. 该技能能为用户带来的价值

  • 时间成本:从零手写一套 K 线渲染逻辑(坐标映射、灯芯、实体、网格、扁平蜡烛兜底)通常需要数小时到一天,用本技能可压缩到几行调用。
  • 稳定性收益:零外部 API 依赖意味着没有限流、没有密钥过期、没有第三方故障传导,后台作业的成功率显著提升。
  • 维护成本下降:渲染逻辑集中在一处,样式与参数统一,避免每个项目各写一套、风格各异。
  • 技术栈自由:Node.js 与 Python 双路径,团队不必为了出图引入陌生技术栈。
  • 可组合的长期价值:作为技能链中的“可视化末端节点”,它可以和取数、指标计算等技能自由拼装,未来替换数据源时无需改动绘图部分,架构弹性更好。
  • 降低门槛:即使不熟悉 canvas 或 matplotlib 的细节,只要能把数据整理成 [时间戳, 开盘, 最高, 最低, 收盘],就能产出专业观感的图表。

7. 常见问题 FAQ

Q1:这个技能怎么安装?需要联网或 API Key 吗? A:先在技能入口检索技能英文名 generate-asset-price-chart 或技能ID 13121 添加技能(具体入口与命令以官方说明为准),再安装渲染依赖:Node.js 执行 npm install canvas,Python 执行 python -m pip install matplotlib。技能本身不需要任何外部 API,也不需要 API Key,渲染过程完全离线。

Q2:它能帮我抓取行情数据吗? A:不能,这是刻意设计的边界。技能详情明确写着“仅专注于图表生成逻辑(无 API 调用)”“不处理数据获取”。你需要先用别的方式拿到 OHLC 数据,再交给它渲染。这样做的好处是职责单一、稳定可预测。

Q3:收费吗? A:技能详情中未包含任何定价信息,是否收费以及具体的计费方式请以官方说明为准。技能本身依赖的 canvas 与 matplotlib 都是开源生态组件。

Q4:适合谁用? A:最适合三类人:需要批量出图的后端/量化工程师、搭建交易机器人或行情日报的开发者、以及把图表生成作为一环接入 AI Agent 工作流的构建者。如果你需要的是网页端可交互拖拽的行情图,本技能并不对口。

Q5:生成出来的图能自定义样式吗?支持哪些参数? A:技能详情中公开的可配置项包括画布 width、height 与 padding(默认 1200×600、边距 60),配色与网格线在渲染逻辑中固定为暗色背景 + 绿涨红跌。若需要更深的样式定制,可以基于技能给出的代码自行扩展,但超出部分属于二次开发,不在技能原有能力范围内。

Q6:图表画出来是空白的怎么办? A:按技能详情中的故障排除清单逐项检查:确认 OHLC 每行至少 5 个元素、四个价格均为有限数字、不同蜡烛之间价格确有变化;若感觉上下颠倒,复核价格到像素的转换是否把更高价格映射到更小的 y 值。