Diskussion zum Artikel "Bibliothek für ein leichtes und schnelles Entwickeln vom Programmen für den MetaTrader (Teil I). Konzept, Datenverwaltung und erste Ergebnisse" - Seite 3

 
Stanislav Korotky:

Wenn Sie es "vorerst" dabei belassen, müssen Sie eine Menge Code ändern, wenn Sie die Lokalisierung neu gestalten. Wo liegt die Schwierigkeit, Strings aus "Ressourcen"-Bibliotheken oder Header auf einmal zu verbinden?

Vielleicht sucht Artem also nicht nach einfachen Wegen. Außerdem sagte er, dass die Entwicklung der Bibliothek Schritt für Schritt mit regelmäßigem Code-Refactoring erfolgen wird.

 
Stanislav Korotky:

Wenn Sie es "vorerst" dabei belassen, müssen Sie eine Menge Code ändern, wenn Sie die Lokalisierung neu gestalten. Worin besteht die Schwierigkeit, Strings aus "Ressourcen"-Bibliotheken oder Header gleichzeitig zu verbinden?

Alles hat seine Zeit. In diesem Stadium der Bibliothekserstellung hat die Bibliothek noch keine Nachrichtenklasse. Wenn sie erstellt ist, wird sie alles haben. Ich versuche nicht, der Lokomotive vorauszulaufen und halte mich an das Prinzip "vom Einfachen zum Komplexen", außerdem habe ich bereits geschrieben:

Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien

Diskussion des Artikels "Bibliothek zur einfachen und schnellen Erstellung von Programmen für MetaTrader (Teil I). Konzept, Datenorganisation, erste Ergebnisse"

Artyom Trishkin, 2019.02.27 19:25

Nun, die Rückgabe von Strukturen ist als zusätzliches Feature auf Wunsch des Anwenders geplant - rein aus Bequemlichkeit. Dort wird es weiter zu sehen sein. Auf jeden Fall - die Bibliothek wird "on the fly" erstellt, mit einer Beschreibung der Schritte ihrer Erstellung, mit der Einführung von Änderungen. So weiter wird es gesehen werden, wie man "nicht teuer" zu machen.

Wie auch immer, ich habe es bereits getan. Jetzt beschreibe ich es nur noch strukturiert, während ich gleichzeitig alles für mich selbst in Ordnung bringe.

Und überhaupt - ich bin es gewohnt, "vom Einfachen zum Komplexen" zu gehen, aber im Voraus zu überlegen, "was als Nächstes kommt" - um nicht in der Notwendigkeit stecken zu bleiben, das Konzept zu überarbeiten, vor der niemand gefeit ist.


 
Artyom Trishkin:

Alles hat seine Zeit. In diesem Stadium der Erstellung der Bibliothek hat sie noch keine Nachrichtenklasse. Wenn sie erstellt ist, wird sie alles haben. Ich versuche nicht, der Lokomotive vorauszulaufen und mich an das Prinzip "vom Einfachen zum Komplexen" zu halten, außerdem habe ich bereits geschrieben:

Ich habe das gelesen. Es ist nur so, wenn der Arbeitsplan noch nicht lokalisiert ist, warum mussten Sie ihn dann so einfügen, wie er jetzt ist? Im Allgemeinen ist der Eigentümer der Chef, die Frage ist rhetorisch.

 
Stanislav Korotky:

Das habe ich gelesen. Es ist nur so, wenn der Arbeitsplan noch nicht lokalisiert wurde, warum mussten Sie ihn dann so einfügen, wie er jetzt ist? Wie auch immer, der Chef ist der Chef, es ist eine rhetorische Frage.

Der Plan ist schon lange gezeichnet. Und ich werde ihn nicht ändern. Dies ist nur der erste Teil - der Anfang, eine Geschichte über das allgemeine Konzept, ohne Details. Und wenn Sie aufmerksam sind, ist Ihre Frage sehr seltsam.
Es ist seltsam, wenn man behauptet, dass der Rahmen des Wagens keine Luke im Dach der Karosserie hat, die Sie noch nicht gesehen haben.
 
Artyom Trishkin:
Der Plan steht seit langem fest. Und ich werde ihn nicht ändern. Dies ist nur der erste Teil - der Anfang, eine Geschichte über das allgemeine Konzept, ohne Details. Und wenn Sie aufmerksam sind, ist Ihre Frage sehr seltsam.
Es ist seltsam, Behauptungen über einen Fahrzeugrahmen aufzustellen, der kein Schiebedach in der Karosserie enthält, die Sie noch nicht gesehen haben.

