Wünsche für MT5 - Seite 70

 
MetaDriver:

Eine Anregung an die Compiler.

Bitte machen Sie den Transfer von kleinen Strukturen nach Werten, nicht nur nach Referenzen, denn jede komplexe/rationale Arithmetik ist furchtbar langsam.

Erläutern Sie bitte, wie die Übergabe per Referenz anstelle der Übertragung von Strukturwerten zu einer Verlangsamung führen kann? Am besten mit einem Beispiel.


Sobald wir das Passieren von Strukturen nach Wert zulassen, beginnt die eigentliche Bremsung. Die Entwickler werden unwissentlich überall riesige Strukturen durch den Stack schieben und ihre Programme verlangsamen.

 
MetaDriver:

Mehrfachvererbung ist definitiv ein Übel.

Ы? Wie kann man zwei Schnittstellen vererben?

Ich bin dafür, dass wir mit den Scharfschützen fusionieren und nicht mit den Plusschützen, denn das ist viel sinnvoller, wenn man die Erfahrungen der Generationen berücksichtigt.

Zumindest bei den Grundlagen. Solche Äußerungen sind unverhohlenes Trolling.
 
MetaDriver:

Eine Bitte an die Compiler.

Bitte machen Sie die Übertragung von kleinen Strukturen durch Wert, nicht nur durch Referenz, weil alle komplexen/rationalen Arithmetik furchtbar langsam ist.

Legen Sie einfach eine Grenze fest (nach Ihrem Ermessen - 32 oder 64 Byte), nach deren Überschreitung der Compiler eine als Wert übergebene Struktur nicht mehr weitergibt und strikt die Übergabe per Referenz verlangt.

Es wäre auch sehr schön, wenn man kleine Strukturen als Ergebnis einer Funktion zurückgeben könnte.

--

Ich stimme sogar für die Überlastung der Bediener. Ich hoffe, dass ich eines Tages dazu kommen werde. Es scheint, dass der Kurs "mit C++ zu verschmelzen" eingeschlagen und allgemein unterstützt wird.

Die funktionale Syntax für arithmetische Operationen mit nicht standardisierten mathematischen Objekten ist sehr umständlich und verlangsamt zudem die Arbeit erheblich,

weil sie nicht durch Inline-Substitutionen ersetzt werden kann und den Aufwand von Funktionsaufrufen erfordert.

Nein. Strukturen nur durch Verweis. Keine Ausnahmen. Geben Sie uns einige Zahlen zu den Bremsen, damit wir das Ausmaß der Katastrophe abschätzen können.

Früher gab es die Möglichkeit, Strukturen als Funktionsergebnis zurückzugeben, die wir jedoch aufgrund der Unklarheit der Implementierung (unserer internen Fehlersuche) wieder abgeschafft haben. Wir haben beschlossen, die resultierende Struktur als Parameter zu übergeben, da Strukturen per Referenz übergeben werden.

Das Überladen von Operatoren ist möglich. Aber nicht jetzt.

 
Entwickler: Bitte lassen Sie OnTimer() in Indikatoren funktionieren, die nicht mit einem Chart verbunden sind.
 
Lizar:
Entwickler: Bitte lassen Sie OnTimer() in Indikatoren funktionieren, die nicht mit dem Chart verbunden sind.
+1000
 
stringo:

1. nein. Strukturen nur durch Verweis. Keine Ausnahmen. Geben Sie für die Bremsen Zahlen an, damit wir das Ausmaß der Katastrophe abschätzen können.

2 Wir hatten früher die Möglichkeit, Strukturen als Funktionsergebnis zurückzugeben. Schließlich haben wir diese Option aufgrund von Unklarheiten bei der Implementierung (unsere internen Querelen) abgeschafft. Wir haben beschlossen, die resultierende Struktur als Parameter zu übergeben, da Strukturen per Referenz übergeben werden.

3. Überladung von Operatoren ist möglich. Aber nicht jetzt.

1. :) Catastrophe ist gestrichen, ich habe es gemessen und war sehr überrascht, dass die Bremsen nicht dabei sind (das Drehbuch ist im Trailer). Ich suche selbst und optimiere. Aber die Syntax ist in vielen Fällen bequemer, wenn man Ausdrücke in den Parametern ersetzen kann. Ja, ja. Nun, damit kann ich leben. Es ist erträglich. Die Hauptsache ist, dass es nicht langsamer wird.

Aber können wir Strukturen wieder zuweisen? Die Zuweisung von Strukturen ist völlig legal, also lassen wir sie auch wieder zu. Das Programm ist viel lesbarer, wenn die Zuweisung des Funktionsausführungsergebnisses syntaktisch einheitlich ist:

Y = Func(X); - das sieht beim kurzen Lesen des Codes viel klarer aus als Func(X, Y); // Sie sollten erraten, dass Y ein Out-Parameter ist.

Nein, Straustrup würde Ihre Lösung nicht gefallen... sie ist irgendwie nicht richtig... :)

3. Oh! Das ist gut. Ich danke Ihnen dafür.

Dateien:
 
MetaDriver:

Wir können auch Strukturen legal neu zuweisen, also lassen wir auch die Neuzuweisung zu. Das Programm ist viel lesbarer, wenn die Zuweisung des Ergebnisses einer Funktion syntaktisch vereinheitlicht ist:

Ich werde Ihnen ein Geheimnis verraten. Tun Sie es einfach.

Es stellte sich heraus, dass sie ihn nicht abgeschnitten hatten. Sie können einfache Strukturen zurückgeben. Denken Sie aber daran, dass Sie in diesem Fall zwei zusätzliche Kopien hinzufügen müssen - das Kopieren in die Tempostruktur auf dem Stapel und das Kopieren von der Tempostruktur in die Ergebnisstruktur.

Документация по MQL5: Основы языка / Типы данных / Структуры и классы
Документация по MQL5: Основы языка / Типы данных / Структуры и классы
  • www.mql5.com
Основы языка / Типы данных / Структуры и классы - Документация по MQL5
 

Warum ist die Klasse CExpert aus der Standardbibliothek in der Dokumentation so deklariert?

class CExpert : public CObject

und in der Datei Expert.mqh finden wir diese Erklärung?

class CExpert : public CExpertBase
Документация по MQL5: Стандартная библиотека
Документация по MQL5: Стандартная библиотека
  • www.mql5.com
Стандартная библиотека - Документация по MQL5
 
Es besteht Bedarf an einem Artikel über Klassen zum Erstellen und Testen von Handelsstrategien...
 
Lizar:
Entwickler: Bitte lassen Sie OnTimer() in Indikatoren funktionieren, die nicht mit dem Chart verbunden sind.
Im Moment ist das unwahrscheinlich. Die Funktion zum Setzen des Timers sollte ChartSetTimer() heißen, da dieser Name ihr Verhalten besser widerspiegelt.
Документация по MQL5: Работа с событиями / EventSetTimer
Документация по MQL5: Работа с событиями / EventSetTimer
  • www.mql5.com
Работа с событиями / EventSetTimer - Документация по MQL5