Fehler, Irrtümer, Fragen - Seite 2636

 
Koldun Zloy:

Ich bin kein Entwickler, aber ich werde mich dazu äußern.

Bei einem statischen Array muss der Compiler zur Kompilierungszeit eine bestimmte Anzahl von Bytes im Speicher zuweisen.

Wie viel Speicher sollte der Compiler zuweisen, wenn row und col zur Kompilierungszeit unbekannt sind?

Die Anfangswerte werden nur verwendet, wenn beim Aufruf keine Parameter angegeben werden. Die tatsächlichen Parameter sind erst zur Laufzeit bekannt.

Also, keine Spielereien, lernen Sie die Sprache.

Das ist ein bisschen ironisch gemeint, aber es ist eher ein Appell an den Entwickler.
Also Zloy, nehmen Sie es nicht persönlich.

Es stellt sich heraus, dass dynamische Matrizen nur über Objekte oder Strukturen gehandhabt werden können. Eine weitere Krücke wird im Allgemeinen geschaffen.
In mql gibt es keine Zeiger auf Variablen, daher müssen wir den Objektansatz verwenden, bei dem Zeiger verfügbar sind.
Um dynamische Matrizen zu verwenden, muss ein Benutzer also OOP und die Arbeit mit Zeigern kennen, und zwar in MQL-Ausführung.
Wie viele von ihnen haben dieses Wissen? Sie kennen die Antwort selbst. Ich habe keine Schwierigkeiten, den Objektansatz zu verstehen, aber für diejenigen, die OOP nicht kennen
Sie schaffen eine künstliche Schwelle für die Verwendung der Sprache, insbesondere beim Umgang mit dynamischen Matrizen.
Meiner Meinung nach sollte ein Entwickler im Gegenteil daran interessiert sein, die Sprache einfacher zu machen, anstatt sie zu verkomplizieren.
Mit anderen Worten, sie sollten solche Funktionen entwickeln, die der Benutzer für eine komfortable Arbeit mit der Sprache benötigt.
Dies gilt umso mehr für Matrizen, die fast die Grundlage der numerischen Methoden bilden.

Aus diesem Grund möchte ich Sie bitten, ähnliche Funktionen wie ArrayResize zu erstellen, aber für Matrizen ArrayResizeMx(A, n, m),
und vielleicht auch für multidimensionale. Mit anderen Worten, geben Sie die Möglichkeit, mit Matrizen nicht wie mit Objekten, sondern wie mit gewöhnlichen Arrays im C-Stil zu arbeiten.
Insbesondere für die visuelle Darstellung von Matrizen druckt die Funktion ArrayPrint(A, 0) Matrizen aus Arrays, nicht aus Objekten.

 
Roman:

Im Jahr 2012 wurde das Problem mit dynamischen mehrdimensionalen Arrays erfolgreich gelöst...
Hier ist ein verwandtes Thema:https://www.mql5.com/ru/forum/6729

Der Code kann nun verbessert werden, indem die Unterstützung für Vorlagen hinzugefügt wird.

 
Sergey Dzyublik:

Im Jahr 2012 wurde das Problem mit dynamischen mehrdimensionalen Arrays erfolgreich gelöst...
Hier ist ein verwandtes Thema:https://www.mql5.com/ru/forum/6729

Der Code kann nun verbessert werden, indem die Unterstützung für Vorlagen hinzugefügt wird.

Lesen Sie den ganzen Thread, zum Glück ist er kurz.
So der Themenstarter, der sein Kunststück nicht verraten hat!
Eine Art Spott, ein Köder und das Thema ist verschwunden.
Und wieder einmal ist es ein Sprung in die PLO, den niemand betreten darf.
Juri zitierte seine eigene Lösung, von der niemand weiß, wie wahr sie ist.
Diese müssen wir ändern und ändern. Niemand, denn sie haben es noch nicht abgeschlossen.

Aus diesem Grund brauchen wir Funktionen, die mit dynamischen Matrizen arbeiten, ohne dass der Entwickler etwas dafür tun muss.
Der Entwickler kennt sich mit dem Thema besser aus und die Speicherzuweisung ohne Wrapper sieht viel besser und schneller aus.
Zumindest eine FunktionArrayResizeMx(A, n, m, k) würde die Möglichkeit eröffnen, nicht mit Objekten, sondern mit Arrays im C-Stil zu arbeiten.

 
Roman:


Und dies ist wiederum ein Eintauchen in OOP, niemand darf eintreten.

Roman:


Um dynamische Matrizen verwenden zu können, muss der Benutzer also OOP beherrschen und mit Zeigern arbeiten, auch bei der MQL-Ausführung.
Wie viele von ihnen haben dieses Wissen? Sie kennen die Antwort selbst. Ich habe keine Schwierigkeiten, den Objektansatz zu verstehen, aber für diejenigen, die OOP nicht kennen
Sie schaffen eine künstliche Schwelle für die Verwendung der Sprache, insbesondere beim Umgang mit dynamischen Matrizen.
Meines Erachtens sollte der Entwickler im Gegenteil daran interessiert sein, die Sprache einfacher zu machen, anstatt sie zu verkomplizieren.

