使用 Cursor AI 和云服务快速开发一个自动跟踪资产可视化小工具

427 阅读6分钟

我想做一个投资实验,花 200 元买入一些资产(A股、美股、数字货币),看看一年后这些资产值多少钱。

最终我使用 AI 和云服务快速开发一个了一个小工具, 只要访问这个页面就能方便的看到当天的价格和历史走势: space.link1987.cn/fund_thomas…

下面叙述我的开发过程。

开始

我没有打算寻找直接可用的工具,而是打算尝试使用 AI 和云服务快速开发一个小工具,理由如下:

  1. 找工具也很麻烦,可能比自己 DIY 更费时间。
  2. 工具可能无法满足我的个性化需求,比如我想以图表形式展示,我想记录每天的数据,我还想把图表分享给其他人查看等等。
  3. 开发小工具在之前可能很麻烦,但是随着 AI 和各种基础服务的不断完善,开发小工具可能会变得更容易,手拿把掐就搞定了。

我的核心需求很简单:将 200 元分成 5 份,每份 40 元,分别“模拟”买入标普 500,纳斯达克,中概股,沪深 300 和比特币这 5 类资产,并可以随时查询这些资产的价格以及我的资产总价格。

我使用 Cursor 作为 AI 助手和代码编辑器。

像做其他事一样,对于复杂的事,我选择渐进式实现,一点一点来。

第一阶段

首先,我问 Cursor:

使用 Python 帮我实现:获取标普500 和 纳斯达克 的指数

Cursor 帮我实现了,执行 python 脚本后可以打印出来。我学习到 cursor 使用了 yfinance ( import yfinance as yf ) 这是一个 Yahoo Finance 的免费服务。

继续问 Cursor:

增加资产,我还想获取沪深300的指数

Cursor 实现了。

继续问 Cursor:

增加资产,我还想获取 中证海外中国互联网50 的指数

我为什么单独问呢?因为我发现 中证海外中国互联网50 不像沪深300, 标普500 那么主流。为了避免失去控制,我选择渐进式的一点一点来。果然 Cursor 写的不是很对,所以我调整了问题:

增加资产,我还想获取 中证海外中国互联网50(股票代码是 H30533.SS) 的指数

这次 Cursor 写对了。

我不知道 yfinance 能不能查比特币价格,所以我试探性的问 Cursor:

增加资产,我还想获取 比特币的价格

Cursor 实现了,而且也是使用的 yfinance. 但是有些代码稍显多余,我仿照之前的代码手动做了修改:

    nasdaq = yf.Ticker("^IXIC")
    sp500 = yf.Ticker("^GSPC")
    hs300 = yf.Ticker("000300.SS")
    china_internet = yf.Ticker("H30533.SS")
    bitcoin = yf.Ticker("BTC-USD")

到现在为止,我可以一键运行脚本,然后在命令行中看到资产的价格了。

第二阶段

我不想在命令行中查看,我想在 excel 查看,而且我想把数据保存下来,所以我继续问 Cursor

把结果做成表格,格式是 csv, 保存到文件中

Cursor 实现了,并且贴心的自动实现了增量写入:)

到现在为止,我可以直接在一个文件中查看了,我也可以把文件发给其他人看。

第三阶段

我通过刚刚写的脚本,获取到当前的价格,然后继续问 Cursor

增加一列“总资产”,总资产初始为 200 元,总资产有 5 个子资产决定,5 个子资产分别占 20%  
  
5 个子资产的初始点数是:  
纳斯达克综合指数,18439.17  
标普500指数,5782.76  
沪深300指数,4084.18  
中证海外中国互联网50,7893.96  
比特币(USD),71990.44  
  
总资产初始为 200

Cursor 没写对,于是我又来来回回和 Cursor 做了以下对话

不对,我指的是我的总资产是 200 元,每个子资产的价值是 40 元(因为有 5 个子资产,每个占比 20%)

...

总资产做为单独的一行显示,不要显示在每一列。另外“指数名称”改为“资产名称”

...

总资产的价格和涨跌幅也要计算。总资产的价格为子资产的价格和,初始价格为 200

Cursor 终于写对了。虽然和 Cursor 反复沟通了很多,不过效率比自己写快多了,而且脑力消耗要远远小于自己写代码

到现在为止,我可以直接看到我的“投资”的价格,不用自己计算了。

第四阶段

在表格中查看,数据密密麻麻的对眼睛不好, 所以我想做一个页面,在页面中展示一个图表直接查看。我继续问 Cursor

我想将csv文件中的数据显示为图表,并通过浏览器访问

Cursor 实现了。我发现 Cursor 用了 Flask 做后端,使用 plotly 做数据可视化。

不过我不想起后端服务,因为对于我来说太重了,我想直接生成一个 html 文件,于是我继续问 Cursor

我想生成一个静态的页面,访问这个静态页面看到的效果和访问 live.py serve 页面的效果一样

我又主动让 Cursor 做了一些调整和改 bug,比如

把 gen_html.py 整合到 update_market.indices.py 中,不需要两个命令,只执行一个命令就可以同时生成 csv 和 html

...

页面没有适配移动端

Cursor 搞定了。

到现在为止,我可以浏览器中的直观的查看到图表了。

image.png

第五阶段

我想每天自动记录一次,并且想直接在线访问。

我向 Cursor 需求方案,Cursor 和我说使用函数计算和对象存储来实现,并推荐了 AWS, 阿里云和腾讯云。

我心中的方案是 Github Action 和腾讯云对象存储(因为我有现成的),我又问 Cursor, Cursor 说没问题,并且帮我写了 Github Action 的代码和腾讯云相关的代码(在和我的不断对话中)

最终,我部署了服务,服务每天会自动更新数据,并且我访问页面可以直接查看 space.link1987.cn/fund_thomas…

总结

  1. 使用 AI 可以大大提高开发效率,甚至完成之前无法完成的编程工作。不过,编程思维和专业知识仍然需要,在使用 Cursor 的过程中,我会浏览代码并手动对代码修修补补,这对完全没有编程经验的人来说是很难做到的。
  2. 掌握更高层的软件知识还是很重要的,在这次过程中,我一开始就有了大致的实现方案:使用 python 查市场信息并生成数据,将数据可视化展示,借助云服务跑定时任务,借助云服务存储静态数据,通过 web 访问静态数据。在心中有了大致方案的基础上,和 AI 对话效率更高,并且更容易发挥 AI 的潜力。