Preis pro Pip - Seite 5

 

@Gordon

"Was meinen Sie mit'Instant Execution'? (es wird angedeutet, dass es nicht dasselbe ist wie 'Market Execution')..."

MT4 Server scheint sich auf die Möglichkeit zu beziehen, die Stops in der offenen Order als "Instant Execution" und "Market Execution" zu setzen, wenn sie auf 0 gesetzt und geändert werden müssen (Sie sehen dies in der Pull-Down-Liste der manuellen Ordereröffnung).

@SDC und 1005philip

"Wäre es nicht einfacher, einfach Symbol() in allen Verweisen auf das Symbol zu verwenden? Selbst wenn der Broker-Server EURUSD als Mooncheese eingegeben hat, spielt das keine Rolle, solange der EA auch weiß, dass EURUSD Mooncheese heißt.

Wenn der Symbolname vom Broker geändert wird, muss ein neuer Chart geöffnet werden, dem Sie Ihren EA hinzufügen.

CB

 
cloudbreaker:

MT4 Server scheint sich auf die Möglichkeit zu beziehen (Sie sehen dies in der Pull-Down-Liste für die manuelle Ordereröffnung), die Stops in der Ordereröffnung als "Instant Execution" und "Market Execution" zu setzen, wenn sie auf 0 gesetzt und geändert werden müssen.

Ich will verdammt sein, das Pull-Down-Menü ändert sich tatsächlich, wenn man sich bei einem Konto anmeldet, das nur Stopps bei 0 akzeptiert. Das ist mir nie aufgefallen. Danke!
 
SDC:

Wäre es nicht einfacher, in allen Verweisen auf das Symbol Symbol Symbol() zu verwenden? Dann ist es egal, ob auf dem Broker-Server EURUSD als Mooncheese eingetragen ist, solange der EA auch weiß, dass EURUSD Mooncheese heißt.

Wow! das Thema ist auf 42 Beiträge angewachsen, das ist ein Rekord...

Wenn es niemanden stört.... ich da weiter, wo ich aufgehört hatte...

SDC, wenn ich mich nicht irre, hat Phillip seine eigene Funktion entworfen, um TickValue unabhängig zu erzeugen, im Gegensatz zum einfachen Aufruf der vordefinierten MarketInfo. Natürlich ist der Aufruf von MODE_TICKVALUE bei Symbol() die einfachste logische Lösung. Aber abgesehen von der Demonstration/dem Nachweis, wo/wie der TickValue seinen Wert erhalten hat. Ich könnte mich irren, aber ich denke, dass dies den Vorteil hat, ein/mehrere exotische Paare zu synthetisieren, die ein bestimmter Broker möglicherweise nicht anbietet. Wir können alle verfügbaren Basen/Zähler permutieren. Ich habe kein Beispiel parat. Aber ich bin mir ziemlich sicher, dass das, was die Broker zu bieten haben, keine vollständige Permutation der verfügbaren Basis/Zähler ist. Ich habe nur erforscht, was Phillip gepostet hatte. Kann nicht nützlich sein, es sei denn, man muss hedgen/arbitragen oder so...

 

Cameo Ich würde gerne mehr von dem Code teilen, den ich hier habe, wenn Sie darin einen Nutzen sehen. Ehrlich gesagt bin ich davon ausgegangen, dass es sich um einen banalen/routinemäßigen Weg handelt, den die meisten Leute im Laufe ihrer eigenen Programmierabenteuer bereits beschritten haben, so dass ich die Intelligenz von niemandem beleidigen wollte, indem ich annahm, dass es für die Gemeinschaft etwas Neues ist. (außerdem ist mein Code nicht gerade das, was ich für veröffentlichungswürdig halte, da er auf meiner Festplatte liegt und in den falschen Händen möglicherweise mehr Schaden als Nutzen anrichtet, und ich möchte wirklich nicht, dass jemand wegen meines glanzlosen Kommentarstils Geld verliert, usw.)

Der Vorteil (ich sehe es eher als "die Notwendigkeit"), den Tickvalue aus den Fundamentaldaten berechnen zu können, ist nicht so sehr für Hedging/Arbitrage (obwohl es sicherlich auch dort genutzt werden könnte), sondern eher für etwas viel Einfacheres. In meinem Fall halte ich es für die Berechnung des Risikokapitals, die Platzierung von Stoploss usw. für notwendig.

(Beachten Sie auch: Der marketinfo-Wert für MODE_TICKVALUE basiert ausschließlich auf dem Geldkurs des Währungspaares, nicht auf dem Briefkurs. Daher ist der marketinfo-Tickvalue eigentlich nur technisch korrekt für die Verwendung bei Berechnungen, die vom Geldkurs abhängen, wie z. B. der Take-Profit-Wert einer Long-Position oder der Stoploss einer Short-Position... auch hier ist die Diskrepanz gering, und natürlich macht es keinen Unterschied für Währungspaare, bei denen die Kontowährung die Gegenwährung ist, wie z. B. EURUSD usw.)

