Wie finde ich Preise, die am nächsten beieinander liegen?
Ergebnis 1 bis 7 von 7

Thema: Wie finde ich Preise, die am nächsten beieinander liegen?

  1. #1
    Ich versuche, einen Weg zu finden, dies zu tun. Zuerst habe ich versucht, etwas mit MathAbs zu machen und Werte voneinander zu subtrahieren, aber es schien, als hätte ich es zu sehr vereinfacht, da ich es hier mit etwa 20 Preisen zu tun habe. Ich habe sie bereits deklariert und alle, also ist es nur eine Frage der Suche nach den richtigen.

    Gibt es eine schnelle und einfache Möglichkeit, eine solche Anzahl von Preisen zu nehmen und die Preisdifferenz jeder möglichen Kombination zu erhalten (oder einen Weg zu finden, nur die Kombinationen zu erhalten, die wichtig sind)? Oder filtern Sie sie vielleicht nach einem willkürlichen Höchstwert (dass der Preis ignoriert wird, wenn die Differenz diesen überschreitet)?

  2. #2
    Ich habe Arrays seit ungefähr 1 Jahr nicht mehr verwendet und vergessen, wie man sie benutzt. Im MetaEditor gibt es eine Hilfe-Schaltfläche und von dort aus können Sie herausfinden, wie Sie Arrays usw. deklarieren. Oder hier:
    http://docs.mql4.com/Tut mir leid, ich habe keine Zeit, das Lesen für Sie zu übernehmen

  3. #3
    Das von mir gepostete Beispiel funktioniert nicht? Vielleicht um es klarer zu machen, die Preise sind mögliche Ziele für zukünftige Preise, die auf verschiedenen Indikatoren basieren. Ich möchte herausfinden, wann mehrere dieser möglichen Ziele nahe beieinander liegen, und den Einstieg/Ausstieg auf diesen Preisen basieren. Wie ich eng zusammen definiere, ist ein ganz anderes Problem, das wahrscheinlich mit ATR oder etwas Ähnlichem gelöst werden kann, oder einfach mit einem externen Wert, den ich anpassen kann, wenn sich die Volatilität ändert. Mir ist klar, dass es nicht dasselbe ist, was im Threadtitel gefragt wird, aber das Problem ist, dass ich mir noch nicht 100% sicher bin, wie ich vorgehen soll. Auf halbem Weg wurde mir klar, dass es besser wäre, ein Maximum zu definieren, da es möglich sein könnte, dass mehr als 2 Preise nahe beieinander liegen. Ich interessiere mich dafür, wie man das Setup grundsätzlich hat und dass ich von dort aus einen anderen Weg gehen kann. Wenn der von mir gepostete Code so funktioniert, wie ich denke, dass er funktioniert, sollte dies für das, was ich tun möchte, ausreichen. Ich habe keine Erfahrung mit anderen Arrays als die in Innenräumen verwendeten Serien, daher bin ich mir nicht ganz sicher, wie ich mit dem Array arbeiten soll. Ich denke, Sie gehen einfach wie Array [Dimension1] [Dimension2] und Sie haben den Wert, der an diesen Koordinaten liegt. Ich habe einfach die wiederholte Angabe aller Preise im Array weggelassen (Preis0, Preis1 sollte bis Preis19 fortgesetzt werden). Zum Beispiel ist double Array[19][1]; richtig oder muss ich [20] [2] verwenden, weil Null bei der Deklaration nicht gezählt wird? (Es sollte ein Array mit 20 x 2 erstellen, und wenn ich richtig annehme, sollte der Index bei 0 beginnen und bei 19 enden, und die Indizes der zweiten Dimension sollten 0 und 1 sein.)

  4. #4

    Zitat Zitat von ;
    Haben Sie eine Ahnung, wie ich anpassen müsste, wenn 4-5 Werte relativ nahe beieinander liegen (z. B. Differenz, aber es könnte jeder Betrag unter einem bestimmten Maximum sein: 0,00005, 0,00004, 0,00003, 0,00002). Ich brauche nicht unbedingt die 2 Preise, die am nächsten beieinander liegen, sondern eine Anzahl von Preisen, die zum maximalen Unterschied passen?
    Pipsgeek, das ist anders als du gefragt hast. Sie möchten also einen maximalen Abstand definieren und alle Preispaare finden, die so nahe beieinander liegen? Es gibt mehr als einen Weg, dies zu tun. Eine wäre: Erstellen Sie ein eindimensionales Array und füllen Sie es mit allen Preisen, die Sie haben. Sortieren ( aufsteigend oder absteigend, egal ). Durchlaufen Sie das Array einmal und prüfen Sie, ob der Abstand zwischen diesen beiden Preisen liegt. lt;= maximum_difference Wenn ja, machen Sie etwas mit diesem Wert. Speichern Sie es entweder in einem anderen Array (oder führen Sie die gesamte Überprüfung in einem 2-dimensionalen Array durch, in dem Index 0 den Preis enthält und Index 1 den Abstand zum vorherigen Preis enthält). Aus dieser Überprüfung haben Sie alle Preisniveaus extrahiert, die näher beieinander liegen als Ihre definierte maximum_difference (oder gleich max diff ). Ich kann nicht mehr sagen, weil ich keine Ahnung habe, warum Sie das tun und was Sie mit den extrahierten Preisniveaus tun werden. Aber das ist notwendig, um zu wissen, wie die Ebenen gespeichert werden und welche zusätzlichen Informationen benötigt werden, um mit diesen zu arbeiten.

  5. #5
    Eine Möglichkeit, dies zu tun: Erstellen Sie ein Array und füllen Sie es mit allen Preisen, die Sie überprüfen möchten. Sortieren Sie das Array, auf diese Weise erhalten Sie sie mit einem Befehl in einer schönen aufsteigenden oder absteigenden Reihenfolge. Deklarieren Sie eine doppelte LowestDistance = 9999999,99; Beginnen Sie an einem Ende des Arrays und vergleichen Sie die Preise wie folgt: if(price1-price2 lt;= LowestDistance) {LowestDistance=price1-price2;
    price_a = price1; preis_b = preis2; } if(price2 - price3 lt;= LowestDistance) {LowestDistance = price2-price3;
    price_a = price2; price_b = price3 } if(price3 - price4 lt;= LowestDistance) {LowestDistance = price3-price4;
    price_a = price3; price_b = price4 } ..... .... Dies kann in einer Schleife erfolgen. Nach dem Ende der Schleife haben Sie 3 Felder mit den richtigen Werten gefüllt: LowestDistance price_a price_b Ich denke, das ist, was Sie brauchen.

  6. #6
    Vielen Dank. Also mache ich ein Array und dann eine Schleife, die den Array-Index durchläuft und die Werte in den Indizes vergleicht? Haben Sie eine Ahnung, wie ich anpassen müsste, wenn 4-5 Werte relativ nahe beieinander liegen (z. B. Differenz, aber es könnte jeder Betrag unter einem bestimmten Maximum sein: 0,00005, 0,00004, 0,00003, 0,00002). Ich brauche nicht unbedingt die 2 Preise, die am nächsten beieinander liegen, sondern eine Anzahl von Preisen, die zum maximalen Unterschied passen? Wäre das eine gute Lösung für dieses Problem? Eingefügter Code double Array#91;19#93;#91;1#93;; ArrayInitialize(Array#91;19#93;#91;1#93;, 20); Array#91;0#93;#91;0#93; = Preis0; Array#91;1#93;#91;0#93; = Preis1;/etc...etc...etc... ArraySort(Array#91;19#93;#91;1#93;,WHOLE_ARRAY,0,M ODE_ASCEND); maxdiff = 0,00005; Stopp = 19; for (i=0;ilt;Stop;i ) { if (MathAbs(Array#91;i#93;#91;0#93; - Array#91;i 1#93;#91;0#93; ) lt;= maxdiff) {Array#91;i#93;#91;1#93; = i 1; Array#91;i 1#93;#91;1#93; = i;} Wenn ich Arrays so richtig verwende, sollten wir ein zweidimensionales Array erhalten, und die erste Dimension enthält 20 Preise und die zweite entweder 20 oder 0 bis 19 Integer. Wenn die Ganzzahl 20 ist, ist kein Preis nahe genug, wenn der Preis 0-19 ist, dann entspricht dies dem Index des Preises, der nahe genug an diesem Preis liegt. Obwohl der Index durch den nächsten Preis überschrieben werden kann, enthält der andere Preis immer noch den Index, und ich könnte möglicherweise eine Überprüfung hinzufügen, die die Differenz von Preis 1 und Preis 3 vergleicht (Preis 2 liegt innerhalb von maxdiff von Preis 1 und Preis 3). bevor Sie die zweite Dimension des Arrays festlegen (if (Array == 20), so ähnlich).

  7. #7
    lol, danke, dass du mich auf die Idee gebracht hast, Arrays zu verwenden. Ich dachte, Arrays wären Peanuts für Sie und Sie könnten sofort sehen, ob es richtig oder falsch ist. Aus den ziemlich unklaren Beispielen der MQL4-Hilfe geht hervor, dass es der richtige Weg ist, die Anzahl der Werte zu verwenden, nicht die Indexnummern (also Array[20][2] für ein 20x2-Array).

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  
Die tradingintuitive Webseite verwendet Cookies
Wir nutzen Cookies, um Ihnen das Webseitenerlebnis bestmöglich anbieten zu können. Durch weitere Nutzung der Webseite erlauben Sie die Nutzung von Cookies. Für weitere Details und wie Sie ggf. diese Einstellungen verändern können, lesen Sie bitte unsere Datenschutzbestimmung. Lesen Sie mehr