Centy Traders
A trading-technology company, built end to end.
- Role
- Full Stack Engineer
- Period
- Jun 2026 to present
- Status
- Live
Algorithmic trading robots, the licensing platform that controls them, an admin console, a mobile app, and a brokered crypto-to-cash desk. One ecosystem for a trading brand.
- Expert Advisor builds, each a separately named product
- 12Expert Advisor builds, each a separately named product
- order cancellations found in a 12-day churn audit
- 815,029order cancellations found in a 12-day churn audit
- crypto-to-cash desk shipped: buy and sell, brokered by live chat
- V1crypto-to-cash desk shipped: buy and sell, brokered by live chat
Overview
Centy Traders sells trading technology: automated strategies for MetaTrader 5, education through its academy, and a desk where people can buy and sell crypto. I built the systems underneath: the strategies themselves, the licensing service that decides which accounts may run them, the admin console, the mobile app, and the public website.
The problem
A trading brand is really four businesses wearing one logo. There is the product (strategies that have to survive real markets), the commerce (licences, subscriptions, payments), the operations (admins, campaigns, customer conversations) and the trust (a public face that says honestly what the products do). Each one needs its own system, and all of them have to agree about who a customer is.
The solution

Strategies, with a ledger
The Expert Advisors are written in MQL5 and organised as a product line with one strict rule: the baseline is never edited. Every change becomes a new named product, with its own magic number and comment prefix, so no build can silently overwrite one that works. The ledger records what each version changed, why, and whether data has actually validated it.
Licensing
A NestJS and PostgreSQL service issues licence keys, binds them to MetaTrader account numbers, caps activations, handles expiry and revocation, and answers the EA's validation call before it is allowed to trade. Demo accounts are allowed through automatically so testing never needs a key.
Operations
The admin console (Next.js and NestJS on MongoDB) manages licences, subscribers, email campaigns, settings and an activity log, with JWT sessions and role-based access. An installable console and a React Native app with push notifications put the same operations on an admin's phone.
Crypto to cash
Visitors can buy or sell crypto through a chat on the website. A scripted intake collects direction, coin, network and amount and shows the current rate, then hands the conversation to a human admin. Multiple admins share sessions with assignment, and every new session is mirrored to Telegram so nothing waits unseen. Incoming crypto on TRC20 is confirmed automatically against the chain; orders, notifications and an installable admin app shipped with the first version.
Architecture
Customers
- centytraders.com
- Academy
- Crypto-to-cash chat
- MetaTrader 5 terminals
Products
- Straddle EA family
- Vesta
- Mercury
- Aurelia
Platform services
- Licence validation API
- Admin API (NestJS)
- Email (Resend)
- Telegram mirror
Operators
- Admin console (Next.js)
- Installable console
- Mobile app (Expo)
Data
- PostgreSQL (licences)
- MongoDB Atlas (operations)
- Firebase messaging
Engineering challenges
When "fixes" make a strategy worse
The most valuable work on the strategies was measurement, not code. An audit of one fork found 815,029 order cancellations in 12 days, or 144 a minute, caused by orders being re-placed on every tiny price drift. The fix was right. But combined with other individually correct fixes, the fork still didn't beat the untouched baseline, and one more aggressive variant blew an account.
So the baseline was frozen at a known commit, every experiment became a separately named product, and "locked" was defined to mean do not edit, never proven.
Venue effects versus defects
On one live broker, the baseline's tight stop closed 21 of 22 positions. It looked like a strategy bug. It was a venue effect: a spread of $0.31 against $0.04 on demo. Telling those two apart before rewriting anything saved a great deal of wasted engineering.
Guarding against misconfiguration
The current builds refuse to load if the configured profit lock would sit inside the broker's spread or minimum stop distance, and the error names the exact input to change. A strategy that can't work on a venue should say so at startup, not after a losing day.
Outcome
Centy Traders now runs as one ecosystem: a public site, a licensing service enforced by the products themselves, an operations console on desktop and mobile, and a crypto-to-cash desk whose first version shipped end to end.
Lessons learned
- Freeze what works. A frozen baseline turns every change into an experiment you can measure.
- Name every version. If two builds can be confused, one day they will be.
- Measure the venue, not just the code. Spread, execution and broker rules are part of the system.
Technology stack
- Next.js
- React
- NestJS
- MongoDB
- PostgreSQL
- Prisma
- MQL5
- React Native
- Expo
- Firebase
- Resend
- Tailwind CSS
