Erstellen und Testen von Arbitrage-Strategien - Seite 7

 
pronych:
Also gut. Wir werden darüber sprechen, wenn Sie mit diesen Beinen Limit-Order erteilen.))
Ich stimme zu, es wird etwas schwierig sein, einen Schwarm von Limit-Aufträgen zu kontrollieren ))
 

Ich werde ein neues Thema eröffnen.

Diese Frage kann sich stellen, wenn wir die Liquidität für Arbitragepositionen definieren.
Wie kann die Liquidität eines Währungspaares in USD-Einheiten auf einem Best-Band korrekt neu berechnet werden (und warum)?

1) direkt durch Major in Basiswährung
2) über Major in notierter Währung

Beispiel: Das Volumen des EURCHF Best Bund beträgt 2 Millionen Einheiten. Sie müssen dieses Volumen in USD überprüfen. Was sollen wir tun? Wir sehen uns den EURUSD-Ticker an und schätzen, wie viel 2 Millionen Euro sind. Oder schätzen wir das CHF-Volumen zum aktuellen Wechselkurs und berechnen dann das Volumen in USD mit dem USDCHF-Dial?

 
GaryKa:

Ich werde ein neues Thema eröffnen.

Diese Frage kann sich stellen, wenn wir die Liquidität für Arbitragepositionen definieren.
Wie kann die Liquidität eines Währungspaares in USD-Einheiten auf einem Best-Band korrekt neu berechnet werden (und warum)?

1) direkt durch Major in Basiswährung
2) über Major in notierter Währung

Beispiel: Das Volumen des EURCHF Best Bund beträgt 2 Millionen Einheiten. Sie müssen dieses Volumen in USD überprüfen. Was sollen wir tun? Wir sehen uns den EURUSD-Ticker an und schätzen, wie viel 2 Millionen Euro sind. Oder schätzen wir das CHF-Volumen zum aktuellen Wechselkurs und verwenden dann den USD/DCHF-Tenge, um das Volumen in USD zu bestimmen?

Und durch den Wert der Zecke, nicht wahr?
 

Ich habe die Lösung über TickValue gesehen. Aber der Fall ist allgemein (nicht MT) und außerdem, ich will ehrlich sein, bereitet mir die Manipulation von TickValue Kopfschmerzen. Ich hätte gerne eine einfache Erklärung, die leicht zu merken ist.

Bis jetzt sieht es so aus:

Bei Ask Gangs haben wir ein Verkaufsangebot, d. h. der Verkäufer hat die Ware(Basiswährung) auf Lager. Wir rechnen sie einfach in eine andere Kurswährung (USD) um. Auf der gegenüberliegenden Seite der Gebotsbank haben wir kein Produkt zum Kauf verfügbar, aber wir haben Geldmittel (in der angegebenen Währung). Berechnen Sie diese Mittel über den entsprechenden Major neu.

Insgesamt:

  • für Ask Gangs zählen (1) Weg
  • Für Bid-Gangs berechnen wir auf (2) Weise
 
Du machst Witze... Oder ich verstehe nicht, was Sie sagen. Sie glauben also, dass 1 Lot Volumen zum Beispiel auf EURUSD gleich 1 Lot Volumen auf jedem anderen Symbol ist?
 
GaryKa: ... Sie denken also, dass 1 Lot Volumen zum Beispiel auf EURUSD gleich 1 Lot auf jedem anderen Symbol ist?

Bei Paaren mit derselben Basiswährung ist der Vergleich nach Lots akzeptabel, da die Einheiten dieselben sind. Zum Beispiel die Volumina für EURCHF und EURUSD.


papaklass:

Einige Verkäufer EURUSD ASK-Band = 2,0 Millionen, d.h. Verkäufer wollen 2 000 000 / 100000 = 20 Lots EUR verkaufen und 2 000 000 / 136345 = 14,67 Lots USD kaufen.

