<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Machine-Learning on Jonathan Franklin</title><link>https://jonnie.github.io/tags/machine-learning/</link><description>Recent content in Machine-Learning on Jonathan Franklin</description><generator>Hugo</generator><language>en</language><lastBuildDate>Mon, 07 Sep 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://jonnie.github.io/tags/machine-learning/index.xml" rel="self" type="application/rss+xml"/><item><title>Automated Trading System</title><link>https://jonnie.github.io/work/automated-trading-system/</link><pubDate>Mon, 07 Sep 2026 00:00:00 +0000</pubDate><guid>https://jonnie.github.io/work/automated-trading-system/</guid><description>&lt;h2 id="problem"&gt;Problem&lt;/h2&gt;&#10;&lt;p&gt;Pricesearcher&amp;rsquo;s automated FX/CFD trading operation needed more than strategies. Running through MetaTrader 5 meant connecting research and backtesting to live execution, account-level risk settings, data collection and reporting. The software also needed to handle market hours and the practical constraints of a Windows-based trading terminal.&lt;/p&gt;&#10;&lt;h2 id="architecture"&gt;Architecture&lt;/h2&gt;&#10;&lt;p&gt;MQL5 Expert Advisors ran inside MetaTrader 5, while a Python/FastAPI trade engine used the MT5 connector alongside the terminal on a Windows VPS. S3 held exported trade history and the &lt;a href="https://jonnie.github.io/work/mt5-ohlcv-pipeline/"&gt;OHLCV pipeline&lt;/a&gt; supplied bars for research and backtesting. AWS monitoring fed alerts into Slack, and an internal dashboard exposed strategy, account and commission views.&lt;/p&gt;</description></item><item><title>Socketrade Trading Bot</title><link>https://jonnie.github.io/work/socketrade/</link><pubDate>Thu, 18 Jun 2026 00:00:00 +0000</pubDate><guid>https://jonnie.github.io/work/socketrade/</guid><description>&lt;h2 id="problem"&gt;Problem&lt;/h2&gt;&#10;&lt;p&gt;MetaTrader 5&amp;rsquo;s Python API is request/response based. For Socketrade, I wanted the terminal to push ticks, closed bars and trade transactions to Python strategies, with commands travelling back for order execution.&lt;/p&gt;&#10;&lt;p&gt;The runtime also needed to manage concurrent setups—each a strategy, symbol or pair, timeframe and risk configuration. Changing a setup should not require restarting the bot, and disabling new entries should not abandon positions already open.&lt;/p&gt;&#10;&lt;h2 id="architecture"&gt;Architecture&lt;/h2&gt;&#10;&lt;p&gt;An MQL5 Expert Advisor and Python asyncio hub form a newline-delimited JSON socket bridge. The hub feeds terminal events into a strategy runtime whose setups are defined by YAML configuration and model files. A backtester feeds historical bars through the same strategy runtime, with a small web UI generating forms from the configuration schema and charting results.&lt;/p&gt;</description></item><item><title>Quantrade Research System</title><link>https://jonnie.github.io/work/quantrade/</link><pubDate>Tue, 16 Jun 2026 00:00:00 +0000</pubDate><guid>https://jonnie.github.io/work/quantrade/</guid><description>&lt;h2 id="problem"&gt;Problem&lt;/h2&gt;&#10;&lt;p&gt;I built Quantrade as a personal research system for machine-learning trading strategies. I wanted to compare ideas on consistent data and evaluation rules, rather than judge a model by prediction accuracy or a favourable chart alone. Trading fees, drawdown and the order of training and test data all change how useful a result is.&lt;/p&gt;&#10;&lt;h2 id="architecture"&gt;Architecture&lt;/h2&gt;&#10;&lt;p&gt;A Python research library connects market-data providers, feature preparation, PyTorch trainers and fee-aware trade simulations. A YAML-driven multiprocessing runner executes comparable benchmark plans and writes result tables, while streaming feature and account models connect the same research ideas to an event-driven strategy interface.&lt;/p&gt;</description></item></channel></rss>