Das Problem bei der Verwendung der Marktinfo Tickvalue ist, dass sie nur für die aktuellen Marktpreise gültig ist. Der Tickvalue ist bei allen Währungspaaren mit Ausnahme derjenigen, bei denen die Kontowährung die Gegenwährung ist, vom Marktpreis abhängig. (Der Tickwert von USDJPY ist bei USDJPY = 99,00 anders als bei 98,00, usw.)

Der Grund für die Erstellung von "synthetischen" Paaren, wie Sie sie nennen, ist, dass bei währungsübergreifenden Paaren der Tickwert vom Preis der beiden Währungspaare abhängt. Sowohl das gehandelte Symbol als auch das Währungspaar, das durch die Währung des Kontos und die des Gegenwährungspaares im gehandelten Symbol gebildet wird.

Ein Beispiel. Nehmen wir an, Ihr Konto lautet auf USD und Sie möchten mit dem EURGBP handeln. Der Wert der EURGBP-Position, sobald Sie sie eröffnen, hängt sowohl vom Marktpreis des EURGBP als auch vom Marktpreis des GBPUSD ab.

Sie könnten eine Long-Position auf den EURGBP bei 0,8500 eröffnen, und der EURGBP könnte den ganzen Tag über auf diesem Kurs verharren, und dennoch wäre Ihre Position unter Wasser, wenn der GBPUSD in der Zwischenzeit einen Abwärtstrend verzeichnet. (Das ist auch der Grund, warum Sie vielleicht schon den einen oder anderen Beitrag von mir gelesen haben, in dem ich erklärt habe, dass Hedging beim Handel mit Währungspaaren notwendig, aber unpraktisch ist, wenn Sie Ihr Risiko kontrollieren wollen.)

In meinem Fall möchte ich die Währungspaare, die eine Brücke zwischen der Kontowährung und dem Cross-Currency-Paar bilden, programmatisch bestimmen, daher die Verwendung der "synthetischen" Paarbildung.

 
1005phillip:

cameo Ich würde gerne mehr von dem Code, den ich hier stehen habe, mit Ihnen teilen, wenn Sie daran Interesse haben.

Ja, das wäre großartig...! Bitte fügen Sie es bei oder senden Sie mir eine E-Mail, wenn Sie dazu bereit sind. Danke Phillip...

Der Nutzen (ich betrachte es eher als "die Notwendigkeit") der Möglichkeit, den Tickvalue aus den Fundamentaldaten zu berechnen, ist nicht so sehr für Hedging/Arbitrage (obwohl es dort sicherlich auch genutzt werden könnte), sondern eher für etwas viel Einfacheres. In meinem Fall halte ich es für die Berechnung des Risikokapitals, die Platzierung von Stoploss usw. für notwendig.

(Beachten Sie auch: Der marketinfo-Wert für MODE_TICKVALUE basiert ausschließlich auf dem Geldkurs des Währungspaares, nicht auf dem Briefkurs, daher ist der marketinfo-Tickvalue eigentlich nur technisch korrekt für die Verwendung bei Berechnungen, die vom Geldkurs abhängen, wie z. B. der Take-Profit-Wert einer Long-Position oder der Stoploss einer Short-Position... auch hier ist die Diskrepanz gering, und natürlich macht es keinen Unterschied für Währungspaare, bei denen die Kontowährung die Gegenwährung ist, wie z. B. EURUSD usw.)

Bedeutet dies, dass die Marktinformationen der anderen Seite des Handels, d. h. des Short-Kurses (Briefkurs), eine Diskrepanz aufweisen, wenn sie unabhängig berechnet werden?

Das Problem bei der Verwendung der Marktinfo Tickvalue ist, dass sie nur für die aktuellen Marktpreise gültig ist. Der Tickvalue ist für alle Währungspaare mit Ausnahme derjenigen, bei denen die Kontowährung die Gegenwährung ist, vom Marktpreis abhängig. (Tickvalue von USDJPY ist anders bei USDJPY = 99,00 gegenüber 98,00, usw.)

Der Grund für die Schaffung von "synthetischen" Paaren, wie Sie sie nennen, ist, dass bei währungsübergreifenden Paaren der Tickwert vom Preis der beiden Währungspaare abhängt. Sowohl von dem gehandelten Symbol als auch von dem Währungspaar, das durch die Währung des Kontos und die des Gegenwährungspaares des gehandelten Symbols gebildet wird.