Andere GBPUSD-Verkäufer ASK-Band = 3,5 Millionen, d.h. die Verkäufer wollen 3 500 000 / 100000 = 35 Lots GBP verkaufen und 3 500 000 / 164349 = 21,3 Lots USD kaufen.

Daraus ergibt sich, dass sie im Moment 14,67 + 21,3 = 35,97 Lose USD für Euro und Pfund kaufen wollen. Sie können jede Währung auf diese Weise berechnen.

In diesem Beispiel haben Sie wichtige Paare, die die gleiche Kurswährung haben. Ein einfacher Vergleich nach Lots ist nicht akzeptabel: 20 Lots Euro und 35 Lots Pfund. Daher konvertieren Sie und erhalten die Volumina in USD-Lots: 14,67 und 21,3, die bereits verglichen werden können.


Die Frage war ein wenig anders? Wie berechnet man das Volumen für ein Kreuzpaar? Zeigen Sie es mir mit oder ohne Lose. Wie kann man zum Beispiel das Volumen von EURCHF und AUDNZD vergleichen?

GaryKa: ... Wie kann man die Liquidität auf dem besten Band eines Währungspaares in USD-Einheiten korrekt neu berechnen (und warum)?
 

Hier ist eine weitere Option für die Arbitrageposition, Lots für jedes Symbol zu berechnen, um so viel Liquidität wie möglich zu handeln, ohne in gemeinsame Einheiten umzuwandeln.

Angenommen, wir haben eine Dreiecksarbitrage vom Typ A/B, B/C, C/A

1) Beginnen Sie mit dem ersten und letzten Symbol. Nehmen Sie das Volumen A des ersten Paares (erinnern Sie sich an die Bestellgröße A/B) und berechnen Sie das Volumen B (rechnen Sie A in B um). Ist das erhaltene Volumen größer als das von B/C, gehen wir zu Punkt 2. Ist es kleiner, merken wir uns dieses Volumen (als Auftragsgröße für B/C), berechnen C, vergleichen es usw. Wir haben erfolgreich das Ende der Kette erreicht -> wir haben bereits Auftragsvolumen, Ausgang.

2) Führen Sie eine zyklische Verschiebung durch (aus A/B, B/C, C/A wurde B/C, C/A, A/B ), und gehen Sie zurück zu Punkt 1)

 
papaklass: ... Drücken Sie die Volumina für diese Währungen durch die bei der Positionseröffnung erforderlichen Sicherheiten aus. Ermitteln Sie also das Volumen dieser Währungen in USD und vergleichen Sie es.
Ein guter Vorschlag.

Berechnen wir selbst, wie viel Marge von uns in der Einzahlungswährung USD abgezogen wird (werden muss), wenn:

- Wir möchten 1 Lot EURCHF kaufen.
EURCHF zu kaufen bedeutet, EUR für CHF zu kaufen. Wir haben keine CHF. Wir leihen sie uns oder wir kaufen sie selbst (mit einer Hebelwirkung von 1:1). Mit anderen Worten: Wir haben USD (Einlage) und müssen CHF kaufen (oder nicht kaufen, wenn der Kredit in CHF verfügbar ist), um EUR zu kaufen. Das bedeutet, dass wir, um EURCHF zu kaufen, USDCHF wirklich (Hebelwirkung 1:1) oder virtuell verkaufen müssen (Verkauf von USD aus dem Depot, Kauf von CHF), und zwar zu einem Marktpreis (Worst-Case).

- Wir möchten 1 Lot EURCHF verkaufen.
Der Verkauf von EURCHF ist ein Verkauf von EUR gegen CHF. Wir haben keine EUR (wir haben nichts zu verkaufen). Wir leihen sie entweder aus oder kaufen sie selbst (mit einer Hebelwirkung von 1:1). Mit anderen Worten: Wir haben USD (Einlage) und müssen EUR kaufen (oder nicht kaufen, wenn uns ein Kredit in EUR gewährt wird), um CHF zu kaufen. Das bedeutet, dass wir, um EURCHF zu verkaufen, tatsächlich (Hebelwirkung 1:1) oder virtuell EURUSD kaufen müssen (Verkauf von USD aus dem Depot, Kauf von EUR), und zwar zum Marktpreis (Worst-Case).

