Diskussion zum Artikel "Arbitrage-Handel im Forex: Ein einfacher synthetischer Market-Maker-Bot für den Einstieg"

 

Neuer Artikel Arbitrage-Handel im Forex: Ein einfacher synthetischer Market-Maker-Bot für den Einstieg :

Heute werfen wir einen Blick auf meinen ersten Arbitrage-Roboter – einen Liquiditätsanbieter (wenn man ihn so nennen kann) für synthetische Vermögenswerte. Derzeit arbeitet dieser Bot erfolgreich als Modul in einem großen maschinellen Lernsystem, aber ich habe einen alten Forex-Arbitrage-Roboter aus der Cloud geholt, also lassen Sie uns einen Blick darauf werfen und darüber nachdenken, was wir heute damit machen können.

Die Revolution in meinem Denken fand 2017 statt, als ich nach einer Reihe von schmerzhaften Verlusten begann zu studieren, wie große Spieler tatsächlich handeln. Damit meine ich nicht diejenigen, die auf YouTube über ihre „Millionengewinne“ sprechen, sondern echte Institutionen – Banken, Hedgefonds und Eigenhandelsfirmen.

Und das habe ich herausgefunden: Sie verwenden keine ausgefallenen Indikatorstrategien. Sie wenden mathematische Prinzipien, Risikomanagement, Arbitrage, Market Making und andere Ansätze an, die auf einem grundlegenden Verständnis der Marktmechanismen basieren. In diesem Moment habe ich meine Entscheidung getroffen: Ich musste handeln wie ein großer Spieler oder gar nicht handeln.

Die nächsten drei Jahre verbrachte ich mit dem Studium institutioneller Handelsmethoden. Ich tauchte in die Welt der Intermarket-Korrelationen, der statistischen Arbitrage und des algorithmischen Handels ein. Ich experimentierte mit Python und MQL und schuf Prototypsysteme, die die Ansätze großer Marktteilnehmer nachahmten, aber für Kleinhändler mit ihren Kapital- und Technologiebeschränkungen angepasst wurden.

Im Januar 2020, am Vorabend einer der turbulentesten Zeiten in der Geschichte der Finanzmärkte, wurde Tris_Optimized geboren – meine Antwort auf die Frage: „Wie kann ein Einzelhändler institutionelle Strategien anwenden?“

Dieser EA versucht nicht, Marktbewegungen vorherzusagen, stützt sich nicht auf Indikatoren der technischen Analyse und erfordert keine „Intuition“. Stattdessen berechnet es auf mathematische Weise potenzielle Ungleichgewichte zwischen drei miteinander verbundenen Währungspaaren und platziert eine Reihe von Aufträgen, um diese Ungleichgewichte aufzufangen, wenn sie entstehen.

In fünf Jahren Dauerbetrieb unter realen Marktbedingungen hat Tris_Optimized seine Tauglichkeit bewiesen. Er hat Pandemien, Inflationsschübe, Zinsänderungen und geopolitische Krisen überstanden – und wirft weiterhin beständige Gewinne ab (in den seltenen Fällen, in denen ich tatsächlich handele, anstatt die ganze Nacht über Code-Ideen und die tatsächlichen Codes zu brüten). Es handelt sich nicht um ein Wundersystem, das exorbitante Renditen verspricht, sondern um ein zuverlässiges Arbeitsinstrument, das auf den Grundprinzipien des institutionellen Handels beruht.


Autor: Yevgeniy Koshtenko

 

Interessanter Ansatz. Angefangen wie es ist, ohne Optimierung. Es hält das Gleichgewicht, es gibt einen Anstieg in kleinen Schritten.

Wenn Sie möchten, können Sie die Schließung des Gitters auf das Ende des Tages verschieben, bevor der Swap gebildet wird. Derzeit wird das Raster zu Beginn des Handels geschlossen. Oder den Tagesabschluss überhaupt nicht zu verwenden.

Es gibt definitiv Raum für Entwicklung und Anwendung in komplexen Lösungen.

Machen Sie weiter!

 

Der Artikel tauchte in der englischen Übersetzung auf, und ich fragte mich, was ich im russischen Original vom März verpasst hatte.

