English Русский Español 日本語 Português
preview
Forex-Arbitragehandel: Panel zur Bewertung von Wechselkursbeziehungen

Forex-Arbitragehandel: Panel zur Bewertung von Wechselkursbeziehungen

MetaTrader 5Handelssysteme |
23 12
Yevgeniy Koshtenko
Yevgeniy Koshtenko

Einführung

Meine Reise im algorithmischen Devisenhandel dauert schon viele Jahre an – Jahre des Ausprobierens, der Fehler, der schlaflosen Nächte und der seltenen, aber eindrucksvollen Erfolge. In dieser Zeit habe ich alles ausprobiert, von einfachen Indikatoren bis hin zu komplexen maschinellen Lernsystemen. Aber ein Gedanke beschäftigte mich immer wieder: Was ist, wenn der Markt nicht so perfekt ist? Was wäre, wenn es hinter dem chaotischen Flackern der Kurse Risse gäbe, durch die man einen Blick auf das wahre Wesen des Marktes werfen kann? So kam ich zur Arbitrage-Analyse, einem Ansatz, der für mich eine echte Entdeckung, ja fast eine Offenbarung war.

Heute möchte ich meine Arbeit vorstellen, ein System zur Analyse von fairen Währungskursen mit einer Arbitragebewertung, geschrieben in MQL5 für MetaTrader 5. Alles begann mit einer einfachen Frage, die mich eines Nachts wach hielt: Was wäre, wenn wir die „richtigen“ Wechselkurse berechnen könnten – nicht die, die uns der Markt vorgibt, sondern die, die es sein sollten? Aus dieser Neugier heraus entstand ein Panel, das nicht nur Preisabweichungen von ihren „idealen“ Werten aufzeigt, sondern auch nach dreieckigen Arbitragepfaden sucht und identifiziert Momente vorübergehender Marktineffizienzen, die sich potenziell ausnutzen lassen.

Die Umsetzung der Theorie in Code entpuppte sich als echtes Abenteuer – mit vielen Fallstricken, unzähligen Iterationen und Momenten, in denen ich bereit war, alles aufzugeben. Ich möchte Ihnen erzählen, wie sich trockene Berechnungen in ein lebendiges System verwandelten, wie der Markt mich immer wieder auf die Probe stellte und wie ich lernte, die Ergebnisse zu visualisieren, sodass sie für sich selbst sprechen. Sie werden echte Beispiele sehen, wie das Panel funktioniert – mit Zahlen, Signalen und Arbitrage-Dreiecken. Ich werde seine Stärken und Schwächen ehrlich analysieren und meine Erfahrungen mit der Anpassung an verschiedene Strategien teilen – von Einzelgeschäften bis hin zu Multiwährungs-Grid-Strategien, das für mich zu einem echten Experimentierfeld geworden ist.

Mein Ziel ist es nicht nur, mit dem Code zu prahlen oder vor der Öffentlichkeit anzugeben. Ich möchte Ihnen ein Werkzeug an die Hand geben – etwas Konkretes, das Sie übernehmen, anpassen und für sich selbst verfeinern können. Ich hoffe, dass dieses Panel Sie nicht nur zu neuen Ideen inspiriert, sondern Ihnen auch hilft, den Markt aus einem anderen Blickwinkel zu sehen – nicht als Chaos, sondern als ein Puzzle, das gelöst werden kann.



Arbitrage-Hedge-Fonds und das Ausmaß des Devisenarbitragehandels

Wenn wir über Arbitrage auf dem Devisenmarkt sprechen, ist es unmöglich, die Hauptakteure in diesem Bereich nicht zu erwähnen – spezialisierte Hedge-Fonds, die die mathematische Analyse von Diskrepanzen zu einer Multimilliarden-Dollar-Industrie gemacht haben. Ihre Erfahrung und ihr Geschäftsumfang machen deutlich, wie bedeutend unser bescheidener Arbitrage-Indikator in den richtigen Händen sein kann.

Die Titanen der Währungsarbitrage

