← All projects

Automated Indicator Production Pipeline

Scheduled AI coding agents that take indicator specs from a Notion board, write and compile Pine, NinjaTrader and MetaTrader versions, and hand verified builds to a human tester.

Client
Trading-tools business
Year
2026
Category
Trading Systems
Stack
  • PowerShell
  • Python
  • Claude Code
  • Notion API
  • Pine Script
  • NinjaScript
  • C#
  • MQL4
  • MQL5
  • Windows Task Scheduler

The problem

A trading-tools business ships a steady flow of new indicators across TradingView, NinjaTrader 8 and MetaTrader 4/5. Each product starts as a written spec on a Notion board. Hand-porting every spec to three platforms, compiling it and documenting it was the bottleneck.

What I built

  • Lane-based agents: separate scheduled runs for Pine-to-NT8 conversion, new NT8 builds, MT4/MT5 coding, need-fix revisions, licensing retrofits and product uploads. Each run takes exactly one Notion card, then stops.
  • Compile gates: Pine is checked in a live TradingView session over the Chrome DevTools protocol. NT8 code is compiled in isolation against the NinjaTrader SDK assemblies. MQL4/MQL5 go through the local MetaEditor compiler. Nothing is written back to Notion until it compiles.
  • Safe NT8 builds: a wrapper that never touches the live project directly, and a repair script for the duplicate-attribute errors stray build files cause.
  • Notion write-back: scripts that export spec code, replace code blocks in place (chunked to the API limits), and move cards only where a lane allows it.
  • Adaptive scheduling: runners poll every 30 minutes while a column has work and back off to one check every 5 hours when it is empty. A cheap Notion pre-check runs before any agent call.
  • Status dashboard: a read-only Python web board, grouped by platform, that shows each card’s compile and write state plus a scheduler heartbeat.
  • Product standards: written rules the agents follow for signal arrows, plotting, C# 5 compatibility and Pine parity (for example, local Wilder RMA instead of built-in indicators).

Details

The agents own coding and compile checks. A human still does final chart testing and approves each release. Blockers are reported with exact status codes, such as a failed core compile, instead of being shown as partial success.