Es stellte sich heraus, dass es fabelhafter Quatsch war. ;-)

 
Evgen Khenkin #:
Gestartet wie es ist, ohne Optimierung. Behält das Gleichgewicht bei, es gibt einen kleinen Anstieg.
Wie schnell ging es runter?)
 


"Wenn Sie nach dem ersten Einstieg Positionen hinzufügen, skalieren Sie dann immer das gesamte Dreieck mit drei Paaren symmetrisch, oder fügen Sie immer nur Positionen für das spezifische Paar hinzu, das das größte Ungleichgewicht aufweist?"


 
Ali Munene #:
Ich höre immer noch zu.
Gib's auf!
 

Könnte dies auf einem echten Konto funktionieren? oder ist einer der Bots, die nur auf Demo-Konten funktionieren?

 

Hier ist der Code, wenn Sie Filling Fehler erhalten

Dateien:
 
Stanislav Korotky #:
Es stellte sich heraus, dass es sich um märchenhaften Unfug handelt

Stanislav, ich frage Sie, ohne zu sticheln und zu necken - wo ist dieser märchenhafte Unsinn zu finden? Ehrlich gesagt, würde ich gerne darauf eingehen und vollständig verstehen, was in diesem Artikel falsch ist!

Mit Respekt, Vladimir.

 
MrBrooklin #:

Stanislav, ich frage, ohne zu sticheln und zu sticheln - wo ist dieser fabelhafte Unsinn zu finden? Ehrlich gesagt, würde ich gerne darauf eingehen und vollständig verstehen, was an diesem Artikel falsch ist!

Beginnen wir mit der Tatsache, dass MT5 Konten mit Netting- und Hedging-Accounting gleichberechtigt unterstützt. Das vorgeschlagene System ist ausschließlich für Hedging gedacht, aber davon ist keine Rede. Beim Netting werden Gegenpositionen aus Gegenaufträgen schnell zu einem Verlust.

Zweitens ist die Idee, eine kurzfristige erfolgreiche Differenz von Kursen auf Crosses zu erfassen, nicht neu (man kann zum Beispiel mit den Arbeiten von hrenfx oder getch beginnen - sie sind zwar für MT4, aber die Essenz ändert sich nicht und geben eine gute Vorstellung vom Marktbild in der Dynamik). Es ist sinnlos, dies mit Hilfe von Pending Orders zu tun, die ohne Online-Kontrolle des momentanen synthetischen Spreads eröffnet werden. Solche Aufträge beginnen sofort mit einem Minus in Höhe der Summe der Spreads auf alle Paare, und der Autor dieses Artikels schlägt dann vor, Positionen in der Hoffnung zu halten, dass eines Tages vom Broker Ineffizienz der Notierungen noch mehr als dieser Spread zu warten. Das Raster der Aufträge nicht die Situation zu ändern, sondern nur ermöglicht es Ihnen, sitzen aus Verluste ein wenig länger, Schließen nur den Gewinn und die Akkumulation schwebenden Minus.

Drittens wird in dem Artikel die Frage der Marge völlig ausgeklammert, und selbst wenn wir uns eine riesige Einlage vorstellen, wie hoch wäre dann der prozentuale Gewinn, wenn es uns gelänge, darauf zu warten, dass das Raster im Plus schließt?

Und nun zur eigentlichen Umsetzung mit vielen Fehlern. Zum Beispiel,

// Anpassungen für Paare mit JPY und anderen exotischen Währungen
string quoteCurrency = StringSubstr(symbol, 3, 3);
if(quoteCurrency == "JPY" || quoteCurrency == "XAU" || quoteCurrency == "XAG")
   pointCost *= 100.0;

Das ist Blödsinn. MT5 gibt unabhängig von der Währung den richtigen Pip-Wert zurück. Die einzige Nuance ist, dass für Forex der Pip-Wert in der Kontowährung zurückgegeben wird, aber für Deviseninstrumente - in der Währung der Notierung und daher ist dort eine manuelle Neuberechnung in die Kontowährung erforderlich. Aber das ist für diesen Artikel nicht wichtig.

Weiter.

   // Anpassungsfaktor auf der Grundlage der aktuellen Bilanz
   double equityRatio = accountBalance / BaseEquity;

