[ARCHIV]Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht daran vorbei. Ohne dich kann ich nirgendwo hingehen - 5. - Seite 236

 
solnce600:
Ich bin mir nicht ganz sicher, was die binäre Suche bedeutet. Handelt es sich um eine Suche in einem zweidimensionalen Feld? Aber ich habe eine eindimensionale.

Sortieren Sie das Array, falls Sie es noch nicht getan haben, und drucken Sie zur Kontrolle der korrekten Vorbereitung in init() den Inhalt aus, nicht alle, aber die ersten 20-50 Elemente.

P.S. Erkennst du die Identität von binär und zweidimensional? Das Terminal sieht Ihre Ziffern in "binärem" Code und für die korrekte Arbeit der ArrayBsearch()-Funktion ist eine Vorsortierung des Arrays erforderlich.

 
TarasBY:

Sie sehen dort nichts???

Ich sehe, dass ArrayBsearch() 0 (als Element-Index) ÜBERALL zurückgibt. In der 0. Zelle Ihres Arrays steht die Zahl 1,0408. Kehren wir zum Code zurück:

Ersetzen Sie nun die erhaltenen Variablenwerte in dieser Bedingung (auf dem Karit liegt Bid im Bereich 0,8-0,9, nehmen wir das Maximum dieses Bereichs - 0,9): if (0,9000 - 1,0408 <= 0) OrderSend(). Die Bedingung ist erfüllt RICHTIG!!! Suchen Sie nach Fehlern bei der Vervollständigung Ihres Arrays. Vermutlich haben Sie diese Klausel in der Funktion ArrayBsearch() nicht beachtet:

Hinweis: Die binäre Suche verarbeitet nur sortierte Arrays. Die Funktion ArraySort() wird verwendet, um ein numerisches Array zu sortieren.

P.S. Der Ausdruck sollte nicht als Bild erfolgen, sondern durch gleichzeitige Auswahl mehrerer Zeilen (mit SHIFT - falls Sie nicht wissen, wie das geht) dieses Ausdrucks (10-20 Zeilen reichen aus) im Terminal-Fenster, dann kopieren Sie die ausgewählten Zeilen und fügen sie als Code mit der SRC-Taste in Ihren Beitrag ein.

Ich habe verstanden, dass das Problem in der Funktion ArrayBsearch() liegt

Aber ich verstehe immer noch nicht, warum diese Funktion nicht sofort das einzelne N-Element des Arrays mit dem Wert zurückgeben sollte, der wertmäßig am nächsten an value

Warum sonst sollten massiv[S-1] und massiv[S+1]an den Berechnungen teilnehmen ?

 
solnce600:

Ich verstehe, dass das Problem in der Funktion ArrayBsearch() liegt

Aber ich verstehe immer noch nicht, warum diese Funktion nicht sofort das einzelne N-Element des Arrays mit dem Wert zurückgeben sollte, der wertmäßig am nächsten an value

Warum sonst sind massiv[S-1] und massiv[S+1]an den Berechnungen beteiligt ?

Das Problem liegt nicht in der Funktion ArrayBsearch(), sondern in der Vorbereitung des Arrays, das an diese Funktion übergeben wird!!!

Und dann ist es nur ein "Hirngespinst"... Ihre Phantasie...

Die Funktion ArrayBsearch() gibt den EINEN Wert zurück, und um die Ursache für die Schieflage des Codes zu finden, habe ich die Werte ausgedruckt: (in dieser Reihenfolge) den Wert der Array-Zelle mit dem Index S (er wurde von der Funktion ArrayBsearch() zurückgegeben), den Wert, der im angegebenen Array (massiv[]) am nächsten links liegt, mit dem Index S-1, den Wert, der am nächsten rechts liegt, mit dem Index S+1, und den Preis zum Zeitpunkt der Ordereröffnung.

Du bist in die 1. Klasse gekommen und versuchst, in eine Abschlussklasse hineinzuschnuppern... Gehen Sie zurück in Ihre Klasse!!! - Analogie. :))

 
TarasBY:

Das Problem liegt nicht in der Funktion ArrayBsearch(), sondern in der Vorbereitung des Arrays, das an diese Funktion übergeben wird!!!

Und dann war es nur ein "Hirngespinst"... Ihre Phantasie...

Die Funktion ArrayBsearch() gibt den EINEN Wert zurück, und um die Ursache für die Schieflage des Codes zu finden, habe ich die Werte ausgedruckt: (in dieser Reihenfolge) den Wert der Array-Zelle mit dem Index S (er wurde von der Funktion ArrayBsearch() zurückgegeben), den Wert, der im angegebenen Array (massiv[]) am nächsten links liegt, mit dem Index S-1, den Wert, der am nächsten rechts liegt, mit dem Index S+1, und den Preis zum Zeitpunkt der Ordereröffnung.

Du bist in die 1. Klasse gekommen und versuchst, in eine Abschlussklasse hineinzuschnuppern... Gehen Sie zurück in Ihre Klasse!!! - Analogie. :))

