当前位置: 首页 > news >正文

完全使用TRAE和AI 开发一款完整的应用----第一周

虽然也在工作使用使用ai 补全代码或者完善代码,但还是没有完全使用ai 做一款应用,不依赖手工编程、不依赖人查找资料

所以决定自己写一个应用玩玩,感受一下全完使用ai开发一款应用的乐趣, 跟上时代发展的步伐

不得不说以前写玩具项目挺枯燥,现在用ai写 还是挺有意思的

应用的需求:

使用ai 分析 k线,并进行点评,让天底下的韭菜没有看不懂的k线,让ai进行cosplay 扮演各路专家进行点评,这不是一款应用这是一款ai驱动的综艺节目

考虑我国复杂的金融监管环境,对股票分析限制非常多,所以对 美股 和港股还有web3 领域的token 进行分析

下面是项目和代码文件

主要是一个图表组件TradingChart.tsx和首页 page.tsx 

image

TradingChart.tsx

'use client'; // 确保只在客户端渲染import { useEffect, useRef } from 'react';
import {createChart,CandlestickSeries,HistogramSeries,
} from 'lightweight-charts';export interface KLine {time: string; // 'YYYY-MM-DD'open: number;high: number;low: number;close: number;volume: number;
}interface Props {data: KLine[];
}export default function TradingChart({ data }: Props) {console.log(data);const containerRef = useRef<HTMLDivElement>(null);useEffect(() => {if (!containerRef.current || !data.length) return;const chart = createChart(containerRef.current, {width: containerRef.current.clientWidth,height: containerRef.current.clientHeight,layout: { textColor: '#d1d4dc', background: { color: '#111' } },grid:   { vertLines: { color: '#2a2e39' }, horzLines: { color: '#2a2e39' } },rightPriceScale: { visible: true },leftPriceScale:  { visible: true },crosshair: { mode: 1 },timeScale: {fixLeftEdge: false,fixRightEdge: false,barSpacing: 10,minBarSpacing: 5,},});chart.applyOptions({localization:{dateFormat: 'yyyy-MM-dd',}})/* ---- 蜡烛图 Pane(上方)---- */const candlePane = chart.panes()[0];const candleSeries = candlePane.addSeries(CandlestickSeries, {upColor: '#26a69a',downColor: '#ef5350',borderVisible: false,wickUpColor: '#26a69a',wickDownColor: '#ef5350',priceScaleId: 'right',});candleSeries.setData(data.map(({ time, open, high, low, close }) => ({ time, open, high, low, close })));/* ---- 成交量 Pane(下方 30%)---- */const volumePane = chart.addPane();volumePane.setHeight(80);const volumeSeries = volumePane.addSeries(HistogramSeries, {color: '#26a69a',priceScaleId: 'right',base: 0,});// 格式化成交量Y轴标签 - 调整为20%高度volumePane.priceScale('right').applyOptions({//设置高度scaleMargins: {top: 0.2,bottom: 0,},borderVisible: false,});// 自定义成交量格式化volumeSeries.priceScale().applyOptions({invertScale: false,borderColor: '#2a2e39',});// 使用priceFormatter来格式化成交量数值volumeSeries.applyOptions({priceFormat: {type: 'custom',minMove: 1,formatter: (price: number) => {if (price >= 1000000) {return (price / 1000000).toFixed(1) + 'M';} else if (price >= 1000) {return (price / 1000).toFixed(0) + 'K';} else {return price.toFixed(0);}}}});volumeSeries.setData(data.map(d => ({time: d.time,value: d.volume,color: d.close >= d.open ? '#26a69a' : '#ef5350',})));chart.timeScale().fitContent();/* 自适应窗口大小 */const ro = new ResizeObserver(() => chart.applyOptions({width: containerRef.current!.clientWidth,height: containerRef.current!.clientHeight,}));ro.observe(containerRef.current);return () => {ro.disconnect();chart.remove();};}, [data]);return <div ref={containerRef} style={{ width: '100%', height: '100%' }} />;
}

  page.tsx

// app/page.tsx 或 pages/index.tsx
"use client"
import dynamic from 'next/dynamic';
import { KLine } from '@/components/TradingChart';
import TradingChart from '@/components/TradingChart';
import { useState, useEffect } from 'react';interface Coin {id: string;symbol: string;name: string;
}export default function HomePage() {const [kLineData, setKLineData] = useState<KLine[]>([]);const [coins, setCoins] = useState<Coin[]>([]);const [selectedCoin, setSelectedCoin] = useState<string>('bitcoin');useEffect(() => {const fetchCoins = async () => {try {const response = await fetch('https://api.coingecko.com/api/v3/coins/markets?vs_currency=usd&order=market_cap_desc&per_page=100&page=1&sparkline=false');const data = await response.json();setCoins(data);} catch (error) {console.error('获取币种列表失败:', error);}};fetchCoins();}, []);useEffect(() => {const fetchData = async () => {if (!selectedCoin) return;try {// 180 天 和30天数据// 并行获取OHLC和成交量数据const [ohlcRes, volumeRes] = await Promise.all([fetch(`https://api.coingecko.com/api/v3/coins/${selectedCoin}/ohlc?vs_currency=usd&days=180`),fetch(`https://api.coingecko.com/api/v3/coins/${selectedCoin}/market_chart?vs_currency=usd&days=180&interval=daily`,{cache:'force-cache'})]);const ohlcData = await ohlcRes.json();const volumeData = await volumeRes.json();// 合并数据并转换格式const formattedData = ohlcData.map(([timestamp, open, high, low, close]: [number, number, number, number, number]) => {// 匹配对应时间戳的成交量const volumeEntry = volumeData.total_volumes?.find(([volTimestamp]: [number, number]) => volTimestamp === timestamp);const volume = volumeEntry ? volumeEntry[1] : 0;// 转换时间戳为YYYY-MM-DD格式const date = new Date(timestamp);// const time = `${date.getFullYear()}-${String(date.getMonth() + 1).padStart(2, '0')}-${String(date.getDate()).padStart(2, '0')}`;return { time:timestamp/1000, open, high, low, close, volume };});setKLineData(formattedData);} catch (error) {console.error('数据获取失败:', error);}};fetchData();}, [selectedCoin]);return (<div ><div className='w-[70%]' style={{ height: '600px' }}><div className=' flex  align-center'><select value={selectedCoin}onChange={(e) => setSelectedCoin(e.target.value)}className="px-4 py-2 border border-gray-300 rounded-lg bg-white text-gray-700 shadow-sm focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500 hover:border-gray-400 transition-colors duration-200">{coins.map((coin) => (<option key={coin.id} value={coin.id} className="py-1">{coin.name} ({coin.symbol.toUpperCase()})</option>))}</select>{/* 显示 下拉列表中选中的币种的current_price */}<div className='flex items-center'>{coins.find((coin) => coin.id === selectedCoin)?.current_price} usdt</div></div><TradingChart data={kLineData} /></div><div className='w-[30%]'>对话框组件</div></div>);}

  

 

 

下面是上周工作的成果 绘制了k线和显示了下拉列表还有价格

image

下面说一下我开发的步骤

1 首选是使用ai 进行需求分析

使用豆包进行的需求分析

https://www.doubao.com/thread/w0e5291f6269dbb19

2 使用ai 分析用什么工具才能绘制交易专用的图表

https://www.doubao.com/thread/wf2ef2d222fdba7eb

3 使用ai 寻找提供的数据源

使用kimi 寻找数据源

https://www.kimi.com/share/d23na3djqedfoaoeplr0

4 使用ai 开发图表组件

   怎么使用ai 开发专业的交易图表组件?现在多数ai 都支持html 在线预览 例如 豆包和kimi

  例如我需要绘制k线和成交量在一起的一个图表

  先使用ai 制作一个html页面,进行在线预览,如果对效果不满意就完善提示词

  我分别使用 豆包 deepseek kimi 若干次  最后在kimi 成功制作了交易组件的html页面

使用kimi制作html 页面

 https://www.kimi.com/share/d23na3djqedfoaoeplr0

在制作完成html 页面之后,在用ai将html的内容用react 或者vue 重写一遍

然后就是复制到ide 中 进行进一步的完善

 

 

 

 

http://www.vanclimg.com/news/727.html

相关文章:

  • CentOS Stream 9上部署FTP应用服务的两种方法(传统安装和docker-compose)
  • SeuratExtend 可视化教程(1):单细胞分析的高颜值绘图指南
  • 机械运动
  • 【2025.7.28】模拟赛T4
  • 深度学习(onnx量化)
  • Redisson
  • uni-app项目跑APP报useStore报错
  • P13493 【MX-X14-T3】心电感应 题解
  • DE_aemmprty 草稿纸合集
  • 题解:P13308 故障
  • mmap提高LCD显示效率
  • 用 Python 构建可扩展的验证码识别系统
  • Java学习Day28
  • 在运维工作中,Dockerfile中常见指令有哪些?
  • 英语_阅读_Rivers are important in culture_单词_待读
  • 题解:P12151 【MX-X11-T5】「蓬莱人形 Round 1」俄罗斯方块
  • 在运维工作中,docker封闭了哪些资源?
  • SciTech-EECS-Library: img2pdf 与 pdf2image : Python 的 pdf 与 image 双向转换库
  • 深度学习(pytorch量化)
  • 在运维工作中,Docker怎么清理容器磁盘空间?
  • 生成函数
  • CVE-2021-45232 Apache APISIX Dashboard身份验证绕过漏洞 (复现)
  • 在运维工作中,如果运行的一个容器突然挂了,如何排查?
  • IIS中配置HTTPS证书的详细步骤
  • 李超线段树
  • 非常值得学习渲染入门的一个教程
  • Linux开机自动登录的一种方法
  • 7月28日
  • 2025 ZR暑假集训 CD联考 Day2 E 环球旅行
  • zk后集训