Unter den Arbitrage-Hedgefonds stechen einige große Akteure besonders hervor. Millennium Management beispielsweise, das ein Vermögen von über 50 Milliarden Dollar verwaltet, verfolgt einen multistrategischen Ansatz, bei dem die statistische Arbitrage auf den Devisenmärkten einer der wichtigsten Bereiche ist. Ihre Teams von quantitativen Analysten entwickeln Modelle, die unserer Matrix fairer Kurse konzeptionell ähnlich sind, aber über einen viel komplexeren mathematischen Rahmen und eine höhere Rechenleistung verfügen.

Citadel Securities, Renaissance Technologies und DE Shaw – sind weitere große Unternehmen, die aktiv Währungsarbitrage einsetzen. Ihr Vorteil liegt nicht nur im Kapital, sondern auch in der Technologie: direkter Zugang zum Interbankenmarkt, Server mit minimaler Latenzzeit (Co-Location), spezielle Kommunikationskanäle zwischen den wichtigsten Handelsplattformen. Einige Fonds haben Hunderte von Millionen Dollar in eine Infrastruktur investiert, die die Verzögerung bei der Auftragsausführung auf Mikrosekunden reduziert – ein Bereich, in dem unser MetaTrader 5 Indikator leider nicht mithalten kann.



Theoretische Grundlagen der Analyse fairer Preise und des Arbitragehandels

Die Idee, faire Preise zu analysieren, hat mich gepackt, als ich dachte: Was ist, wenn der Markt manchmal falsch liegt? Jahre des Devisenhandels haben mich gelehrt, dass Wechselkurse nicht nur zufällige Zahlen auf einem Bildschirm sind. Es handelt sich um ein komplexes Beziehungsgeflecht, in dem jedes Paar die anderen wie Fäden in einem riesigen Gewebe mitzieht. Und wenn irgendwo in dieser Leinwand ein Loch auftaucht – eine Diskrepanz – dann gibt es eine Chance, Geld zu verdienen.

Ein fairer Preis ist eigentlich der „ideale“ Wechselkurs eines Währungspaares, der sich ergeben müsste, wenn der Markt absolut rational wäre. Bei direkten Paaren wie EURUSD scheint alles ganz einfach zu sein: Nehmen Sie den Geld- und Briefkurs, bilden Sie den Durchschnitt, und das ist Ihr Leitfaden. Bei Forex geht es aber nicht nur um direkte Kurse. Es gibt Kreuzwährungspaare wie EURJPY, die anhand von Basenpaaren berechnet werden können. Und dann erinnerte ich mich an die Dreiecksarbitrage, ein altes, aber immer noch lebendiges Konzept:

EUR/USD * USD/JPY = EUR/JPY

Wenn der reale EURJPY-Kurs nicht mit dieser Berechnung übereinstimmt, hat der Markt entweder etwas unter- oder überschätzt. Ich weiß noch, wie ich das erste Mal manuell nachgeprüft habe – ich saß mit einem Taschenrechner da und verglich Kurse auf einem Demokonto. Die Abweichungen waren winzig, im Bruchteil eines Prozents, aber allein die Tatsache, dass es sie gab, löste in mir einen Funken aus. Es war, als würde man einen kleinen Riss in einer Wand finden, den niemand bemerkt, durch den man aber ins Innere schauen kann.

Dann ging ich tiefer. Direkte Kurse sind nur die Spitze des Eisbergs. Um die „Fairness“ der Preise zu verstehen, ist es notwendig, eine Matrix aller Währungsbeziehungen zu erstellen. Stellen Sie sich vor: Sie haben 8 Währungen – EUR, USD, GBP, JPY und so weiter. Jedes von ihnen kann durch das andere durch verfügbare Paare ausgedrückt werden. Wenn ich zum Beispiel EURUSD und GBPUSD habe, kann ich EURGBP wie folgt berechnen:

EURGBP = EURUSD / GBPUSD

