<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: yuan chen</title>
    <description>The latest articles on DEV Community by yuan chen (@yuan_chen_fe5f6f8182f7695).</description>
    <link>https://dev.to/yuan_chen_fe5f6f8182f7695</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3893686%2F94bde511-8a99-4712-835d-fa9a3e8c3d81.jpg</url>
      <title>DEV Community: yuan chen</title>
      <link>https://dev.to/yuan_chen_fe5f6f8182f7695</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/yuan_chen_fe5f6f8182f7695"/>
    <language>en</language>
    <item>
      <title>An AI-Powered K-Line Chart Analyzer — Upload a Screenshot, Get Structured Technical Analysis</title>
      <dc:creator>yuan chen</dc:creator>
      <pubDate>Thu, 23 Apr 2026 07:19:56 +0000</pubDate>
      <link>https://dev.to/yuan_chen_fe5f6f8182f7695/an-ai-powered-k-line-chart-analyzer-upload-a-screenshot-get-structured-technical-analysis-gnp</link>
      <guid>https://dev.to/yuan_chen_fe5f6f8182f7695/an-ai-powered-k-line-chart-analyzer-upload-a-screenshot-get-structured-technical-analysis-gnp</guid>
      <description>&lt;h2&gt;
  
  
  The Problem
&lt;/h2&gt;

&lt;p&gt;Every trader has been here: you're staring at a candlestick chart, trying to figure out if that's a Head and Shoulders forming or just noise. You flip between three indicator panels, check RSI, squint at the MACD histogram, and still aren't sure.&lt;/p&gt;

&lt;p&gt;I wanted a tool where I could just &lt;strong&gt;screenshot a chart and get a structured breakdown&lt;/strong&gt; — patterns detected, trend direction, confidence scores, and what to watch next. No manual drawing, no subjective interpretation.&lt;/p&gt;

&lt;p&gt;So I built &lt;a href="https://klinevision.ai" rel="noopener noreferrer"&gt;KlineVision&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  What It Does
&lt;/h2&gt;

&lt;p&gt;Upload any K-line (candlestick) chart screenshot — A-shares, US stocks, crypto, anything — and KlineVision returns:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Classic Pattern Detection&lt;/strong&gt; — Head &amp;amp; Shoulders, Bullish Engulfing, Morning Star, Flags, Triangles, and 70+ more patterns with confidence scores&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Chan Theory Analysis (缠论)&lt;/strong&gt; — Bi (笔), Duan (线段), Zhongshu (中枢), and Beichi (背驰) structure detection. If you trade Chinese markets, you know how powerful this is&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Trend Judgment&lt;/strong&gt; — Bullish / Bearish / Sideways with strength and confidence&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Trading Signals&lt;/strong&gt; — Contextual buy/sell/watch signals with risk notes&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Bilingual Output&lt;/strong&gt; — Full analysis in both English and Chinese&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The analysis is powered by Google Gemini's vision model with a carefully crafted prompt that enforces structured JSON output.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Tech Stack
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Next.js 16 (App Router, TypeScript)
├── EODHD + Tushare (market data)
├── Supabase (auth + PostgreSQL)
├── Stripe (subscriptions)
├── SVG K-line renderer (server-side, zero deps)
└── 11-locale i18n (en/zh/ja/ko/es/fr/de/pt/ru/ar/hi)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A few things I'm proud of:&lt;/p&gt;

&lt;h3&gt;
  
  
  Pure SVG K-Line Renderer
&lt;/h3&gt;

&lt;p&gt;Server-rendered candlestick charts that crawlers can see (no Canvas/WebGL). I wrote a &lt;a href="https://klinevision.ai/patterns/bullish-engulfing/" rel="noopener noreferrer"&gt;pure TypeScript SVG string generator&lt;/a&gt; — zero native dependencies, works in Vercel Serverless. It draws candlesticks, MA lines, volume bars, pattern highlights, and annotations, all as SVG XML strings.&lt;/p&gt;

&lt;p&gt;Each page has real data — historical win rates, T+5/10/20 return statistics, recent detection cases — not LLM-generated fluff. The pattern detection runs a rule-based engine on actual OHLCV data from EODHD and Tushare.&lt;/p&gt;

&lt;h3&gt;
  
  
  11-Language Support
&lt;/h3&gt;

&lt;p&gt;Every page renders in 11 languages with proper &lt;code&gt;hreflang&lt;/code&gt; tags. Entity content (pattern names, descriptions, FAQs) is stored as &lt;code&gt;L10n&lt;/code&gt; objects:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;en&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Bullish&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Engulfing"&lt;/span&gt;
  &lt;span class="na"&gt;zh&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;看涨吞没"&lt;/span&gt;
  &lt;span class="na"&gt;ja&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;強気の包み足"&lt;/span&gt;
  &lt;span class="na"&gt;ko&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;상승&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;장악형"&lt;/span&gt;
  &lt;span class="c1"&gt;# ...&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Translation is done via Gemini batch API (~$0.15 for all entities × 9 languages).&lt;/p&gt;

&lt;p&gt;The prompt is the secret sauce — it forces Gemini to output a strict JSON schema with confidence scores, bilingual explanations, and explicit "what I can't determine from this image" sections. No hallucinated price targets.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pattern Detection Pipeline
&lt;/h2&gt;

&lt;p&gt;Beyond the screenshot analysis, there's a daily data pipeline:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Fetch&lt;/strong&gt; — Pull OHLCV data from EODHD (US/A-shares) and Tushare (HK)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Detect&lt;/strong&gt; — Rule-based engine scans for 10 candlestick patterns (Hammer, Engulfing, Doji, Morning/Evening Star, etc.)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Backfill&lt;/strong&gt; — Calculate T+5/10/20 returns for historical detections&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Compute&lt;/strong&gt; — MACD, RSI, Bollinger Bands snapshots for each stock&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Aggregate&lt;/strong&gt; — Win rate statistics at global/market/symbol level&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Try It
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Upload a chart&lt;/strong&gt;: &lt;a href="https://klinevision.ai" rel="noopener noreferrer"&gt;klinevision.ai&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Browse patterns&lt;/strong&gt;: &lt;a href="https://klinevision.ai/patterns" rel="noopener noreferrer"&gt;klinevision.ai/patterns&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Check a stock&lt;/strong&gt;: &lt;a href="https://klinevision.ai/stocks/us/AAPL" rel="noopener noreferrer"&gt;klinevision.ai/stocks/us/AAPL&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Scan for patterns&lt;/strong&gt;: &lt;a href="https://klinevision.ai/scanner/doji/us" rel="noopener noreferrer"&gt;klinevision.ai/scanner/doji/us&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The core analysis feature is free. I'd love feedback from anyone who trades or is interested in technical analysis.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's Next
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;More chart patterns in the rule engine (currently 10, targeting 30+)&lt;/li&gt;
&lt;li&gt;Multi-timeframe confirmation (daily + 4h + 1h)&lt;/li&gt;
&lt;li&gt;Real-time pattern alerts via Telegram&lt;/li&gt;
&lt;li&gt;Hong Kong market expansion (Tushare rate limits are... fun)&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>nextjs</category>
      <category>jellyfin</category>
    </item>
  </channel>
</rss>