Ja, das ist im mql4-Buch klar beschrieben. Seitdem betrachte ich die TickValues vonWährungspaaren immer als 'floating'.

Ein Beispiel. Nehmen wir an, Ihr Konto lautet auf USD und Sie möchten mit dem EURGBP handeln. Der Wert der EURGBP-Position, sobald Sie sie eröffnen, hängt sowohl vom Marktpreis des EURGBP als auch vom Marktpreis des GBPUSD ab.

Sie könnten eine Long-Position auf den EURGP bei 0,8500 eröffnen, und der EURGP könnte den ganzen Tag auf diesem Kurs verharren, und dennoch wäre Ihre Position unterbewertet, wenn der GBPUSD in der Zwischenzeit nach unten tendiert. (Das ist auch der Grund, warum Sie vielleicht schon den einen oder anderen Beitrag von mir gelesen haben, in dem ich erklärt habe, dass Hedging beim Handel mit Währungspaaren notwendig, aber unpraktisch ist, wenn Sie Ihr Risiko kontrollieren wollen).

So habe ich das noch nie gesehen! Ich muss darüber nachdenken, s'more.... :)

In meinem Fall möchte ich die Währungspaare, die eine Brücke zwischen der Kontowährung und dem Cross-Currency-Paar bilden, programmatisch bestimmen, daher die Verwendung der "synthetischen" Paarbildung.

Eine (vielleicht dumme) Frage: Ist Ihnen jemals ein Paar begegnet, das nicht den USD als Basis/Gegenwert hat, sondern als Kreuz existiert?


 
gordon:

Leider wird durch die Benennung von MODE_TICKSIZE und MODE_TICKVALUE eine zweite Definition von Tick hinzugefügt (was vermutlich die Ursache für die Verwirrung ist...). Die Definition von Tick in diesem Zusammenhang lautet: Ein Tick ist die kleinstmögliche Kursänderung für das betreffende Symbol:

  • MODE_TICKSIZE - die Größe dieser Veränderung in Preisen (die Dokumentation behauptet "Tick size in points", aber das ist offensichtlich ungenau).
  • MODE_TICKVALUE - der Wert dieser Änderung in der Depotwährung des Kontos (dieser wird serverseitig vom Broker berechnet).
Kommentare:
  1. Ein "Punkt" (MODE_POINT) ist die kleinstmögliche Kursänderung auf der linken Größe des Dezimalpunkts für das betreffende Symbol. Dies ist NICHT dasselbe wie MODE_TICKSIZE. Technisch gesehen: MODE_TICKSIZE>=MODE_POINT, obwohl sie fast immer gleich sind.
  2. Ein "Pip" ist eine Konvention, etwas, worauf wir uns alle einigen. Es handelt sich nicht um eine mathematische Eigenschaft des Symbols oder eine Eigenschaft des MT4-Servers. So ist zum Beispiel bei einem 4-stelligen Broker für EURUSD ein Pip 1 Punkt, aber bei einem 5-stelligen Broker ist ein Pip 10 Punkte...
  3. Es gibt eine gute Diskussion darüber, wie man die Größe eines Pip in Points automatisch bestimmen kann, hier -> https://www.mql5.com/en/forum/124692.
  4. MODE_TICKSIZE kann variieren, obwohl das extrem selten vorkommt (Point ist dagegen fest). CB hat eine Methode, um mit diesen Änderungen umzugehen, hier -> https://www.mql5.com/en/forum/109552/page3#195878.

Ich möchte meine bisherige Interpretation darlegen und damit ergänzen, was Gordon oben sehr gut dargelegt hat.

  • Point : Endet immer auf 1. Es ist ein Umrechnungsfaktor für das Verhältnis, das wir 'Preis' genannt haben.
  • MODE_TICKSIZE : Die kleinste Einheit der Preisbewegung in Punkten.
  • MODE_TICKVALUE : Aktueller Wert der Gegenwährung in Umrechnung in ihr Basisverhältnis.
 

cameofx:

Punkt : Endet immer mit 1. Es ist ein Umrechnungsfaktor für das Verhältnis, das wir "Preis" genannt haben.
Zur Klarstellung von Gordons "fast immer": Mir fällt auf Anhieb kein Forex-Instrument ein, bei dem dies nicht zutrifft, aber bei Brokern, die Metalle, Indizes usw. anbieten, ist es selten der Fall. Beim Goldkontrakt von Alpari beispielsweise beträgt die TICKSIZE 0,05 (und der Point 0,01). Soweit ich weiß, ist MarketInfo(Symbol(),MODE_POINT) = MathPow(10, -MarketInfo(Symbol(), MODE_DIGITS))
 