Und wenn Sie Umkehrpaare wie USDJPY und JPYUSD hinzufügen, können Sie die Berechnungen unbegrenzt verfeinern. Besonders angetan war ich von der Idee der „dynamischen Kalibrierung“. Wie wäre es, wenn wir uns nicht auf ein einziges Paar verlassen, sondern alle verfügbaren Kurse nehmen und sie zu einem einzigen System „mitteln“? Zum Beispiel kann ich für EURJPY nicht nur EURUSD und USDJPY, sondern auch andere Pfade verwenden: EURGBP und GBPJPY, oder sogar längere Ketten über CHF oder AUD. Es ist wie beim Zusammensetzen eines Puzzles, bei dem jedes Detail perfekt an seinen Platz passen muss. 

Aber wie kann man ein Paar aus allen anderen berechnen, die die gleichen Währungen enthalten? Nehmen Sie EURUSD. Ich habe einen direkten Umrechnungskurs – sagen wir 1,10. Aber ich kann es durch Kreuzkurse überprüfen: durch GBP (EURGBP und GBPUSD), durch JPY (EURJPY und USDJPY), durch CHF und so weiter. Theoretisch sollten alle diese Wege den gleichen Wert ergeben. Wenn nicht, haben wir hier ein Signal für Sie. Ich begann zu grübeln: Was wäre, wenn wir eine 8x8-Matrix erstellen, bei der jede Zelle den Wechselkurs einer Währung im Verhältnis zu einer anderen darstellt, und diese Matrix zwingen, sich einer konsistenten Lösung anzunähern? Es ist wie das Lösen eines Gleichungssystems, bei dem jedes Paar eine Gleichung ist und die Variablen Währungskurse sind. Zum Beispiel: 

EURUSD = 1. 10

USDJPY = 150

EURJPY = EURUSD * USDJPY = 165

Wenn der reale EURJPY bei 166 liegt, dann gibt es irgendwo eine Verzerrung. Und es gibt Dutzende solcher „Gleichungen“, je nach Anzahl der Paare. Man kann den Durchschnitt aller Pfade nehmen, man kann den Median suchen, oder man kann sogar eine iterative Methode anwenden, wie bei der Lösung von Systemen linearer Gleichungen, um den „besten“ Preis zu finden. 

Die Arbitrage ist zum zweiten Teil dieses Puzzles geworden. Dreiecksarbitrage bedeutet, dass Sie einen Zyklus von drei Paaren durchlaufen (EURUSD -> USDJPY -> EURJPY) und mit Gewinn zurückkommen. Aber ich habe mich gefragt: Was wäre, wenn wir nicht nur nach Dreiecken suchen, sondern auch nach längeren Wegen? Zum Beispiel in vier oder fünf Paaren? Die Theorie besagt, dass je länger der Weg ist, desto mehr Rauschen ist vorhanden, aber auch desto interessanter sind die Ergebnisse. Jedes Konzept wurde in der Praxis erprobt: Ich ließ die Daten durch das Terminal laufen, sah mir an, wo die Berechnungen nicht mit der Realität übereinstimmten, und und zog daraus meine Schlüsse. 

Für mich ist es mehr als nur ein Satz von Formeln geworden. Es ist eine Philosophie: Der Markt ist ein lebendiger Organismus voller kleiner Fehler, und wenn man lernt, sie zu erkennen, kann man in Harmonie mit ihm leben. Ich hoffe, dass meine Gedanken Sie dazu inspirieren werden, tiefer zu graben und dieselben Möglichkeiten zu erkennen.


Implementierung des Arbitragepanels: Von der Idee zum Code

Die Umsetzung der Theorie in Code ist immer eine Herausforderung. So habe ich mein Arbitrage-Panel in MQL5 implementiert:

void CalculateFairValues() {
    GetCurrentMarketRates();
    InitializeCurrencyMatrix();
    FillCurrencyMatrixFromDirectRates();
    CalculateCrossRatesArbitrage();
    CalculateDiscrepancies();
    FindArbitrageOpportunities();
    GenerateSignals();
    UpdateDisplay();
}
Diese Funktion ist das Herzstück des Systems. Sie ruft aktuelle Kurse ab, erstellt eine Matrix mit fairen Kursen und sucht nach Arbitragemöglichkeiten. Ich erinnere mich, dass ich lange mit CalculateCrossRatesArbitrage zu kämpfen hatte – der Markt schlug nicht immer direkte Paare vor, und ich musste mich mit Umkehrungen behelfen:
if(!g_market_rates[i].is_direct) {
    double temp_bid = 1.0 / g_market_rates[i].ask;
    double temp_ask = 1.0 / g_market_rates[i].bid;
    g_market_rates[i].bid = temp_bid;
    g_market_rates[i].ask = temp_ask;
}
Ich habe eine separate Logik für Arbitrage implementiert:
double CalculateArbitrageProfit(int pair1_idx, int pair2_idx, int pair3_idx, double amount) {
    double result = amount;
    // Calculation logic through Bid/Ask for a triangle
    return result;
}

Diese Methode berechnet den Gewinn aus einem Zyklus wie EURUSD->USDJPY->EURJPY. Zunächst waren die Ergebnisse chaotisch – die Spreads fraßen alle Vorteile auf. Um das Rauschen herauszufiltern, musste ich einen Schwellenwert InpArbitrageThreshold hinzufügen.

Als Nächstes folgt die Matrix der fairen Preise. InitializeCurrencyMatrix setzt die Einheiten auf die Diagonale (EUR/EUR = 1), und FillCurrencyMatrixFromDirectRates füllt sie mit direkten Kursen. Aber die eigentliche Magie steckt in CalculateCrossRatesArbitrage

void CalculateCrossRatesArbitrage() {
    for(int iterations = 0; iterations < 3; iterations++) {
        for(int i = 0; i < g_currencies_count; i++) {
            for(int j = 0; j < g_currencies_count; j++) {
                if(i == j) continue;
                for(int k = 0; k < g_currencies_count; k++) {
                    if(k == i || k == j) continue;
                    if(g_currency_matrix[i][k] != 0 && g_currency_matrix[k][j] != 0) {
                        double triangleRate = g_currency_matrix[i][k] * g_currency_matrix[k][j];
                        if(g_currency_matrix[i][j] == 0) g_currency_matrix[i][j] = triangleRate;
                        else g_currency_matrix[i][j] = (g_currency_matrix[i][j] * 0.7 + triangleRate * 0.3);
                        g_currency_matrix[j][i] = 1.0 / g_currency_matrix[i][j];
                    }
                }
            }
        }
    }
}

Hier wird dreifach über die Währungen iteriert, und die Kreuzkurse werden über Dreiecksbeziehungen berechnet. Die Idee ist einfach: Wenn EURUSD und USDJPY vorliegt, kann EURJPY berechnet werden. Wenn es bereits einen direkten EURJPY gibt, nehme ich den gewichteten Durchschnitt – 70% des alten Wertes, 30% des neuen. Drei Iterationen sind ein Kompromiss zwischen Genauigkeit und Geschwindigkeit. Ich erinnere mich, dass ich dies am EURJPY-Paar getestet habe: Anfangs betrugen die Abweichungen 0,1 %, nach drei Zyklen waren es 0,01 %. Aber der Markt wartet nicht, und ich habe dort aufgehört.

Aber wie kann man ein Paar von all den anderen erhalten? Nehmen wir an, ich möchte einen „fairen“ EURUSD. Was ich habe, ist:

  • EURGBP und GBPUSD: EURUSD = EURGBP * GBPUSD
  • EURJPY und USDJPY: EURUSD = EURJPY / USDJPY
  • EURCHF und USDCHF: EURUSD = EURCHF / USDCHF

Ich kann alle diese Pfade nehmen und den Durchschnitt oder Median berechnen oder noch einen Schritt weiter zur iterative Konvergenz gehen, wie bei der Gauß-Seidel-Methode für Gleichungssysteme. Zum Beispiel:

