FxMathQuant Web - AI-Powered Strategy Generator
🚀 Generate profitable trading strategies using Genetic Algorithms - 100% in your browser!
Features
✅ Client-Side Processing - Everything runs in your browser, no server needed
✅ AI-Powered - Genetic Algorithm evolves profitable trading strategies
✅ Fast Backtesting - Optimized JavaScript with typed arrays
✅ MQ4/MQ5 Export - Generate ready-to-use MetaTrader Expert Advisors
✅ HTML Reports - Beautiful performance reports with interactive charts
✅ GitHub Pages Ready - Host for FREE on GitHub Pages
How It Works
- Upload CSV Data - Export OHLC data from MT4/MT5 and upload
- Configure GA - Set population, generations, and performance filters
- Generate Strategies - AI evolves profitable trading strategies
- Download Code - Get MQ4, MQ5, and HTML reports
Quick Start
Option 1: Local Development
# Clone or download this folder
cd FxMathQuant-Web
# Serve with any HTTP server
python -m http.server 8000
# or
npx serve
# Open browser
open http://localhost:8000
Option 2: GitHub Pages (Recommended)
-
Create GitHub Repository
git init git add . git commit -m "Initial commit" git branch -M main git remote add origin https://github.com/yourusername/fxmathquant-web.git git push -u origin main -
Enable GitHub Pages
- Go to repository Settings → Pages
- Source: Deploy from branch
main - Folder:
/ (root) - Save
-
Access Your App
- URL:
https://yourusername.github.io/fxmathquant-web/
- URL:
Preparing Data
MT4/MT5 Data Export
Create a simple EA to export OHLC data:
MT4 Script (SaveOHLC.mq4):
//+------------------------------------------------------------------+
//| Script to export OHLC data to CSV |
//+------------------------------------------------------------------+
void OnStart()
{
string filename = Symbol() + "_" + PeriodToString() + ".csv";
int handle = FileOpen(filename, FILE_WRITE|FILE_CSV);
if(handle != INVALID_HANDLE)
{
FileWrite(handle, "time", "open", "high", "low", "close");
int bars = iBars(Symbol(), Period());
for(int i = bars - 1; i >= 0; i--)
{
FileWrite(handle,
TimeToString(iTime(Symbol(), Period(), i)),
iOpen(Symbol(), Period(), i),
iHigh(Symbol(), Period(), i),
iLow(Symbol(), Period(), i),
iClose(Symbol(), Period(), i)
);
}
FileClose(handle);
Print("Data exported to: ", filename);
}
}
string PeriodToString()
{
switch(Period())
{
case PERIOD_M1: return "M1";
case PERIOD_M5: return "M5";
case PERIOD_M15: return "M15";
case PERIOD_M30: return "M30";
case PERIOD_H1: return "H1";
case PERIOD_H4: return "H4";
case PERIOD_D1: return "D1";
default: return "Unknown";
}
}
MT5 Script (SaveOHLC.mq5):
//+------------------------------------------------------------------+
//| Script to export OHLC data to CSV |
//+------------------------------------------------------------------+
void OnStart()
{
string filename = _Symbol + "_" + PeriodToString() + ".csv";
int handle = FileOpen(filename, FILE_WRITE|FILE_CSV);
if(handle != INVALID_HANDLE)
{
FileWrite(handle, "time", "open", "high", "low", "close");
int bars = Bars(_Symbol, _Period);
datetime time[];
double open[], high[], low[], close[];
CopyTime(_Symbol, _Period, 0, bars, time);
CopyOpen(_Symbol, _Period, 0, bars, open);
CopyHigh(_Symbol, _Period, 0, bars, high);
CopyLow(_Symbol, _Period, 0, bars, low);
CopyClose(_Symbol, _Period, 0, bars, close);
for(int i = bars - 1; i >= 0; i--)
{
FileWrite(handle,
TimeToString(time[i]),
open[i],
high[i],
low[i],
close[i]
);
}
FileClose(handle);
Print("Data exported to: ", filename);
}
}
string PeriodToString()
{
switch(_Period)
{
case PERIOD_M1: return "M1";
case PERIOD_M5: return "M5";
case PERIOD_M15: return "M15";
case PERIOD_M30: return "M30";
case PERIOD_H1: return "H1";
case PERIOD_H4: return "H4";
case PERIOD_D1: return "D1";
default: return "Unknown";
}
}
Configuration Guide
GA Parameters
| Parameter | Recommended | Description |
|---|---|---|
| Population | 100-200 | Strategies per generation |
| Generations | 50-100 | Evolution cycles |
| Strategies to Find | 5-10 | Target number of strategies |
Performance Filters
| Filter | Recommended | Description |
|---|---|---|
| Min Profit Factor | 1.5-2.0 | Minimum PF required |
| Min Win Rate | 45-55% | Minimum win rate |
| Max Drawdown | 20-30% | Maximum acceptable DD |
| Min Trades | 30-50 | Minimum trade count |
Performance
- Processing Speed: ~50-100 strategies/second (depends on device)
- Recommended Data Size: 1,000-5,000 bars
- Browser Support: Chrome, Firefox, Safari, Edge (latest versions)
Technical Stack
- Frontend: Vanilla HTML5 + JavaScript (no frameworks)
- Charts: Chart.js 4.4.0
- CSV Parsing: PapaParse 5.4.1
- Styling: Custom CSS with dark theme
- Hosting: GitHub Pages compatible
Project Structure
FxMathQuant-Web/
├── index.html # Main page
├── css/
│ └── style.css # Styles
├── js/
│ ├── main.js # App controller
│ ├── strategy.js # Strategy class
│ ├── backtester.js # Backtesting engine
│ ├── ga-engine.js # Genetic Algorithm
│ ├── mq4-generator.js # MQ4 code generator
│ ├── mq5-generator.js # MQ5 code generator
│ └── report-generator.js # HTML report generator
└── README.md
Browser Compatibility
✅ Chrome 90+
✅ Firefox 88+
✅ Safari 14+
✅ Edge 90+
Limitations
- Dataset Size: Recommended max 5,000 bars for optimal performance
- Processing Time: Depends on device CPU (slower on mobile)
- Storage: All data stays in browser (not saved to server)
FAQ
Q: Is my data sent to a server?
A: No! Everything runs 100% in your browser. Your data never leaves your device.
Q: Can I use this offline?
A: Yes, once loaded. Download the files and open index.html locally.
Q: How accurate is the backtesting?
A: Very accurate. Uses the same logic as the Python version with ATR-based SL/TP.
Q: Can I modify the generated MQ4/MQ5 code?
A: Yes! The code is clean and well-commented for easy customization.
Support
- Website: https://fxmathquant.com
- Email: support@fxmath.com
- GitHub: https://github.com/yourusername/fxmathquant-web
License
© 2025 FxMathQuant. All rights reserved.
Disclaimer
⚠️ Trading Risk Warning
Trading forex and CFDs carries a high level of risk. Past performance is not indicative of future results. Always test strategies on demo accounts before live trading. Never invest more than you can afford to lose.
Made with ❤️ by FxMathQuant