Wenn wir dem Expert Advisor nur einen Teil des Geldes zuweisen wollen und nicht das ganze Konto, sollte diese Beziehung in umgekehrter Richtung geschrieben werden. Nun stellt sich heraus, dass, wenn das Konto 10000 beträgt und wir 1000 für die Basis zugewiesen haben, der Expert Advisor mit Lots geöffnet wird, die 10 Mal größer sind, als das Konto für eine volle Belastung zulassen würde.

Ich habe das für meine Tests so geändert (sonst tritt der Fehler der fehlenden Marge schnell auf):

   // Anpassungsfaktor auf der Grundlage der aktuellen Bilanz
   double equityRatio = BaseEquity ? BaseEquity / accountBalance : 1.0;

Ich habe diesen Teil so gelassen, wie er ist, aber es gibt hier eine Menge Geheimnisse:

   // Berechnung des optimalen risikoadjustierten Loses
   double riskAmount = accountBalance * (RiskPercentage / 100.0);
   double calculatedLot = (riskAmount / 100.0) * equityRatio / (pointCost * basePrice);

RiskPercentage ist genau ein Prozentsatz, also ergibt RiskPercentage/100 einen Bruchteil des Geldes in Naturalien in der riskAmount-Variable.

Aber was ist diese magische 100, durch die der Geldbetrag geteilt wird? Handelt es sich um einen fest verdrahteten Hebeleffekt?

Und warum wird der Geldbetrag durch die Kosten pro Punkt * Preis geteilt? Das Risiko wird in der Regel als Abstand des Stop-Loss gemessen, aber da wir ein Raster haben, wäre es logisch, den Abstand des Rasters als Maß für das Risiko zu nehmen, aber das ist hier nicht der Fall. Außerdem entspricht 100 nicht dem Standard-Rasterabstand, und der Rasterabstand sollte anpassbar sein. Bei Forex ist die Formel für die Berechnung der Marge (falls es sich um diese handelt) anders, und im Prinzip ist es besser, sie über die API von MT5 anzufordern, als zu versuchen, sie selbst mit Formeln aus der Obergrenze zu berechnen.

Außerdem musste ich eine solche Änderung in der Provisionsberechnung vornehmen - es war (gab 0):

            double commission = PositionGetDouble(POSITION_COMMISSION);

Wurde (die Historie wird nach der Position zu Beginn des Zyklus gefiltert):

            double commission = 0; // PositionGetDouble(POSITION_COMMISSION);
            for(int j = 0; j < HistoryDealsTotal(); j++)
            {
               commission += // mit 2 multiplizieren, da die Ausgangsgebühren noch nicht berechnet wurden und gleich den Eingangsgebühren sein können
                 2 * (HistoryDealGetDouble(HistoryDealGetTicket(j), DEAL_COMMISSION)
                 + HistoryDealGetDouble(HistoryDealGetTicket(j), DEAL_FEE));
            }

Ohne auf Details einzugehen, möchte ich anmerken, dass ich, um mit verschiedenen Brokern zu arbeiten, Präfix/Suffix-Eingaben für Symbole hinzufügen musste und diese überall in Ausdrücke einfügen musste.

Nach Bearbeitungen und Experimenten erhalten wir einen stabilen und erwarteten Ablauf.

Trade-Arbitrage
Trade-Arbitrage
  • 2009.11.27
  • www.mql5.com
Несливающая система2 - использование неэффективности рынка (котирования) для 100%-го извлечения прибыли - арбитраж.
 
Stanislav Korotky #:

Beginnen wir mit der Tatsache, dass MT5 Konten mit Netting- und Hedging-Accounting gleichberechtigt unterstützt. Das vorgeschlagene System ist ausschließlich für das Hedging gedacht, aber es wird nicht erwähnt. Beim Netting beginnen Gegenpositionen aus Gegenaufträgen schnell in einem Verlust zusammenzubrechen....


.... Nach Korrekturen und Experimenten erhalten wir einen stabilen und erwarteten Abfluss.

Stanislav, vielen Dank für die ausführliche Antwort.

Mit freundlichen Grüßen, Vladimir.