Es mag Sie überraschen, aber die jungen Programmierer von heute halten OOP für einfacher zu programmieren als prozedurale Programmierung.

Sie denken an die Zeit vor 25 Jahren. Die Jugend von heute nimmt OOP mit der Muttermilch auf. Lernen Sie OOP, wenn Sie mit dem Trend gehen wollen, sonst werden Sie nur meckern.

 
Nikolai Semko:

Es mag Sie überraschen, aber die jungen Programmierer von heute halten OOP für einfacher zu programmieren als prozedurale Programmierung.

vielleicht im Vergleich zur funktionalen Programmierung?

 
Nikolai Semko:

Es mag Sie überraschen, aber die jungen Programmierer von heute halten OOP für einfacher zu programmieren als prozedurale Programmierung.

Sie denken an die Zeit vor 25 Jahren. Die Jugend von heute nimmt OOP mit der Muttermilch auf. Lernen Sie OOP, wenn Sie mit dem Trend gehen wollen, sonst werden Sie nur meckern.

Ja, ich verstehe OOP, aber nicht in dem Maße, wie ich es gerne hätte.
Dies ist keine Beanstandung, sondern ein konstruktiver Vorschlag.
Damit der Entwickler nicht eine Funktion schreiben muss, um zwei mallocs zuzuweisen, zwingen sie die Benutzer, OOP zu studieren.
Dies ist sicherlich der Fortschritt, die Entwicklung und die Popularisierung der Sprache. Hier können Sie sehen, wie sehr sie OOP lieben und verstehen.
Siehst du, Nikolay, alles, was eingewickelt ist, ist unnötiger Code, der ausgeführt werden muss - ich denke, wir müssen nicht erklären, warum.
Ich brauche Ihnen nichts über moderne optimierende Compiler zu erzählen - wir wissen nicht, welche Anweisungen sie anwenden werden.
Vielleicht überrascht es Sie auch, dass selbst amerikanische Programmierer es vorziehen, im prozeduralen Stil zu schreiben, nicht weil OOP schlecht ist, sondern weil der Code einfacher und schneller ist.
Und wenn es keine Objektaufgaben im Projekt gibt, warum sollte man dann Wrapper verwenden, die irgendwie verstanden werden müssen, für junge Leute ))
Ich stimme also nicht mit Ihnen überein, dass junge Leute eifrig OOP aufnehmen.

Ich denke dabei an C, auf dem die Logik der Sprache mql aufbaut.
C wurde 1972 geboren, ist also 48 Jahre alt ))
Aber trotzdem ist C eine der schnellsten Sprachen. Wissen Sie, warum? Weil es keine Klassenumhüllungen hat.

 
Andrei Trukhanovich:

vielleicht im Vergleich zu einer funktionalen?

Verfahrenstechnisch funktionell :)

 
Petros Shatakhtsyan:

Ich glaube nicht, dass das der Fall ist. Hier gibt es ein spezielles Thema: https://www.mql5.com/ru/forum/40295

Ich habe es noch nicht ganz durchgelesen, vor allem, weil es für MQL4 ist.

Ich glaube nicht, dass der Server Symbol-Kurse senden sollte, wenn der Markt geschlossen ist.

Mein Roboter ist davon nicht wirklich betroffen, weil er nach der "Markteröffnung", wenn die Ticks eintreffen, den Trend und die Umkehrungen analysiert, und das dauert einige Zeit. Während dieser Zeit öffnet der Markt.

Es ist jedoch hinderlich, wenn wir während dieser Zeit manuell einige Geschäfte abschließen wollen. Wenn die Ausführung marktgesteuert ist, bleibt die Anfrage in der Schwebe, bis der Markt öffnet, und wird natürlich zum aktuellen Preis ausgeführt.

Die direkte Funktion, die den Namen des Symbols erhält und true/false (Markt offen/geschlossen) zurückgibt, fehlt eindeutig.

Es gibt ein Angebot und eine Handelssitzung. Suche, es wurde schon 20 Mal erklärt.

 
Andrey Dik:

Bitte fügen Sie ein weiteres Abzeichen hinzu:

4. Geld

Wo die Summe aller für den Tag erhaltenen Gelder (Markt, freiberuflich, etc.) angezeigt werden würde, wäre es sehr praktisch, und jetzt für diese müssen Sie auf das Profil, das den verfügbaren Saldo sehen würde gehen.

Wenn so viel und regelmäßig hereinkommt, können Sie ein Plugin für Chrom bestellen ;)

 
Andrey Khatimlianskii:

Es gibt eine Börsensitzung und eine Handelssitzung. Schauen Sie nach, es ist alles schon 20 Mal durchgekaut worden.

Ich habe nur ein paar Tage gebraucht, um von VC++ zu MQL5 zu wechseln. Ich habe noch nie so lange nach etwas gesucht.

Wenn Sie während des Handels die Meldung "Markt geschlossen" erhalten, müssen Sie eine einfache Möglichkeit haben, diesen Zustand zu bestimmen, anstatt "kilometerlangen" und komplizierten Code zu schreiben.

Geben Sie mir nicht solche Ratschläge.