Unterm Strich:
  • beim Kauf von EURCHF sollte die USD-Marge für den Kredit anhand der USDCHF-Kurse berechnet werden
  • bei EURCHF-Verkäufen muss die USD-Marge für den Kredit anhand der EURUSD-Kurse berechnet werden


Gehen wir nun Ihren Code durch. Meiner Meinung nach fehlt der Funktion ein Argument, das für die Richtung des Geschäfts verantwortlich wäre. Sie haben die Variable marginCurrency, die immer als Basiswährung definiert ist. Dementsprechend wird die Marge sowohl für den Kauf als auch für den Verkauf von EURCHF immer über EURUSD berechnet.

   string marginCurrency = StringSubstr( StringTrimLeft( smb ), 0, 3 );

...


   if( calcCurrency == "" ){
      calcCurrency = GetSymbolByCurrencies( marginCurrency, accCurrency );
      mode = true;
     
      if( calcCurrency == "NULL" ){
         calcCurrency = GetSymbolByCurrencies( accCurrency, marginCurrency );
         mode = false;
      }
   }


P.S. Ich bin neugierig, inwieweit Ihre Margenberechnungen jetzt mit den MT-Berechnungen übereinstimmen, zumal es schon früher ähnliche Behauptungen gab.

 
papaklass:

Nach dem Schweigen zu urteilen, ist nicht alles klar.

Beantworten Sie die Frage: "Wie berechnet man das Volumen eines Kreuzpaares" mit Zahlen? Zeigen Sie es mir mit oder ohne Lose. Wie vergleicht man zum Beispiel die Volumina von EURCHF und AUDNZD?"

Um die Differenz in Losen zu ermitteln, teile ich die Kurse der wichtigsten Währungen im Zähler. Die Verpfändungswährung ist die Währung, die im Zähler steht.

EURUSD / AUDUSD -> 1,36368 / 0,90639 = 1,50451, d.h. das Volumen der zu eröffnenden AUDNZD-Position muss 1,50-mal größer sein als EURCHF.

Warum teile ich die Hauptfächer auf?

Ich verstehe diesen Beitrag nicht. Wenn man also auf diese Weise rechnet, kommt man zu dem Schluss , dass das Volumen von AUDNZD (in USD )ungefähr 1,5 Mal größer ist als das Volumen von EURCHF (in USD). Oder?

 
papaklass: ... Nun zu meinem Code für die Berechnung der Marge. Ich habe mich ausführlich dazu geäußert. Ist das nicht schwer zu lesen und zu verstehen? Die Marge wird durch eine andere Funktion berechnet... Schauen Sie sich den Code nach dem Kommentar "//receive the current price for the specified direction" an.

Papaklass , beruhige dich, oder wir werden uns streiten. Ich habe mir Ihren Code angesehen, bevor ich kommentiert habe, haben Sie sich meinen Kommentar angesehen? Vorsichtig?


Meine Beschwerde zu Ihrer Berechnungsmethode (am Beispiel der EURCHF-Berechnung) .

GaryKa: ... Sie berechnen immer die Sicherheit sowohl für den Kauf als auch für den Verkauf von EURCHF über EURUSD.

Nach dem Kommentar "//fetch the current price for the specified direction" berechnen Sie immer die Preise für das gleiche Symbol , sowohl beim Kauf als auch beim Verkauf , während ich glaube, dass Sie sie für verschiedene Symbole berechnen müssen (Begründung oben).

   prc = Dbl_If( dir == OP_BUY, MarketInfo( calcCurrency, MODE_ASK ),
                                MarketInfo( calcCurrency, MODE_BID ) );

Im Beispiel EURCHF haben Sie immer EURUSD.


P.S. Das war unnötig, sorry

GaryKa: ... Meiner Meinung nach fehlt der Funktion das Argument, das für die Richtung des Handels verantwortlich wäre ...

Grund der Beschwerde: