Stockbar

A lightweight macOS menu bar app for monitoring A-share, Hong Kong, and US stock markets in real time.


--- ## Screenshot
--- ## Features - **Multi-market support** — A-shares (Shanghai / Shenzhen / Beijing), Hong Kong, and US stocks in one place - **Menu bar display** — Quietly lives in the menu bar; shows icon, real-time price, and change percentage at a glance - **Intraday chart** — Click any stock row to view a minute-level price chart for the current session - A-shares & HK: full-day axis (09:30 – 15:00 / 16:00) - US stocks: full extended-hours axis (04:00 – 20:00 ET), covering pre-market, regular, and after-hours - **US session indicator** — Displays the current US market session (Pre-market / Regular / After-hours / Night) alongside the session price and percentage change vs. previous close - **Portfolio P&L** — Set cost price and share count per stock; see floating P&L and daily P&L live - **Sort by change%** — One-click toggle to re-sort the stock list by today's performance - **Color themes** — Chinese convention (red = up, green = down) or Western convention (green = up, red = down) - **Persistent storage** — Stock list saved to `~/Library/Application Support/Stockbar/stocks.json`; auto-backup with up to 10 rolling snapshots - **Launch at login** — Registers as a login item via `SMAppService`; toggle in Settings - **Universal binary** — Runs natively on both Apple Silicon and Intel Macs --- ## Requirements | | | |---|---| | **OS** | macOS 13.5 (Ventura) or later | | **Architecture** | Apple Silicon (arm64) · Intel (x86\_64) | --- ## Installation 1. Download the latest `Stockbar.dmg` from [Releases](../../releases) 2. Open the DMG and drag **Stockbar.app** into your **Applications** folder 3. Launch the app — the cow icon will appear in your menu bar > **First launch on macOS 13+**: If macOS shows a security warning, go to **System Settings → Privacy & Security** and click **Open Anyway**. --- ## Usage ### Adding stocks 1. Click the menu bar icon → open the dropdown 2. Click the **gear icon** (⚙) to open Settings 3. Search by stock name or ticker (e.g. `AAPL`, `腾讯`, `600000`) 4. Click a result to add it to your watchlist ### Setting up portfolio tracking 1. In **Settings → My Stocks**, tap the pencil icon next to a stock 2. Enter your **cost price** and **number of shares** 3. Floating P&L and daily P&L will appear in the stock row ### Intraday chart Click any stock row in the dropdown to open a minute-level intraday chart. Click the **←** button to return to the list. ### Status bar display In **Settings → Status Bar**, choose which stock to show in the menu bar, or select **"Don't show"** to display only the icon. --- ## Data Sources All data is fetched from free public APIs — no API key required. | Source | Usage | |--------|-------| | **Sina Finance** (`hq.sinajs.cn`) | Real-time quotes for A-shares and US stocks; US extended-hours price | | **Tencent Finance** (`qt.gtimg.cn`) | Real-time quotes for HK stocks | | **Tencent Finance** (`web.ifzq.gtimg.cn`) | Intraday minute data for A-shares and HK stocks | | **Yahoo Finance** (`query1.finance.yahoo.com`) | Intraday minute data for US stocks (04:00 – 20:00 ET) | | **Tencent Search** (`proxy.finance.qq.com`) | Stock search (primary) | | **Sina Suggest** (`suggest3.sinajs.cn`) | Stock search (fallback) | > Data is delayed or near-real-time depending on the source and market. This app is intended for personal reference only and should not be used for trading decisions. --- ## Building from Source ```bash git clone https://github.com/VGEAREN/Stockbar.git cd Stockbar/Stockbar open Stockbar.xcodeproj ``` Select the **Stockbar** scheme, set destination to **My Mac**, and press **⌘R** to run. To build a universal release binary: ```bash xcodebuild -scheme Stockbar -configuration Release \ ARCHS="arm64 x86_64" ONLY_ACTIVE_ARCH=NO ``` --- ## Project Structure ``` Stockbar/ ├── Models/ │ ├── Stock.swift # Stock model (id, name, market, cost, shares) │ └── Quote.swift # Quote model (price, change, extended price) ├── State/ │ └── AppState.swift # Central state, scheduler, persistence, backup ├── Services/ │ ├── DataService.swift # Real-time quote fetching (Sina / Tencent) │ ├── ChartService.swift # Intraday minute data (Tencent / Yahoo Finance) │ └── RefreshScheduler.swift ├── Views/ │ ├── MenuBarLabel.swift # Menu bar icon + quote display │ ├── DropdownView.swift # Main dropdown panel │ ├── StockRowView.swift # Individual stock row │ ├── StockGroupView.swift # Market group header + rows │ ├── StockChartView.swift # Intraday minute chart │ ├── SettingsView.swift # Settings panel │ ├── ToolbarView.swift # Sort / settings toolbar │ └── ProfitSummaryView.swift └── StockbarApp.swift # App entry point + AppDelegate ``` --- ## Contributing Issues and pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change. --- ## License [MIT](LICENSE) --- ## Disclaimer This project is for **personal and educational use only**. Stock data is provided by third-party public APIs and may be delayed. The author is not responsible for any financial decisions made based on this application.