5-Stellen-Erkennung - Seite 2

 
7bit:
Ich versuche, narrensicheren Code zu schreiben, der nicht kaputt geht.

Wenn narrensicher ist, was u r suchen, dann würde ich nicht auf symbols.raw Dateistruktur wetten. Es ist eine "interne" und undokumentierte Dateistruktur. Es gibt keine Garantie, dass sie sich in zukünftigen Versionen nicht ändern wird.

 

Hallo 7bit,

Ich denke, Sie haben Recht, wenn Sie versuchen, einen kugelsicheren Code zu erstellen......., aber es wird immer Grenzen geben.

Man muss sich nur den Demo-Feed für The Collective FX ansehen, wo sie einen kombinierten, unabhängigen Feed verschiedener Liquiditätsanbieter testen (im Gegensatz zu einem einzigen, abgestimmten Feed aus mehreren Quellen), jeder mit seinem eigenen Währungspaar-Suffix (haben wir endlich eine Verwendung für das Suffix gefunden?), um den Umfang des Problems zu erkennen. Das bedeutet, dass Sie innerhalb einer Plattform zwischen EURUSD_fx, EURUSDm oder EURUSD_dbfx wählen können. Dies allein wird ein gewaltiges Loch in Ihre Strategie reißen, da einige davon 4-stellige Preise und andere 5-stellige Preise sind.

Das "if (Digits == 3 || Digits == 5)" ist so allumfassend, wie Sie es nur finden können, da es auf der einfachen Prämisse beruht, dass es nur 2 Arten von Brokern gibt, d.h. solche, die ganze Pip-Feeds haben, und solche, die 1/10tel Pips-Feeds haben. Dieser Fall deckt die 2/3/4/5 Währungspaare und Makler.

Zu meiner eigenen Information, haben Sie einen Fall gesehen, der eine Ausnahme darstellt? Im Falle von Gold war die Notierung immer zweistellig, und die neuen Broker mit 1/10 Pips notieren dreistellig, so dass auch dieser Fall gut abgedeckt ist.

Ich würde vorschlagen, dass Sie alle Ausnahmen, die Sie finden, einfach als solche behandeln und dieses spezielle Problem vielleicht hart kodieren, anstatt zu versuchen, eine Notlösung zu finden.

 
kennyhubbard:


Im Falle von Gold war die Notierung schon immer zweistellig, und die neuen 1/10tel-Pip-Broker notieren dreistellig, so dass auch dieser Fall gut abgedeckt ist.

Ich habe gesehen, dass GOLD bei einem 4-stelligen Broker mit 1 Ziffer notiert wurde. Ich kenne den Namen des Brokers nicht, denn das war, als wir meinen IRC-Signalgenerator in einem IRC-Kanal getestet haben, aber einer meiner Tester hat mit GOLD gehandelt und die Kurse kamen mit einer Ziffer. Ich fragte ihn, und er sagte, sein Broker sei ein 4-stelliger.

Das war genau der Moment, in dem ich beschloss, dass der "3 oder 5"-Ansatz grundlegend fehlerhaft sein muss und begann, nach etwas Besserem zu suchen.
 
7bit:
Ich habe gesehen, wie GOLD bei einem 4-stelligen Broker mit 1 Ziffer notiert wurde. [...] Das war genau der Moment, in dem ich beschloss, dass der "3 oder 5"-Ansatz grundlegend fehlerhaft sein muss, und begann, nach etwas Besserem zu suchen.

Bei Alpari UK, im Allgemeinen ein 3/5-stelliger Broker, wird Gold zu 2DP mit einer Tickgröße von 0,05 notiert. Ich habe irgendwo in diesem Forum einen Hinweis auf jemanden gesehen, der mit US-Treasuries handelte, die auf 3DP notiert waren. In einem solchen Fall hätte die Tick-Größe jedoch nicht 0,001 betragen.

Eine Möglichkeit besteht darin, zu prüfen, ob die Genauigkeit eines Symbols 3/5 Stellen beträgt und ob die Tickgröße 0,001/0,00001 beträgt. Je nachdem, was Sie genau erreichen wollen, könnten Sie alternativ versuchen, Devisenpaare zu erkennen, indem Sie prüfen, ob die ersten sechs Zeichen aus zwei bekannten Währungssymbolen bestehen (d. h. indem Sie eine fest kodierte Liste der anerkannten Währungen verwenden). Sie könnten auch MODE_PROFITCALCMODE verwenden, um Forex-Symbole zu erkennen, im Gegensatz zu Futures/Aktien/etc, aber ich vermute, dass dies nicht bei allen Brokern zuverlässig ist.

 
Irgendwo zwischen LotSize, TickSize, TickValue, Point, Margin, etc... gibt es vielleicht ein Verhältnis, um dies zu lösen...
Ich bin im Moment zu ADS, um das herauszufinden :)), aber wenn jemand interessiert ist, hier sind einige Links, auf die ich mich beziehe

- von Ais : LotSize,
- von fbj : Leverage, Marge etc.
 
Die Theorie für die Lösung steht unten auf Seite 1, es sei denn, ihr haltet sie alle für so dumm, dass ihr euch nicht die Mühe gemacht habt, sie zu kommentieren.
 