Vielen Dank für Ihre Hilfe.... Ich habe es immer ein bisschen eilig und bin mir selbst einen Schritt voraus.... Ich denke, es gibt insgesamt mehr Vor- als Nachteile.

Das Einzige, was ich noch nicht verstehe....

Hier muss ich ein Array mit 3000 Werten initialisieren, und ich habe es mit EXCEL gemacht.

Es schien mir ein langer, mehrstufiger und mühsamer Prozess zu sein.

Gibt es bessere Algorithmen für diesen Prozess?

Danke.

 
solnce600:

Ich habe es mit EXCEL gemacht.


Über DDE oder über Lazybones?

Schreiben Sie ein Makro und automatisieren Sie es, wenn Sie eine Historie haben. Sie öffnen es in Word mit aktivierter Makrofunktion, konvertieren es dort, speichern es dann mit dem Makro in csv und verwenden DDE. Ich weiß nichts über das Format der Metatrader- und Metastock-Dateien, ich habe keine Zeit, es selbst zu verstehen. Und wenn double array[3000] mit Nullen, dann verwenden Sie für, aber sie sind mit Nullen initialisiert, wenn ich mich nicht irre.

 
solnce600:
Vielen Dank für Ihre Hilfe.... Ich habe es immer ein bisschen eilig und bin mir selbst einen Schritt voraus.... Ich denke, es gibt insgesamt mehr Vor- als Nachteile.

Das einzige, was ich nicht verstehe, ist....

Ich muss ein Array mit 3000 Werten initialisieren und habe das mit EXCEL gemacht.

Ich habe festgestellt, dass dies ein langer, mehrstufiger und mühsamer Prozess ist.

Gibt es bessere Algorithmen für diesen Prozess?

Ich danke Ihnen.


Bitte posten Sie die Datei, in die die Initialisierungswerte geschrieben werden...
 
gyfto:


Über DDE oder über den Loafer?

Schreiben Sie ein Makro und automatisieren Sie es, wenn Sie eine Historie haben. Öffnen Sie es in Word mit aktivierter Makrofunktion, konvertieren Sie es dort und in Excel, speichern Sie es dort als csv-Makro und verwenden Sie DDE. Das Format der Metatrader- und Metastock-Dateien liegt nicht in meiner Hand, ich habe keine Zeit, es herauszufinden. Wenn durch Nullen, dann durch für, aber Nullen werden initialisiert, wenn ich mich nicht irre.

Danke, ich werde es studieren. Ich bin gerade zum Service gegangen und habe den Verlauf eines Paares in einer EXCEL-Datei gespeichert.

Ich teile eine einzelne Spalte mit allen Daten nach Spalten auf, setze ein Komma nach jedem Wert in der Spalte mit den Eröffnungspreisen - transponiere es in eine Zeile - sortiert - und füge es in den Editor ein, d.h.

enthaltene mqh-Datei.

Wenn Sie Hinweise auf DDE oder Lazybear haben, lassen Sie es mich bitte wissen.

Ich danke Ihnen.

 
solnce600:

Ich bin einfach in den Service gegangen und habe den Verlauf eines Paares in einer EXCEL-Datei gespeichert.

Ich teile eine einzelne Spalte mit allen Daten in Spalten auf. In der Spalte mit den Eröffnungspreisen setze ich nach jedem Wert ein Komma - transponiere es in eine Zeile - sortiere es - und füge es in den Editor ein, d.h. in die Spalte

enthaltene mqh-Datei.

Wenn Sie Hinweise auf DDE oder Lazybear haben, lassen Sie es mich bitte wissen.

Ich danke Ihnen.



Sie brauchen weder DDE noch Lazybones. Sie brauchen nur eine Funktion (10 Zeilen Code), die Sie in das Terminal-Verzeichnis werfen, und das Array wird initialisiert... Geben Sie mir die Akte.
 
Dima.A.:

Sie brauchen weder DDE noch Lazybones. Sie brauchen nur eine Funktion (10 Zeilen Code), die Sie in das Terminal-Verzeichnis werfen und das Array wird initialisiert... Geben Sie mir die Akte.

Ich muss 2 Arrays initialisieren

1.doppelt

2.datetime

Im ersten Array wurden einige Werte nach Zeile 1120 aus irgendeinem Grund in ein anderes Format umgewandelt, nachdem ich das Trennzeichen von Komma in Punkt geändert hatte (ich hatte dort ein Komma).

Wenn es nicht schwierig ist, senden Sie mir bitte auch diese 10 Codezeilen ...... Ich werde sie studieren.... Ich möchte lernen, es in Zukunft selbst zu tun.

Herzlichen Dank für Ihre Hilfe.

 
solnce600:
Seltsam, die Datei ist 140 Kilo schwer, ich habe sie archiviert und an post..... angehängt und sie ist nicht da.


Verkleinern Sie die Datei, ich brauche nur ein paar Zeilen darin...
Grund der Beschwerde: