Home/Work/Apex Market Mentor & Adviser

Capital markets · Investor education · Pakistan

Ongoing partnership

Apex Market Mentor & Adviser

A 19-page platform with a charting engine written from scratch on a bare canvas, and a relationship that did not end at handover.

The Apex charting engine showing a KSE-100 daily candlestick chart with Bollinger Bands, Parabolic SAR and a moving average, an RSI panel below, indicator legend chips, and a drawing toolbar down the left edge.
  • Timeframes and ranges5m through 1W, with 1D to All range presets, all served from the same engine.
  • Indicator legend chipsEach active indicator gets its own chip with visibility, settings and remove controls.
  • Drawing railThe full toolbar down the left edge, with clone, copy, paste and working undo.
  • Separate indicator panesOscillators like RSI render in their own pane below price rather than over it.
Services
Software Development
Scope
19 pages + charting engine
Platform
Web, works offline
Model
Fixed scope, continuing
Status
Ongoing partnership

The challenge

Apex teaches investing: fundamental and technical analysis, portfolio construction, risk management, trading psychology. The teaching material was worth little without live charts to teach on, and the obvious shortcut, embedding a third-party charting widget, was ruled out. They wanted the charts to be part of their own product rather than an iframe pointing at somebody else’s.

That turned a website project into a software project. We had to source raw market data, render every pixel ourselves, and make the result survive browsers that block the data provider outright.

What we built

A charting engine on Canvas 2D
Candles, volume pane, crosshair, tooltips, axes, and every pan, zoom and axis-scaling calculation written by hand. No charting library, no widget, no iframe.
21 technical indicators
SMA, EMA, WMA, HMA, Bollinger, Keltner, Donchian, VWAP, SuperTrend, Ichimoku, Parabolic SAR, RSI, MACD, Stochastic, CCI, Williams %R, ROC, ADX/DMI, ATR, OBV and MFI, with a searchable menu, per-indicator settings and persistence.
A 20+ tool drawing toolbar
Clone, copy and paste, delete, escape-to-cancel, and working document-level undo and redo.
A live markets page
The index across every timeframe from 5 minutes to 1 week, index cards, movers, and a searchable 479-stock grid opening per-stock charts.
A 19-page public platform
Ten core pages and nine authored articles, with a 25-symbol ticker refreshing every 30 seconds on every one of them.

Technical depth

The parts that were actually hard

The chart that froze after one paint

The reported symptom was “charts not loading”. The actual cause was a single corrupt saved drawing, a one-anchor Fibonacci in localStorage, throwing on every repaint. Fixed with anchor validation on both save and load, a per-drawing try/catch that self-repairs, and per-layer error isolation so one bad element can never take down the whole chart.

Working with no server and no internet

Browsers frequently block the upstream data provider. We wrote a local relay that proxies both the websocket and the REST scanner, and compiled 58 symbols by 900 daily bars plus a 480-stock registry into a static snapshot, so charts and ticker still work from a bare file path.

A data race that showed the wrong prices

A late websocket reply could satisfy a different symbol’s request. Every request now carries a unique series id, so replies can never cross over.

Cross-browser input

Firefox’s line-mode wheel events zoomed roughly 40 times too hard. Wheel deltas are normalised, zoom is proportional to the gesture, bar pitch recomputes on resize, and the price-axis drag was made exponential and pivoted on the grabbed price so a long drag cannot invert the axis.

  • 21technical indicators
  • 479live equities
  • 6,780lines of front-end JS
  • 0charting libraries

Stack

  • HTML5 Canvas 2D
  • Vanilla JavaScript
  • CSS3
  • Python (stdlib)
  • WebSocket relay
  • REST scanner
  • localStorage
  • No frameworks

Where it stands

The platform is in production and the engagement is continuing. We hold the codebase we wrote, so new indicators, new pages and new data sources are incremental work on a system we know rather than a rebuild. That is the shape most of our client relationships take once the first system is live.

Capability used: Software Development

Bring us the difficult part.

The systems we are proudest of started as the piece nobody else wanted to quote on. Tell us what it is and we will come back with a scope, a fixed price, and an honest answer about whether we are the right people for it.