I Built a Trading Robot in One Weekend (and It Survived) — Publishing My First MQL5 Product

Image
My product page, live on the MQL5 Market, September 2026. The video version of this story, now live on my YouTube channel. It was just after midnight on Monday when I saw my trading robot pass its final test. Not a backtest on my own computer, where I control everything — the real test. The MQL5 Market validation server, running my code on symbols I had never tried, on a balance I had never imagined. The log stopped scrolling. The word PASSED appeared four times. And I just sat there in the dark thinking: I built a trading robot, and it works. This is the story of the VitalEdge Gold EA — the trading robot I published on the MQL5 Market this week, how it nearly died four times in one night, and why publishing it felt different from everything else I have done in this journey. Why a Trading Robot? I need to be honest about something first, because this diary only works if I tell the truth. I did not write every line of that robot's code by hand. I wrote it with AI assistan...

Leaving Base44 and Building on WordPress

The first AdSense rejection taught me that my website wasn't good enough. The second rejection taught me that the platform it was built on might be part of the problem.

Let me explain. My first website wasn't on WordPress. It was on Base44 , a platform I'd found that let you build web apps and websites with AI assistance. It was how I'd created my first online presence, and honestly, for a beginner, it was perfect. I didn't need to know code. I didn't need to understand hosting or servers or databases. I just described what I wanted, and the platform built it.

But Base44 had limitations. The design options were constrained. The URL structure wasn't standard. The site didn't have the kind of granular SEO control that WordPress offered . no canonical tags, no schema markup, no custom robots.txt. Most importantly, from AdSense's perspective, the site didn't look like a "real" website. It looked like an app. And Google's reviewers, when they looked at my site, may have seen something that didn't fit their mental model of a content website.

I can't prove that the platform was the reason for the second rejection. Maybe it was the content. Maybe it was the thin pages. Maybe it was just too soon. But after the second rejection, I made a decision: I was going to rebuild on WordPress.

The Decision to Migrate

Moving from Base44 to WordPress wasn't a small decision. It meant rebuilding the entire site from scratch. Every blog post, every product page, every link. The content could be copied, but the structure, the design, the navigation ( all of it had to be rebuilt in a new system that I barely understood.

I chose WordPress because every SEO guide, every affiliate marketing tutorial, every "how to build a website" article I'd read used WordPress. It was the standard. It had the plugins, the themes, the community, the documentation. If something went wrong, I could Google it and find a hundred forum posts from people who'd had the same problem. That alone was worth the migration.

I already had the domain : vitaladge.com , purchased through Namecheap. I already had hosting . Hostinger, the cheapest plan I could find. What I didn't have was a WordPress site. Just an empty hosting account and a domain pointing at my old Base44 site.

Building the VitalEdge Store on WordPress

The Hostinger dashboard had a one-click WordPress install. I clicked it, waited five minutes, and had a fresh WordPress site with the default theme. It looked terrible. But it was mine, and it was on a platform I could control.

Image 2

The first few days were spent learning WordPress. Not the deep technical stuff , just the basics. How to install a theme. How to create pages. How to write blog posts. How to install plugins. How to set up menus. It was like learning to drive a car after riding a bicycle: same destination, completely different controls.

I chose a theme . one of Hostinger's built-in AI themes that looked clean and professional. I installed WooCommerce because I wanted a real store, not just a blog with affiliate links scattered in the text. WooCommerce let me create actual product pages with prices, descriptions, images, and "buy now" buttons that linked to my affiliate offers. It looked like a real e-commerce site. It felt like a business.

Then came the work: rebuilding everything. I went through my old site, copied every blog post, pasted it into WordPress, reformatted it, added images, and published. I recreated the product pages , this time as proper WooCommerce products with external links to my MaxBounty, ClickBank, Digistore24, and Amazon offers. I added the essential pages I'd been missing: About, Contact, Privacy Policy, Terms of Service, Disclaimer.

It took me about a week of evening work. Every night after my day job, I'd sit down and migrate another chunk of content. Some posts needed rewriting because the formatting didn't transfer cleanly. Some product descriptions needed expanding. Some images needed replacing because they didn't look right in the new theme. It was tedious, unglamorous work, but with each session, the new site looked more like a real website and less like a placeholder.

Naming It VitalEdge

The old site didn't really have a name. It was just "my site" or "the website." But when I rebuilt on WordPress, I wanted a brand. Something that sounded professional, that could appear on social media, that could eventually go on a logo.

Image 1