Ok, wenn Sie mit der Auto-Analogie weitermachen, gibt es bereits ein Webasto-Sonnendach, das aus irgendeinem Grund am Rahmen befestigt ist, was nichts mit dem Gesamtkonzept zu tun hat und ersetzt werden muss. Die Frage bezog sich nicht auf den Plan oder das ganze Auto, sondern auf ein unnötiges Teil (unnötige Arbeit jetzt und unnötige Nacharbeit in der Zukunft).

 
Stanislav Korotky:

Ok, um mit der Auto-Analogie fortzufahren, gibt es bereits eine Webasto-Luke, die aus irgendeinem Grund am Rahmen befestigt ist, die nichts mit dem Gesamtkonzept zu tun hat und ersetzt werden muss. Die Frage bezog sich nicht auf den Plan oder das Auto als Ganzes, sondern auf ein unnötiges Teil (unnötige Arbeit jetzt und unnötige Nacharbeit in der Zukunft).

Wenn Sie beim Debuggen etwas in das Protokoll ausgeben müssen, schreiben Sie dann eine ganze Klasse, die Ihnen die Protokolleinträge in der Tombo-Sprache ausgibt? Vor allem, wenn Sie diese Ausgabe in einem Artikel zeigen müssen? Sie können den Debugger nicht in einem Artikel anzeigen. Im Allgemeinen werde ich der Lokomotive nicht vorauseilen. Zumal die Klasse geplant ist und im Artikel gezeigt wird, wo es angebracht und kontextbezogen ist.
 
fxsaber:

Es ist teuer, eine Struktur zurückzugeben. Aus demselben Grund sind CopyRates um ein Vielfaches teurer als CopyClose.

Wirklich? Ich bin nur davon ausgegangen, dass die eingebaute Struktur effizient arbeiten sollte. d.h. wenn ich alle MqlRates-Felder kopieren muss, dann sollte die Verwendung von CopyRates effizienter sein als die Verwendung von CopyTime, CopyOpen, CopyHigh ... alle acht Funktionen nacheinander.
 
alex_all:
Wirklich? Ich bin einfach davon ausgegangen, dass die eingebaute Struktur effizient arbeiten sollte. d.h. wenn ich alle MqlRates-Felder kopieren muss, sollte die Verwendung von CopyRates effizienter sein als die Verwendung von CopyTime, CopyOpen, CopyHigh ... alle acht Funktionen nacheinander.

Funktionen CopyClose, CopyHigh, High[], Low[], etc. Es gibt viele Stellen, an denen bestimmte Indikatoren verwendet werden, ohne dass man sich auf den gesamten Balken beziehen muss.

 
alex_all:
Wirklich? Ich bin einfach davon ausgegangen, dass die eingebaute Struktur effizient arbeiten sollte. d.h. wenn ich alle MqlRates-Felder kopieren muss, sollte die Verwendung von CopyRates effizienter sein als die Verwendung von CopyTime, CopyOpen, CopyHigh ... alle acht Funktionen nacheinander.

Die Übergabe eines Zeigers auf ein Objekt, von dem man alle Eigenschaften im Programm abrufen kann, ist jedoch schneller als das Kopieren aller Eigenschaften des Objekts in die Struktur, die der Klasse als Referenz übergeben wird.

 
Artyom Trishkin:

Dennoch wird es schneller sein, einen Zeiger auf ein Objekt auszugeben, von dem man alle seine Eigenschaften im Programm abrufen kann, als alle Eigenschaften des Objekts in eine Struktur zu kopieren, die der Klasse per Referenz übergeben wird.

Verstehe ich richtig, was Sie sagen wollen - CopyRates führt ein echtes Kopieren von Daten in eine Struktur durch, während die CopyOpen... Familie ein virtuelles Kopieren (d.h. Überschreiben der Struktur) durchführt. - virtuell ist (d.h. Überschreiben einer Referenz auf ein bestehendes Array)?

Es ist nur so, dass das Erstellen einer in die Plattform eingebauten Struktur Sinn macht, wenn es implementierte Mechanismen gibt, mit denen man damit arbeiten kann, die die Geschwindigkeit nicht zu sehr reduzieren.