double CalculatePairFairValue(string base, string quote) {
    int baseIdx = GetCurrencyIndex(base);
    int quoteIdx = GetCurrencyIndex(quote);
    double sum = 0.0;
    int count = 0;
    for(int k = 0; k < g_currencies_count; k++) {
        if(k == baseIdx || k == quoteIdx) continue;
        if(g_currency_matrix[baseIdx][k] != 0 && g_currency_matrix[k][quoteIdx] != 0) {
            sum += g_currency_matrix[baseIdx][k] * g_currency_matrix[k][quoteIdx];
            count++;
        }
        if(g_currency_matrix[k][baseIdx] != 0 && g_currency_matrix[quoteIdx][k] != 0) {
            sum += g_currency_matrix[quoteIdx][k] / g_currency_matrix[k][baseIdx];
            count++;
        }
    }
    return (count > 0) ? sum / count : g_currency_matrix[baseIdx][quoteIdx];
}

Jedes Stück Code ist ein Kampf mit der Realität. Aber als ich die ersten Signale und Dreiecke sah, wurde mir klar: Es funktioniert.


Grafische Schnittstelle: Visualisierung von Merkmalen

Der Code bliebe nur eine Ansammlung von Zahlen ohne klare Visualisierung. Ich habe mein Herz und meine Seele in die Schnittstelle gesteckt:

