Preis pro Pip - Seite 6

 
jjc:
Eine Klarstellung zu Gordons "fast immer": Mir fällt 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))

jjc, vielen Dank für Ihre Antwort:

Ich denke, es liegt daran, dass wir Dezimalzahlen als mathematische Konvention bei der Berechnung und Wahrnehmung von Zahlen verwenden. Wenn wir stattdessen zum Beispiel Hexadezimal verwenden würden, hätten wir nicht die Möglichkeit, einen Punkt in einem Punkt zu beenden. Wenn wir zum Beispiel umrechnen wollen, wie viele Meter 5 cm sind, würden wir sie einfach mit dem Umrechnungsfaktor von einem Hundertstel multiplizieren. ( 5 cm * 0,01 --> 0,05 m ) -- eine volle Anzahl von 10 [Einheiten von cm] durchlaufen -- zehnmal. Aber wenn wir eine Hexadezimalzahl verwenden. Wir müssten eine volle Anzahl von 6 - 16 Mal mit einem Modulus von 4 durchlaufen.

Ein Punkt ist also ein dezimaler Umrechnungsfaktor. Wenn die Marktkonvention vorschlägt, dass z.B. das derzeitige Preisverhältnis von GBPUSD 1,3535 beträgt, dann nur, weil wir/ihr der Meinung sind, dass der Dezimalwert der fünften Stelle für den Kauf von 1 GBP mit 1,3535 USD für die Wirtschaft des Handels unbedeutend ist. Sollte der Handel jedoch größer sein (vielleicht im Wert der Werften) und häufiger stattfinden. Dann würden wir es auf den kleinsten signifikanten Penny bringen, den das Preisverhältnis haben sollte. Wie zum Beispiel 1,3535665.

Ich stimme also zu, dass Point immer = MathPow(10, -MarketInfo(Symbol(), MODE_DIGITS)) sein wird, wie Sie es gleichsetzen.

EDIT : Sorry Leute, der erste Entwurf kam durch. War & ist immer noch zu ADD um zu posten. Ich hoffe, dies ist besser...

 
1005phillip:

In der beigefügten rar-Datei enthalten. Ich bin sicher, dass Sie Fragen zur Nutzung haben werden, schießen Sie los.

Phillip, ich kann dir nicht genug danken! Das ist einfach großartig! Ich brauche etwas Zeit, um das herauszufinden. Aber auf den ersten Blick sind die Kommentare klar und ich habe keine Probleme, auch die Excel-Datei zu verstehen. Dies ist eine wertvolle Ergänzung zu meinem Arsenal. Es ist sehr großzügig von Ihnen, dieses Stück Arbeit mit der Phillip Community zu teilen. Nochmals vielen Dank!

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.

Das ist sehr interessant!

So wie Ihre Frage derzeit formuliert ist, lautet die einfache Antwort ja - jedes Kreuz 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-Währungspaar 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 niemals 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.

Ja, Ihre letztgenannte Interpretation meiner Frage ist die richtige. Schlechte Formulierung meinerseits. Das wird die Charakteristik der Währungspaare etwas mehr erhellen. Vielen Dank dafür...

cameo

 
gordon:
" Ein 'Punkt' (MODE_POINT) ist die kleinstmögliche Preisänderung", also muss er natürlich auf eine 1 enden.

Ja, das ist eine etwas alberne Erklärung. Aber ich habe nur versucht zu unterstreichen, dass Point sich charakteristisch von TICK_SIZE unterscheidet, da TICK_SIZE nicht immer auf 1 endet. Der Broker wird die Größe so anpassen, dass der Wert der Fluktuation / des wirtschaftlichen Wertes entspricht.

"Wie ich bereits sagte, ist die in der Dokumentation angegebene "Zeckengröße in Punkten" offensichtlich unzutreffend. Sie wird auch in Preisen angegeben."

Ich verstehe den fettgedruckten Teil nicht, Gordon... Wenn Sie mir das erklären könnten...

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

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

Ja, es ist meine zweite Sprache. Das hat sich aber nicht als Hindernis erwiesen, wenn es darum geht, in der Vergangenheit oder Zukunft unsinniges Geschwafel zu produzieren :))))

Ich werde versuchen, es im nächsten Beitrag zu erklären. Ich bitte um Entschuldigung, da meine Zeit knapp bemessen ist. Vielen Dank wie immer, Gordon!
 
