Jack Shkifati

06 / 10 · Software · Concurrency · AWS

Quantitative Forex Signal Engine

A 24/7 automated signal-detection system in Python on the Oanda v3 REST API. It watches 68+ currency pairs concurrently and batches every update into one Telegram broadcast, running on AWS EC2 under PM2.

68+
pairs monitored at once
24/7
on AWS EC2
Stylized 3D model of Quantitative Forex Signal Engine
Fig. 00 · Stylized model, not CAD
Fig. 01

Try it

AI-generated voice and avatar
Interactive demoFeed simulated ticks to the producer threads
01

Problem & approach

The problem

Watch dozens of currency pairs around the clock, run a strategy on each in parallel, and report changes without tripping the messaging API’s rate limits.

The approach

An extensible object-oriented design: an abstract BaseStrategy class keeps strategy logic apart from the core engine (threading, API clients, persistence), and a producer–consumer pipeline feeds one dispatcher.

02

How it works

  1. ArchitectureAn abstract BaseStrategy class decouples the core engine (threading, API clients, persistence) from the strategy logic.
  2. ProducersStrategy threads monitor 68+ currency pairs concurrently in a producer–consumer pattern.
  3. DispatcherA master dispatcher batches updates into single Telegram broadcasts to avoid a thundering herd, with exponential backoff and random jitter for HTTP 429 rate limits.
  4. DeploymentRuns on AWS EC2 under PM2, with a thread-safe SQLite ledger for crash recovery and a branch-based Git workflow with GitHub Actions for CI/CD.
03

Results & stack

68+
pairs monitored at once
24/7
on AWS EC2
  • Python
  • Threads
  • SQLite
  • Oanda v3 API
  • Telegram
  • AWS EC2
  • PM2
  • GitHub Actions