cameofx:

Ja, das wäre großartig...! Bitte fügen Sie es bei oder schicken Sie mir eine E-Mail, wenn Sie dazu bereit sind. Danke Phillip...


Enthalten in der angehängten rar-Datei. Ich bin sicher, Sie haben Fragen zur Verwendung, Feuer weg.


cameofx:

Bedeutet dies, dass die Marktinformationen der anderen Seite des Handels, d.h. der Short-Seite (Briefkurs), eine Diskrepanz aufweisen, wenn sie unabhängig berechnet werden?



Das ist richtig. Aber der prozentuale Fehler ist einfach die Spanne in Punkten geteilt durch den Briefkurs (~0,02%-0,05% je nach Währungspaar)... das ist nur wichtig, wenn Sie jeden einzelnen Cent berücksichtigen wollen.


cameofx:

So habe ich das noch nie gesehen! Ich muss über dieses s'more.... nachdenken. :)


Ich habe eine Excel-Datei in die angehängte rar-Datei eingefügt, in der Hoffnung, dass sie Ihnen bei Ihren Überlegungen weiterhilft.

cameofx:

Eine (vielleicht dumme) Frage: Ist Ihnen jemals ein Paar begegnet, das nicht den USD als Basis/Gegenwert hat, sondern als Kreuz existiert?



So wie Ihre Frage derzeit formuliert ist, lautet die einfache Antwort: Ja - jedes Cross ohne USD erfüllt Ihr Kriterium. Aber ich denke, Sie wollten eine andere Frage stellen - nämlich ob ich einen Broker kenne, der ein Cross-Currency-Paar anbietet und gleichzeitig nicht das erforderliche Währungspaar anbietet, das die Gegenwährung des Cross-Paares und die Währung der Kontenbezeichnung enthält?

Die Antwort auf diese Frage lautet nein, und das aus gutem Grund, denn ein Broker kann das einfach nicht. Der Grund dafür, dass ein Broker das nicht kann, ist, dass er an die gleichen fundamentalen Preisverbindungen der hier beschriebenen Gleichungen gebunden ist... mit anderen Worten, er braucht Zugang zu den gleichen Preisinformationen, um die Bewertungen Ihrer währungsübergreifenden Positionen zu berechnen und zu melden.

Nehmen wir zum Beispiel an, Sie haben ein auf Euro lautendes Konto und kaufen 1 Lot von GBPUSD. Die Gegenwährung im GBPUSD ist der USD. Um Ihren Gewinn/Verlust aus Ihrer GBPUSD-Position zu berechnen, muss Ihr Broker (und Sie) also auch den Kurs des EURUSD kennen. (Der EUR ist Ihre Kontowährung, der USD ist die Gegenwährung des Währungspaares, in dem Sie eine Position eröffnet haben).

Wenn der Broker EURUSD nicht als Paar anbietet, kann das MT4-Terminal den gleitenden Gewinn/Verlust Ihrer Position nicht auf Tick-by-Tick-Basis berechnen. Daher werden Sie nie einen Broker finden, der Ihnen die Möglichkeit bietet, ein Cross-Pair zu handeln (in Bezug auf die Denomination Ihres Kontos), ohne auch das primäre Währungspaar anzubieten, das Ihre Kontowährung enthält.
 
jjc:
Zu Gordons "fast immer" fällt mir auf Anhieb kein Forex-Instrument ein, auf das dies nicht zutrifft, aber bei Brokern, die Metalle, Indizes usw. anbieten, trifft es selten zu. Beim Goldkontrakt von Alpari beispielsweise beträgt die TICKSIZE 0,05 (und der Point 0,01). Soweit ich weiß, ist MarketInfo(Symbol(),MODE_POINT) = MathPow(10, -MarketInfo(Symbol(), MODE_DIGITS))
In beiden Fällen stimme ich zu. Ich habe noch nie einen Fall gesehen, in dem MODE_POINT und MODE_DIGITS nicht mit dieser Formel übereinstimmten.
 
cameofx:
Punkt : Endet immer auf 1.
"Ein 'Punkt' (MODE_POINT) ist die kleinstmögliche Preisänderung", daher muss er natürlich auf eine 1 enden.
MODE_TICKSIZE : Die kleinste Einheit der Kursbewegung in Punkten.

Wie ich bereits sagte, ist die Angabe "Tickgröße in Punkten" in der Dokumentation offensichtlich nicht korrekt. Es handelt sich ebenfalls um eine Preisangabe.

MODE_TICKVALUE : Aktueller Wert der Gegenwährung in Umrechnung in ihr Basisverhältnis.

Diese Definition ist unklar... (vielleicht ist Englisch nicht Ihre Muttersprache?).