cameofx:
"Wie ich bereits sagte, ist die in der Dokumentation angegebene "Zeckengröße in Punkten" offensichtlich unzutreffend. Sie wird auch in Preisen angegeben."

Ich verstehe den fettgedruckten Teil nicht, Gordon... Wenn Sie mir das erklären könnten...

Nehmen wir an, Point = 0,00001. Wenn MODE_TICKSIZE in Punkten angegeben wäre, würde MarketInfo(Symbol(),MODE_TICKSIZE) beispielsweise 1 zurückgeben, was als 1*Point=1*0.00001=0.00001 interpretiert würde. Aber das ist nicht das, was MarketInfo(Symbol(),MODE_TICKSIZE) zurückgibt, es gibt (zum Beispiel) 0,00001 zurück, also einen Wert, der den Preis und nicht die Punkte darstellt. In der Dokumentation heißt es "Tick-Größe in Punkten", was offensichtlich ungenau ist (wahrscheinlich ein Fehler in der Übersetzung aus dem Russischen).
 
SDC:

Ich habe diesen Thread gelesen, bevor er voll von widersprüchlichen Informationen war.

BarrowBoy - eine Änderung des Geld- und/oder Briefkurses

Rosh - ein "neuer Preis"-Ereignis

kminler - jeder Tick steht für einen abgeschlossenen Handel

puncher - ein Tick ist ein Pip

Nachdem ich andere Threads und Diskussionen über Ticks gelesen hatte, war ich zu dem Schluss gekommen, dass ein Tick keinen spezifischen Wert hat, da er nur ein neues Bid und ein neues Ask enthält, die sich um 1 Pip vom letzten Tick unterscheiden können, um keinen oder um mehrere Pips, so dass der Tick an sich keinen Preisunterschied, sondern nur einen neuen Preis enthält.

Aber jetzt habe ich untersucht, wie der Wert eines Pips zu berechnen, stoße ich auf MarketInfo MODE_TICKVALUE, die einen statischen Wert zu sein scheint, dies in sich widerspricht, was die meisten Menschen scheinen zu sagen, über einen Tick, dass es einfach vermittelt eine Veränderung im Preis, kein bestimmter Betrag, so wie kann es so etwas wie MODE_TICKVALUE es macht keinen Sinn, es sei denn, die meisten Menschen sind falsch und 1 Tick hat in der Tat einen bestimmten Wert gleich 1 Pip, Mein Problem ist das Fehlen einer angemessenen Dokumentation, wie soll man herausfinden, was richtig und was falsch ist? Foren-Threads enthalten einige Informationen, von denen viele eher auf Meinungen oder Annahmen als auf Tatsachen beruhen, was unter den meisten Umständen keine Rolle spielt, aber wenn man versucht, ein Programm auf der Grundlage solch lückenhafter und widersprüchlicher Informationen zu schreiben, macht das das Leben sehr schwierig.


Ja, das ist auch meine Sorge.

Ich melde mich nur zurück, um meine Nachforschungen fortzusetzen, ich werde das morgen noch einmal lesen müssen. Ich habe jetzt schon Probleme mit dem Lesen, weil ich zu wenig schlafe und zu viel Zeit vor dem PC verbringe.

 

Wow, ich habe gerade alles gelesen, was hier steht. Ich bin wirklich erschöpft und immer noch nicht sicher, wie ich das Problem angehen soll.

Also, ich werde einfach sagen, jetzt, dass wir scheinen zu verstehen, meine Bedenken, das Angebot steht immer noch, dass ich möchte eine Methode, um genau zu berechnen, den Wert der Preisbewegung von 1 der kleinsten Werte auf die nächste (aka von x.0001 bis x.0002), je nachdem, was auch immer Symbol der EA kann auf, es sollte die Hebelwirkung beteiligt als gut zu berechnen. (z.B. bei einem Kontrakt von 100.000 und einem Hebel von 400:1, könnte ich erwarten, dass EURUSD 10 kostet oder so ähnlich.


Im Gegenzug habe ich 2 manuelle Handelsgurus Geldmanagementformeln, die ich mit Ihrer Funktion anwenden kann, um den Pip-Wert zu erhalten und 2 Sätze von Geldmanagementfunktionen zu erstellen. Ich untersuche auch andere Methoden. Die Idee, die mir vorschwebt, ist, ein Geldverwaltungspaket zu erstellen, das eine Auswahl an verschiedenen Gurus enthält, und der Benutzer kann die für ihn passende auswählen.

Ich wäre also sehr dankbar, wenn jemand eine Funktion entwickeln könnte, mit der ich den Pip-Wert ermitteln kann. Ehrlich gesagt, bin ich überrascht, dass dies nicht bereits eine Standardfunktion im MT4 ist.

Wenn Punkt der Wert von, sagen wir, 1,1234 - 1,1233 ist und Sie den Geldwert dieses Ergebnisses ausgeben können, dann ist es das, wonach ich suche. Für mich ist der Begriff Punkt hier genauso gut wie der Begriff Pip.

Ich würde gerne den Hebelwert ändern können, also sollte dies ein Parameter sein.

Ok, ich bin jetzt seit etwa 53 Stunden auf den Beinen, also muss ich mich etwas ausruhen. Wir haben fleißig an unseren neuen Versionen gefeilt und ich bin völlig ausgelaugt.

 
LEHayes:

Also, ich werde einfach sagen, jetzt, dass wir scheinen zu verstehen, meine Anliegen, das Angebot steht immer noch, dass ich möchte eine Methode, um genau zu berechnen, den Wert der Preisbewegung von 1 der kleinsten Werte auf die nächste (aka von x.0001 bis x.0002) nach, was auch immer Symbol der EA kann auf

Nun, ich fasse teilweise zusammen, was auf 6 Seiten gesagt wurde: Die kleinstmögliche Preisbewegung wird durch MODE_TICKSIZE angegeben, und ihr Geldwert pro ganzem Lot wird durch MODE_TICKVALUE angegeben. Mit drei Vorbehalten:

  • MODE_TICKSIZE und MODE_TICKVALUE können von Broker zu Broker variieren, je nach der Anzahl der verwendeten Dezimalstellen. Zum Beispiel meldet Alpari (5DP) TS als 0,00001 und TV als 1,00 für EURUSD. FXDD meldet TS als 0,0001 und TV entsprechend als 10,00. Versuche, MODE_TICKSIZE zwischen den Brokern zu standardisieren, sind ein separates Thema, z.B. wie in https://www.mql5.com/en/forum/124692 diskutiert.
  • MODE_TICKVALUE variiert im Laufe der Zeit, wenn sich die Kurswährung des Symbols von Ihrer Einzahlungswährung unterscheidet (z. B. hat EURUSD auf einem USD-Konto einen festen TICKVALUE, USDJPY jedoch einen variablen).
  • Cloudbreaker hat Fälle protokolliert, in denen die TICKSIZE variiert (z. B. wird die TICKSIZE bei aufeinanderfolgenden Aufrufen als 0,0002 und 0,0001 gemeldet, mit entsprechender Variation des TICKVALUE). Ich persönlich habe das bei 15 verschiedenen Brokern noch nie erlebt.
 
gordon:
Nehmen wir an, Punkt = 0,00001. Wenn MODE_TICKSIZE in Punkten angegeben ist, kann MarketInfo(Symbol(),MODE_TICKSIZE) zum Beispiel 1 zurückgeben, was als 1*Punkt=1*0,00001=0,00001 interpretiert werden würde. Aber das ist nicht das, was MarketInfo(Symbol(),MODE_TICKSIZE) zurückgibt, es gibt (zum Beispiel) 0.00001 zurück, also einen Wert, der den Preis und nicht die Punkte repräsentiert, zurück. Dies ist offensichtlich ein Fehler in der Dokumentation (wahrscheinlich ein Fehler in der Übersetzung aus dem Russischen).
Ich bin anderer Meinung, Gordon, MODE_TICKSIZE wird in Punkten angegeben - Punkt(e), um genau zu sein. MODE_TICKSIZE wird immer ein X Vielfaches von Point sein. Sei es 1, 2, 5, 35 usw. Point ist IMHO eine Art doppelter Konvertierungsfaktor, der uns auf die letzte signifikante Dezimalstelle des Preisverhältnisses bringt. Wenn ein Broker es für angebracht hält, die 6. Dezimalstelle als Schnäppchen für den Kunden anzubieten, dann wird er Point als 0,000001 und Digits = 6 darstellen.
Die Ziffern stehen in diesem Fall für den Punkt in ganzen Zahlen.
 
LEHayes:

Also, ich werde einfach sagen, jetzt, dass wir scheinen zu verstehen, meine Bedenken, das Angebot steht immer noch, dass ich möchte eine Methode, um genau zu berechnen, den Wert der Preisbewegung von 1 der kleinsten Werte auf die nächste (aka von x.0001 bis x.0002) nach was auch immer Symbol der EA kann auf, es sollte die Hebelwirkung beteiligt als auch berechnen. (z.B. bei einem Kontrakt von 100.000 und einem Hebel von 400:1, könnte ich erwarten, dass EURUSD 10 kostet oder so.

Schauen Sie sich die Include-Dateien an, die in der rar-Datei enthalten sind, die ich auf Seite 5 angehängt habe... es tut beides, wenn ich Ihre Frage nicht falsch verstehe.

edit: speziell die folgenden Codeschnipsel.

Für tickvalue mit der Include-Datei mit dem Titel "Analyze Currency Symbol 2010.06.07.mqh" würden Sie:

1. die Funktion int SymbolType() aufrufen

int CalculatedSymbolType=SymbolType();

2. die Funktion CounterPairForCross() aufrufen

string CalculatedCounterPairForCross=CounterPairForCross();


3. dann würden Sie den Tickwert zum aktuellen Marktpreis für das Symbol berechnen:

   switch(CalculatedSymbolType) // Determine the tickvalue for the financial instrument based on the instrument's SymbolType (major, cross, etc)
      {
      case 1   :  Print("Calculated TICKVALUE = ",DoubleToStr(MarketInfo(Symbol(),MODE_POINT)*MarketInfo(Symbol(),MODE_LOTSIZE)/MarketInfo(Symbol(),MODE_BID),6)," (Tick value in the deposit currency - base)"); break;
      case 2   :  Print("Calculated TICKVALUE = ",DoubleToStr(MarketInfo(Symbol(),MODE_POINT)*MarketInfo(Symbol(),MODE_LOTSIZE),6)," (Tick value in the deposit currency - counter)"); break;
      case 3   :  Print("Calculated TICKVALUE = ",DoubleToStr(MarketInfo(Symbol(),MODE_POINT)*MarketInfo(Symbol(),MODE_LOTSIZE)/MarketInfo(CalculatedCounterPairForCross,MODE_BID),6)," (Tick value in the deposit currency - ",AccountCurrency()," is Base to Counter)"); break;
      case 4   :  Print("Calculated TICKVALUE = ",DoubleToStr(MarketInfo(Symbol(),MODE_POINT)*MarketInfo(Symbol(),MODE_LOTSIZE)/MarketInfo(CalculatedCounterPairForCross,MODE_BID),6)," (Tick value in the deposit currency - ",AccountCurrency()," is Base to Counter)"); break;
      case 5   :  Print("Calculated TICKVALUE = ",DoubleToStr(MarketInfo(CalculatedCounterPairForCross,MODE_BID)*MarketInfo(Symbol(),MODE_POINT)*MarketInfo(Symbol(),MODE_LOTSIZE),6)," (Tick value in the deposit currency - ",AccountCurrency()," is Counter to Counter)"); break;
      default  :  Print("Error encountered in the SWITCH routine for calculating tickvalue of financial instrument ",Symbol()); // The expression did not generate a case value
      }


Bei der Verwendung der Include-Datei mit dem Titel "Analyze Currency Symbol 2010.06.07.mqh" würden Sie folgende Schritte durchführen

1. die Funktion int SymbolType() aufrufen
int CalculatedSymbolType=SymbolType();

2. Rufen Sie die Funktion BasePairForCross() auf.

string CalculatedBasePairForCross=BasePairForCross();


3. dann würden Sie den symbolspezifischen Hebel zum aktuellen Marktpreis für das Symbol berechnen, indem Sie SymbolLeverage() aufrufen:

int   CalculatedLeverage=SymbolLeverage();   // Leverage for USDJPY is set to 100:1
Print("Leverage for ",Symbol()," is set at ",CalculatedLeverage,":1");
 
cameofx:
Ich bin anderer Meinung, Gordon, MODE_TICKSIZE ist in Punkten - Point(s), um genau zu sein. MODE_TICKSIZE wird immer ein X Vielfaches von Point sein. Sei es 1, 2, 5, 35 usw. [...]
Dies scheint eine Frage der Semantik zu sein... Die übliche Konvention besagt, dass, wenn wir sagen, dass ein 'Wert in x' ist, wir meinen, dass x die verwendete 'Einheit' ist. In diesem Fall ist Point nicht die verwendete Einheit, also ist MODE_TICKSIZE nicht in Points. Ich stimme zu, dass es sich um ein Vielfaches von Point handelt, aber das ist nur so, weil Point die kleinstmögliche Preisänderung ist, also muss es per Definition ein Vielfaches von Point sein.