Ruptor:
Die Theorie für die Lösung finden Sie unten auf Seite 1, es sei denn, Sie halten sie alle für so dumm, dass Sie sich nicht die Mühe gemacht haben, sie zu kommentieren.

Ich persönlich habe Ihren früheren Beitrag nicht verstanden. Ich denke, die ursprüngliche Frage von 7bit zielt darauf ab, wie Szenarien wie das folgende zu behandeln sind: "Es gibt einen externen Parameter, bei dem der Benutzer einen Wert in Pips eingibt. In manchen Fällen unterscheidet sich die Pip-Größe, die der Benutzer im Sinn hat, von der MODE_TICKSIZE, die der Broker angibt - z. B. hat der Broker eine Tick-Größe von 0,00001, aber der Benutzer ruft einen Pip 0,0001 auf. Gibt es eine zuverlässige Möglichkeit, die Gedanken des Benutzers zu lesen und herauszufinden, wann und um wie viel der von ihm eingegebene Pip-Wert angepasst werden muss?" Eine rein mathematische Antwort, wie Sie sie vorzuschlagen scheinen, gibt es darauf nicht. Es geht um eine halb willkürliche Konvention, dass ein Pip z. B. bei EURUSD im Allgemeinen als 0,0001 angesehen wird, obwohl die meisten Broker das Symbol mit 5DP angeben.

EDIT: ...weshalb Gold usw. so kompliziert sind, weil es weniger eine vereinbarte Konvention gibt. Bei Alpari UK bewegt sich Gold in 0,05er-Schritten. Wenn Sie eine Umfrage unter Händlern durchführen und fragen würden, wie viele Pips das sind, bekämen Sie wohl eine angemessene Anzahl von Stimmen für jede der folgenden vier Antworten: 5, 1, 0,5 und 0,05.

 
Ruptor:
Ist es nicht eine einfache (vielleicht nicht ganz so einfache mathematische) Angelegenheit, herauszufinden, was ein Punkt im Verhältnis zu einem bestimmten Preis ist, und dann zu entscheiden, in welcher Ziffer er im Vergleich zu den Ziffern des Preises liegt?
Ein einfacher Weg, dies zu erreichen, könnte darin bestehen, dass man einen Preis nimmt, einen Punkt hinzufügt und ihn mit dem Multiplikator + demselben Preis vergleicht, und wenn das Ergebnis nicht dasselbe ist, den Multiplikator in einer Schleife erhöht, bis sie übereinstimmen.

Ruptor,

Du hast es so subtil formuliert, dass ich es beim ersten Lesen wohl nicht verstanden habe. Und ich verstehe es immer noch nicht :)). Könnten Sie das bitte näher erläutern?

Einige Broker wie GCI listen auch Future-Symbole wie S&P 500, IBM, Intel und sogar Disney auf... wie würde das dann zutreffen?

 
Hallo cameofx
Ein Bild sagt mehr als tausend Worte oder Code in diesem Fall. pipx ist das, was Sie haben, um Punkt mit zu multiplizieren, um 1/10000 th für einen Punkt zu erhalten, der der übliche Wert zum Handel ist.
   double tmpx=MathCeil((Ask/10000)/Point);
   double pipx=1;
   while (tmpx>=10.0){
      pipx*=10;
      tmpx/=10;
   }
Es ist immer noch nicht narrensicher, wenn die Währung bewegt sich nach oben oder unten 10-mal seinen Wert gegen seine Paar, aber es ist unempfindlich gegen Broker Ziffern in Forex Ich denke.
 
Ruptor:
[...] Es ist immer noch nicht idiotensicher, wenn sich die Währung gegenüber ihrem Paar um das 10-fache ihres Wertes nach oben oder unten bewegt, aber es ist unempfindlich gegen Maklerziffern im Forex, denke ich.

Ich bin ehrlich gesagt verblüfft darüber. Wenn zum Beispiel der USDJPY-Kurs unter 90 fällt, würde dieser Code bei einem 3/5DP-Broker unterschiedliche pipx-Werte melden.

Im Moment, mit USDJPY bei etwa 92,5, und mit einem 3/5DP-Broker, wo Punkt = 0,001, dann tmpx/pipx erhalten wie folgt ausgewertet:

  • 92.5 / 10000 = 0.00925
  • 0.00925 / 0.001 = 9.25
  • MathCeil() rundet tmpx auf 10
  • pipx wird auf 10 gesetzt

Fällt der USDJPY-Kurs unter 90 (z. B. 89,5), dann würde die Auswertung wie folgt aussehen:

  • 89.5 / 10000 = 0.00895
  • 0.00895 / 0.001 = 8.95
  • MathCeil() rundet tmpx auf 9
  • pipx bleibt auf 1 gesetzt, nicht auf 10

Mit anderen Worten: Aus Gründen, die ich nicht verstehe, reagiert die Pip-Definition dieses Codes empfindlich auf Preisänderungen, und der Multiplikator wechselt je nach Preis von einer Größenordnung zur anderen, nicht (nur) je nach Broker-Einstellungen. In der vergangenen Woche hätte er zu verschiedenen Zeiten unterschiedliche Ergebnisse geliefert. Bei einem 2/4DP-Broker würde pipx durchgängig bei 1 bleiben und nicht zwischen 1 und 10 schwanken.