I landed on VitalEdge. "Vital" because the core of the site was health and wellness products . things that were vital to people's wellbeing. "Edge" because that's what I was trying to find ( an edge, an advantage, a way to get ahead. VitalEdge. It sounded like a real brand. It looked good in a URL: vitaladge.com.

I created a Facebook page with the name. An Instagram account. A logo : designed for free in Canva using a simple green and white color scheme. For the first time, the website felt like it had an identity beyond "Justice's affiliate project."

The Second Rejection

Once the WordPress site had about twenty blog posts, the essential pages, and what I thought was a decent design, I reapplied for AdSense. I was more confident this time. The site looked better. The content was better. The navigation was cleaner. I had real pages, not just posts. I'd addressed every issue from the first rejection email.

Image 3

The response came faster this time. Three days. Another email. Another rejection.

This one stung differently. The first rejection, I could explain away — I'd applied too early, the site was thin, I wasn't ready. But this time, I'd done the work. I'd rebuilt the entire site. I'd added the pages. I'd written real content. And Google still said no.

The reasons were similar: "low value content," "content that doesn't adhere to AdSense policies." But this time there was a new phrase: "thin content with little or no added value." Google wasn't just saying my content was insufficient. It was saying my content didn't add value — that it existed to generate clicks, not to help people.

That one hurt. Because it was partially true. Some of my blog posts were essentially product reviews written to host affiliate links. They weren't bad, but they weren't great either. They didn't offer unique insights or personal experience. They said what a hundred other affiliate sites said about the same products, in slightly different words.

I closed the email and sat with it for a while. Two rejections. Two websites. Same result. The dream of passive income from AdSense was starting to feel like exactly what the title of this blog says — a dream that never came through.

But I didn't quit. I didn't know it yet, but the second rejection was actually more useful than the first. It told me something specific: the problem wasn't just the platform or the quantity of content. The problem was the quality and originality of the content. And that was something I could fix.

It would just take a different approach. And a lot more honesty.

— Justice

The Technical Friction of Platform Lock-In

When I built my very first website on Base44, I was amazed by how quickly I could go from an idea to a live web application using AI prompts. For an absolute beginner with no web development experience, Base44 felt like magic. However, as my goal shifted from building a simple app to monetizing a content platform with Google AdSense and affiliate networks, I began running into rigid platform constraints that severely limited my site's search engine visibility and ad approval chances.

The first major roadblock was Google AdSense compliance. AdSense requires website owners to upload a custom ads.txt file directly to the root directory of the domain (e.g., domain.com/ads.txt) to verify publisher ownership and prevent ad fraud. On Base44, accessing the root server directory to host static text files or edit custom server header rules wasn't supported. Furthermore, the platform's automated routing created dynamic URL structures that lacked standard canonical tag management, making it difficult for Google's search crawlers to index long-form articles cleanly.

When my second Google AdSense application was rejected for 'Low Value Content' despite having over 100 written articles, I realized the issue wasn't just the text—it was how the content was structured and delivered to search engines. Closed no-code platforms are fantastic for rapid app prototyping, but for long-term SEO publishing, site speed optimization, and custom ad integration, self-hosted open-source software like WordPress is the undisputed industry standard. I made the hard decision to migrate my entire content library to a fresh WordPress installation.

Selecting Web Hosting and Setting Up WordPress in Joburg

Migrating away from a hosted platform meant I had to manage my own web hosting infrastructure for the first time. Operating on a tight budget from Johannesburg, I spent hours comparing web hosting providers like Bluehost, SiteGround, and Hostinger. I eventually chose Hostinger's Shared Premium Web Hosting plan, which cost approximately R119 per month billed annually via my Capitec debit card. Hostinger offered local server data center routing through Europe, which provided fast ping times for South African visitors on local networks like Telkom, Vodacom, and Rain.

Setting up WordPress was surprisingly straightforward through Hostinger's hPanel one-click installer. I pointed my domain's DNS nameservers from Base44 to Hostinger, installed a free Let's Encrypt SSL certificate to ensure HTTPS encryption, and selected a lightweight, SEO-optimized theme (GeneratePress). For the site design, I focused on clean typography, fast loading times, and high readability—avoiding bloated page builders that slow down mobile page rendering speeds on budget smartphones.

The tedious part of the migration was moving the content itself. Because there was no automated export plugin between Base44 and WordPress, I had to manually copy over 160 articles, re-upload and compress every featured image, re-format headings into Gutenberg blocks, and manually re-insert my affiliate tracking links. It was grueling, repetitive work that took me four full days of sitting at my Lenovo laptop from sunrise to past midnight, but seeing the clean, professional layout of my new WordPress site made every minute worth it.

SEO Optimization and Custom Schema Markup

With WordPress installed, I finally had absolute control over my site's technical SEO architecture. I immediately installed Rank Math SEO, a comprehensive plugin that allowed me to configure XML sitemaps, customize meta title tags, write meta descriptions for every post, and establish canonical links to eliminate duplicate content penalties. I submitted the new XML sitemap directly to Google Search Console and Bing Webmaster Tools.

I also implemented structured data (Schema Markup) across my article library. Using Rank Math, I added 'Article' schema to blog posts and 'Product Review' schema to software tutorials—allowing Google to display rich snippet review stars and author metadata directly in search result pages. I configured my robots.txt file to block unnecessary admin crawler requests and installed LiteSpeed Cache alongside WebP image compression plugins to shrink image file sizes by 70% without losing visual clarity.

The performance improvements were immediate and measurable. On Google PageSpeed Insights, my site's mobile performance score jumped from 62 on Base44 to an incredible 94 on WordPress. Within 48 hours of submitting the new sitemap to Google Search Console, Google bot crawlers had indexed over 80 newly formatted pages. Pages that had been stuck on page 4 of search results began creeping up toward page 1, proving that technical SEO foundations are just as important as the words on the page.

The Freedom of Open Source Ownership

Beyond SEO rankings and AdSense eligibility, the greatest benefit of moving to WordPress was the absolute sense of digital asset ownership. When you build on a proprietary no-code platform, you are renting land; if the platform changes its pricing model, updates its terms of service, or shuts down, your business is at immediate risk. With self-hosted WordPress, I owned my MySQL database, my theme files, my upload media folders, and my entire content pipeline.

I established a strict backup routine using the UpdraftPlus plugin, scheduling automatic weekly full-site backups that exported encrypted .sql.gz database files directly to my personal Google Drive storage account. If my web host ever experienced a server crash or hardware failure, I could restore my entire site onto a completely new server within 30 minutes without losing a single blog post or affiliate link.

Transitioning from Base44 to WordPress marked my evolution from a casual creator experimenting with tools to a serious digital publisher building enduring enterprise assets. Owning my platform infrastructure gave me the technical confidence to scale my site, experiment with advanced ad networks, and lay the foundation for long-term online business independence.

Comments

Popular posts from this blog

One Year In: Still Small, Still Going — Here's Why

The Instagram Shadowban: Posting Into the Void

The Day the Whole World Could Open My Website — Except Me