🤖 MQL-Integrationsleitfaden
Integrieren Sie die AlgoGuard-Lizenzverifizierung in Ihre MetaTrader 4 oder MetaTrader 5 Expert Advisors und Indikatoren.
📥 Installation
Schritt 1: Bibliothek herunterladen
Laden Sie AlgoGuard.mqh direkt aus Ihrem Dashboard herunter:
👉 Downloads → AlgoGuard MQL Library
Schritt 2: Installieren
Kopieren Sie die AlgoGuard.mqh Datei in Ihren MetaTrader Include-Ordner:
- MT4:
MQL4/Include/ - MT5:
MQL5/Include/
Schritt 3: WebRequest aktivieren
Damit Ihr EA mit unserer API kommunizieren darf, müssen Sie die URL freigeben:
- Öffnen Sie MetaTrader.
- Gehen Sie zu Extras → Optionen → Expert Advisors.
- Aktivieren Sie ✅ "WebRequest für folgende URL zulassen".
- Fügen Sie hinzu:
https://www.algoguard.dev(undhttps://algoguard.dev). - Klicken Sie auf OK.
🚀 Grundlegende Verwendung
MT5-Beispiel
#property strict
#include <AlgoGuard.mqh>
input string LicenseKey = ""; // Benutzer gibt seinen Lizenzschlüssel ein
string ApiKey = "ihr_api_key_hier"; // Ihr API-Schlüssel (geheim halten!)
int OnInit() {
// Lizenz bei EA-Initialisierung verifizieren
if (!AG_Verify(LicenseKey, ApiKey)) {
string errorMsg = AG_GetLastError();
Alert("❌ Lizenzverifizierung fehlgeschlagen: " + errorMsg);
return INIT_FAILED;
}
Print("✅ Lizenz erfolgreich verifiziert!");
Print("📅 Lizenz läuft ab: " + AG_GetExpiry());
return INIT_SUCCEEDED;
}
void OnTick() {
// Ihre Handelslogik hier
// Lizenz ist bereits in OnInit verifiziert
}
MT4-Beispiel
#property strict
#include <AlgoGuard.mqh>
extern string LicenseKey = "";
string ApiKey = "ihr_api_key_hier";
int init() {
if (!AG_Verify(LicenseKey, ApiKey)) {
Alert("❌ Lizenzverifizierung fehlgeschlagen: " + AG_GetLastError());
return INIT_FAILED;
}
return INIT_SUCCEEDED;
}
int start() {
// Ihre Handelslogik
return 0;
}
⚙️ Erweiterte Funktionen
🆔 Konto-basierte Lizenzierung
Binden Sie eine Lizenz an eine bestimmte Handelskontonummer, um die Weitergabe zu verhindern:
int OnInit() {
string accountNumber = IntegerToString(AccountInfoInteger(ACCOUNT_LOGIN));
if (!AG_VerifyWithAccount(LicenseKey, ApiKey, accountNumber)) {
Alert("⛔ Lizenz für dieses Konto nicht gültig!");
return INIT_FAILED;
}
return INIT_SUCCEEDED;
}
⚡ Caching (Performance)
Verwenden Sie Caching, um API-Anfragen zu minimieren und die Leistung zu verbessern:
int OnInit() {
// Verifizierungsergebnis für 15 Minuten (900 Sekunden) zwischenspeichern
if (!AG_VerifyWithCache(LicenseKey, ApiKey, 900)) {
return INIT_FAILED;
}
return INIT_SUCCEEDED;
}
void OnTimer() {
// Cache alle 15 Minuten aktualisieren
AG_VerifyWithCache(LicenseKey, ApiKey, 900);
}
🔒 Einschränkungen prüfen
Setzen Sie Symbol- oder Zeitrahmen-Einschränkungen durch, die in Ihren Produkteinstellungen definiert sind:
void OnTick() {
string symbol = Symbol();
int timeframe = Period();
// Prüfen, ob aktuelles Symbol erlaubt ist
if (!AG_IsSymbolAllowed(symbol)) {
Comment("⛔ Symbol " + symbol + " nicht durch Lizenz erlaubt");
return;
}
// Prüfen, ob aktueller Zeitrahmen erlaubt ist
if (!AG_IsTimeframeAllowed(timeframe)) {
Comment("⛔ Zeitrahmen nicht durch Lizenz erlaubt");
return;
}
// Ihre Handelslogik
}
🔄 Versions-Check (Auto-Updater)
Überprüfen Sie automatisch auf Updates und benachrichtigen Sie Ihre Nutzer.
- Version setzen: Setzen Sie in
OnInitIhre aktuelle Version mitAG_SetVersion("1.0.0"). - Pflicht-Update prüfen: Nutzen Sie
AG_IsUpdateRequired(), um veraltete Versionen zu blockieren. - UI-Panel: Nutzen Sie
AG_DrawUpdatePanel(), um einen Download-Button auf dem Chart anzuzeigen. - Klick behandeln: Nutzen Sie
AG_OnChartEvent, um Klicks auf den Update-Button zu verarbeiten.
// 1. Version definieren
#define EA_VERSION "1.0.0"
int OnInit() {
AG_SetVersion(EA_VERSION);
if (AG_Verify(LicenseKey, ApiKey)) {
// 2. Auf kritisches Update prüfen
if (AG_IsUpdateRequired()) {
Alert("⛔ KRITISCHES UPDATE ERFORDERLICH! Bitte laden Sie die neueste Version herunter.");
AG_DrawUpdatePanel(); // Zeigt Button
return INIT_FAILED; // EA stoppen
}
// 3. Optionaler Update-Hinweis
if (AG_IsUpdateAvailable()) {
Print("ℹ️ Update verfügbar: " + AG_GetLatestVersion());
AG_DrawUpdatePanel(); // Zeigt "Update available" Button
}
}
return INIT_SUCCEEDED;
}
// 4. Button-Klick verarbeiten
void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam) {
AG_OnChartEvent(id, lparam, dparam, sparam);
}
💻 Hardware-ID (HWID)
Die Bibliothek generiert automatisch eine eindeutige Hardware-ID, um Lizenzen an bestimmte Geräte zu binden.
ℹ️ Info: Die ID wird aus einer Kombination von Server, Login und Computer-Pfad generiert und gehasht.
🛠️ Fehlerbehandlung
Reagieren Sie auf spezifische Fehlercodes für besseres Benutzer-Feedback:
if (!AG_Verify(LicenseKey, ApiKey)) {
string errorCode = AG_GetLastErrorCode();
string errorMsg = AG_GetLastError();
switch(errorCode) {
case "license_expired":
Alert("⚠️ Ihre Lizenz ist abgelaufen. Bitte erneuern.");
break;
case "activation_limit_reached":
Alert("⚠️ Lizenz bereits auf einem anderen Gerät aktiviert.");
break;
case "account_mismatch":
Alert("⛔ Lizenz für dieses Handelskonto nicht gültig.");
break;
default:
Alert("❌ Verifizierung fehlgeschlagen: " + errorMsg);
}
return INIT_FAILED;
}
📡 Offline-Modus (Optional)
Erlauben Sie Ihrem EA, für eine Übergangszeit zu funktionieren, wenn die Verifizierung fehlschlägt (z.B. Internet ausgefallen):
int OnInit() {
if (!AG_Verify(LicenseKey, ApiKey)) {
// Prüfen, ob letzte erfolgreiche Verifizierung innerhalb von 24 Stunden war
datetime lastVerified = AG_GetLastVerifiedTime();
if (TimeCurrent() - lastVerified < 86400) { // 24 Stunden
Print("⚠️ Verwende zwischengespeicherte Lizenz (Offline-Modus)");
return INIT_SUCCEEDED;
}
Alert("❌ Lizenzverifizierung erforderlich. Bitte mit Internet verbinden.");
return INIT_FAILED;
}
return INIT_SUCCEEDED;
}
🧪 Testen
Verwenden Sie während der Entwicklung den Test-Modus, um kein API-Kontingent zu verbrauchen:
#define AG_TEST_MODE // Für Produktion entfernen
int OnInit() {
#ifdef AG_TEST_MODE
Print("🧪 TEST-MODUS - Lizenzverifizierung umgangen");
return INIT_SUCCEEDED;
#endif
if (!AG_Verify(LicenseKey, ApiKey)) {
return INIT_FAILED;
}
return INIT_SUCCEEDED;
}
🐶 AlgoGuard WatchDog (Optional)
Der AlgoGuard WatchDog ist ein Hilfs-EA für Monitoring und Broadcasting. Da in MT4/MT5 nur ein EA pro Chart laufen darf, muss der WatchDog auf einem separaten Chart laufen.
Installation
- Öffnen Sie einen neuen, leeren Chart (beliebiges Währungspaar, beliebiger Timeframe).
- Ziehen Sie
AlgoGuard_WatchDog.ex4(oder.ex5) auf diesen Chart. - Lassen Sie diesen Chart im Hintergrund offen.
Funktion:
- Er überwacht die Verbindung zum AlgoGuard Server.
- Er sendet "Heartbeats" (Status-Updates).
- Falls Sie Broadcasting nutzen: Er liest die Trades Ihres Haupt-EAs und sendet sie an den Server.
✅ Sicherheits-Best-Practices
- Niemals Ihren API-Schlüssel im Quellcode hardcoden, den Sie verteilen.
- Obfuskieren Sie Ihre kompilierten
.ex4/.ex5-Dateien. - Validieren Sie Benutzereingaben für das Lizenzschlüssel-Format.
🆘 Fehlerbehebung
"WebRequest not allowed"
- Prüfen Sie, ob die URL in den MT4/MT5-Optionen gewhitelistet ist.
- Stellen Sie sicher, dass Sie HTTPS (nicht HTTP) verwenden.
"Invalid API Key"
- Überprüfen Sie Ihren API-Schlüssel im AlgoGuard-Dashboard.
- Prüfen Sie auf zusätzliche Leerzeichen.
"Network Timeout"
- Erhöhen Sie das Timeout mit
AG_SetTimeout(30)(Standard: 10 Sekunden). - Prüfen Sie Firewall/Antivirus-Einstellungen.
📞 Support
Brauchen Sie Hilfe? Kontaktieren Sie den Support unter support@algoguard.dev