bool CreateGraphics() {
    ObjectCreate(0, "FVPanel_Main", OBJ_RECTANGLE_LABEL, 0, 0, 0);
    ObjectSetInteger(0, "FVPanel_Main", OBJPROP_XDISTANCE, 20);
    ObjectSetInteger(0, "FVPanel_Main", OBJPROP_YDISTANCE, 20);
    ObjectSetInteger(0, "FVPanel_Main", OBJPROP_XSIZE, 900);
    ObjectSetInteger(0, "FVPanel_Main", OBJPROP_YSIZE, 560);
    ObjectSetInteger(0, "FVPanel_Main", OBJPROP_BGCOLOR, InpBgColor);
    CreateText("FVPanel_Header", 220, 30, "ANALYSIS OF FAIR CURRENCY PRICES", InpHeaderTextColor, 12, true);
    CreateText("FVPanel_Signals", 60, 60, "SIGNALS OF DEVIATION FROM FAIR PRICE", InpBuySignalColor, 10, true);
    CreateText("FVPanel_Arbitrage", 460, 60, “ARBITRAGE OPPORTUNITIES", InpArbitrageColor, 10, true);
    return true;
}

Das Panel ist in drei Bereiche unterteilt: Abweichungssignale, Arbitragepfade und Wechselkursmatrix. Signale wie „EURUSD: +0.04% – SELL“ werden grün oder rot hervorgehoben, und Arbitrage-Dreiecke wie „EURUSD->USDJPY->EURJPY: +0.02%“ zeigen sofort die Richtung der Transaktionen an.

Die Wechselkurstabelle ist mein persönlicher Fetisch. Sie zeigt alle 8 Währungen in einer Tabelle, in der die Abweichungen von den fairen Preisen farblich hervorgehoben sind. Ich weiß noch, wie ich Stunden damit verbracht habe, Schriftarten und Einrückungen auszuwählen, damit alles ordentlich aussieht.

Sie wird durch einen Timer aktualisiert:

void OnTimer() {
    g_timer_counter++;
    if(g_timer_counter >= InpUpdateInterval) {
        CalculateFairValues();
        g_timer_counter = 0;
    }
}

Dadurch wird das System lebendig – die Daten fließen in Echtzeit, wie der Puls des Marktes.


Arbeitsergebnisse und ehrliche Bewertung

Ich habe das System noch nicht mit echten Daten ausprobiert. Ich baue einen darauf basierenden Roboter, und dies ist etwa der 5. bis 6. Versuch, einen funktionierenden Arbitrage-Roboter zu erstellen. Hier ist ein Video über den Betrieb des Systems:



Überlegungen zu fairen Preisen und Matrizen

Wie kann ich die fairen Preise aus den Matrizen ermitteln? Es wurde zu meiner Besessenheit. Eine 8x8-Matrix ist wie eine Abbildung des Marktes. In jeder Zelle ist der Wechselkurs einer Währung zu einer anderen. Aber die Daten sind verrauscht: Der Broker stellt nicht alle Paare zur Verfügung, die Kurse springen, die Spreads stören. Ich begann zu experimentieren.

Ansatz 1: Durchschnitt für Pfade

Für EURUSD nehme ich alle Kreuzkurse:

  • EURGBP * GBPUSD
  • EURJPY / USDJPY.
  • EURCHF / USDCHF

Berechnung des Durchschnitts. Das ist einfach, lässt aber die Gewichte außer Acht, da EURJPY liquider sein kann als EURCHF.

Ansatz 2: Iterative Konvergenz

Wie bei der Gauß-Seidel-Methode: Ich aktualisiere jede Zelle der Matrix, bis die Änderungen minimal sind. Der obige Code (CalculateCrossRatesArbitrage) ist eine vereinfachte Version. Aber ich dachte weiter: Wie wäre es, wenn wir die Gewichtung nach dem Handelsvolumen hinzufügen? Oder wenn wir die Volatilität des Paares berücksichtigen?

Ansatz 3: Minimierung von Fehlern

Wir können eine Optimierungsaufgabe stellen: Minimierung der Summe der Quadrate der Diskrepanzen zwischen den aktuellen Kursen und der Matrix. Zum Beispiel:

Error = Σ (MarketRate[i] - MatrixRate[i])^2

Lösen durch Gradientenabstieg oder etwas wie SVD. Bei MQL5 dauert es vielleicht schon sehr lange, aber in Python würde ich es mal versuchen.

Ansatz 4: Lange Pfade

Warum nur Dreiecke? Ich kann EURUSD durch eine Kette EURGBP->GBPCHF->CHFUSD berechnen. Je mehr Wege, desto genauer sind die Ergebnisse, aber desto mehr Rauschen entsteht auch. In der Praxis versinken die langen Ketten in Spreads und Gebühren wie in einem Sumpf...

Diese Überlegungen sind noch theoretisch. Der reale Markt ist kein Lehrbuch, und ideale Preise bleiben ein Traum. Aber auch die Annäherung an sie ist bereits ein Fortschritt.


Schlussfolgerung

Ausgehend von der Idee der fairen Preise hatte ich nicht erwartet, ein solches System zu erhalten. Es war eine Reise von Versuch und Irrtum, von Fehlern in der Matrix bis zu Frustrationen bei der Arbitrage. Aber bei jedem Schritt habe ich etwas gelernt.

Der Markt ist nicht chaotisch, sondern ein komplexer Mechanismus. Faire Preise und Arbitrage sind wie ein Vergrößerungsglas, durch das man seine Teile sehen kann. Visualisierung macht Daten lebendig, Anpassung macht sie flexibel. Das Panel ist nicht perfekt, aber es gibt mir schon Vertrauen.

Ich habe viele Pläne, vom maschinellen Lernen bis zu echten Tests. Ich hoffe, dass meine Erfahrung Sie dazu inspiriert, hinter die Kulissen des Marktes zu schauen und Ihre „Ungerechtigkeiten“ zu finden.

Übersetzt aus dem Russischen von MetaQuotes Ltd.
Originalartikel: https://www.mql5.com/ru/articles/17422

Beigefügte Dateien |
Letzte Kommentare | Zur Diskussion im Händlerforum (12)
Vladimir Gulakov
Vladimir Gulakov | 19 März 2025 in 17:04
Sergey Chalyshev #:

Sie verwechseln Händler mit Maklern.

Ein Makler kann keine Anpassungen vornehmen - das ist eine Straftat.

Lernen Sie die Regeln des Spiels.

Na gut, dann soll es eben ein Händler sein.

pivomoe
pivomoe | 22 März 2025 in 22:21
Yevgeniy Koshtenko #:

und die Diskrepanz zwischen synthetischen und realen Werten im Vergleich zur Standardabweichung ist oft riesig....

Können Sie mir ein Beispiel für eine große Diskrepanz aus dem Protokoll nennen?

pivomoe
pivomoe | 23 März 2025 in 11:36
Yevgeniy Koshtenko #:

Darüber wird es einen zweiten Artikel geben

Ich habe mir den Code des zweiten Artikels angesehen. Er steht in keinem Zusammenhang mit dem ersten Artikel. Nirgendwo im Code wird auch nur der Versuch unternommen, den fairen Preis zu unter-/überbieten. Es ist ein gewöhnlicher Netter, der ein Auftragsblatt der Gnade des Schicksals überlässt.

Khai Nguyen
Khai Nguyen | 29 Jan. 2026 in 10:38
Es gab eine Menge Probleme in Ihrem ursprünglichen Code-Version, als eine Folge, die ich denke, Sie absichtlich nicht nehmen Screenshots einschließlich eines speziellen Teils der Ergebnis-Tabelle.
Ich folge der Idee, aber immer noch kämpfen, um die Idee in etwas realistisch Handel

Hoffe, Sie könnten auf dieser beigefügten Ergebnis kommentieren und helfen, es zu einem effektiven System gemacht
2pay2pay
2pay2pay | 16 Mai 2026 in 02:42

Ich habe in der Vergangenheit ähnliche dreieckige Arbitragemodelle erstellt.

Beim Backtesting funktioniert es sehr gut.

Wenn ich es jedoch im wirklichen Leben anwende, stelle ich fest, dass es nicht ein einziges Mal gehandelt wird.

Das liegt daran, dass HFTs und MMs Verzerrungen mit einer Geschwindigkeit von 1/1000000s einer Sekunde beseitigen.

Das ist eine Geschwindigkeit, mit der einzelne Händler nicht mithalten können.

Die Übertragung der Trading-Signale in einem universalen Expert Advisor. Die Übertragung der Trading-Signale in einem universalen Expert Advisor.
In diesem Artikel wurden die verschiedenen Möglichkeiten beschrieben, um die Trading-Signale von einem Signalmodul des universalen EAs zum Steuermodul der Positionen und Orders zu übertragen. Es wurden die seriellen und parallelen Interfaces betrachtet.
Algorithmischer Handel ohne Routine: Schnelle Handelsanalyse im MetaTrader 5 mit SQLite Algorithmischer Handel ohne Routine: Schnelle Handelsanalyse im MetaTrader 5 mit SQLite
Der Artikel stellt eine minimale arbeitsfähige Grundausstattung für die Führung eines Handelsjournals in MQL5 unter Verwendung von SQLite vor: eine Tabellenstruktur für Trades, Signale und Ereignisse, Indizes, vorbereitete Anweisungen und Trades sowie analytische Standard-SQL-Abfragen. Die Integration mit dem Statistik-Dashboard in MetaTrader 5 und das Arbeiten mit der Datenbank über MetaEditor werden demonstriert. Dieser Ansatz ermöglicht es, das Journal zu automatisieren, Berechnungen zu beschleunigen und Analysen durchzuführen, ohne den EA-Code zu verkomplizieren.
Eine alternative Log-datei mit der Verwendung der HTML und CSS Eine alternative Log-datei mit der Verwendung der HTML und CSS
In diesem Artikel werden wir eine sehr einfache, aber leistungsfähige Bibliothek zur Erstellung der HTML-Dateien schreiben, dabei lernen wir auch, wie man eine ihre Darstellung einstellen kann (nach seinem Geschmack) und sehen wir, wie man es leicht in seinem Expert Advisor oder Skript hinzufügen oder verwenden kann.
Fraktal-basierter Algorithmus (FBA) Fraktal-basierter Algorithmus (FBA)
Der Artikel stellt eine neue metaheuristische Methode vor, die auf einem fraktalen Ansatz zur Partitionierung des Suchraums für die Lösung von Optimierungsproblemen basiert. Der Algorithmus identifiziert nacheinander vielversprechende Bereiche und trennt sie voneinander ab, wodurch eine selbstähnliche fraktale Struktur entsteht, die die Rechenressourcen auf die vielversprechendsten Bereiche konzentriert. Ein einzigartiger Mutationsmechanismus, der auf bessere Lösungen abzielt, sorgt für ein optimales Gleichgewicht zwischen globaler Erkundung und lokaler Nutzung des Suchraums, wodurch die Effizienz des Algorithmus erheblich gesteigert wird.