Fehler bei der Größenänderung von Arrays in Beta-Build 530 - Seite 5

 
angevoyageur:

Wenn Sie testen wollen, und die Aktualisierung anderer Terminals vermeiden wollen, müssen Sie den folgenden Ordner entfernen:

  • Windows 7 : C: \ ProgramData \ MetaQuotes \ WebInstal nach einer erfolgreichen Aktualisierung wird das Testterminal auf den anderen Terminals nicht aktualisiert.
  • Windows XP : C: \ Dokumente und Einstellungen \ Alle Benutzer \ Anwendungsdaten \ MetaQuotes \ Webinstall \

Diese Informationen (die wahrscheinlich aus dem russischen Forum stammen) sind nicht mehr aktuell. Ab v534 wird das Update unter Win7+ in %appdata%\metaquotes\webinstall abgelegt, nicht in %programdata%\metaquotes\webinstall.

Das kann sich in späteren Versionen wieder ändern.

 
cyclops993:

Diese Informationen (die wahrscheinlich aus dem russischen Forum stammen) sind nicht mehr aktuell. Ab v534 wird das Update unter Win7+ in %appdata%\metaquotes\webinstall abgelegt, nicht in %programdata%\metaquotes\webinstall.

Das kann sich in späteren Versionen wieder ändern.

Vielen Dank an Sie.
 
angevoyageur:

Ich bin wahrscheinlich kein gutes Beispiel, denn ich bin ein professioneller Programmierer. Es ist also kein großer Aufwand für mich, und ich lerne gerne neue Programmiersprachen. Ich habe auch einige Erfahrung mit oop.

. . . . .

Größtenteils stimme ich mit dem überein, was Sie geschrieben haben. Ich bin kein Software-Ingenieur, aber ich habe mich ein wenig mit mql5 beschäftigt und musste in dem Code, den ich geschrieben habe, kein OOP verwenden ... aber ich lerne viel durch das Lesen und Verstehen des Codes anderer Leute, ohne das Prinzip hinter OOP zu verstehen, kann es schwierig sein, einem mql5-Code zu folgen.
 
RaptorUK: Im Großen und Ganzen stimme ich mit dem, was Sie geschrieben haben, überein. Ich bin kein Software-Ingenieur, aber ich habe mich ein wenig mit mql5 beschäftigt und musste in dem Code, den ich geschrieben habe, kein OOP verwenden ... aber ich lerne viel durch das Lesen und Verstehen des Codes anderer Leute, ohne das Prinzip hinter OOP zu verstehen, kann es schwierig sein, einem mql5-Code zu folgen.

Imo, OOP beinhaltet den Glauben an Kapselung, Abstraktion, Vererbung und Polymorphismus. Ich glaube nicht, dass man wegen der Abstraktion in der Lage sein sollte, den Code eines anderen zu "verfolgen". Alles, was Sie wissen müssen, ist, was es tut . Im Übrigen glaube ich, dass OOP ein gewisses Maß an Organisation/Katalogisierung bietet, das durch die Sprache und die IDE erzwungen und unterstützt wird. Ein Programmierer kann nicht zu viel Organisation haben, das spart wahrscheinlich den meisten Programmierern Zeit bei zukünftigen Projekten.

 

Vielen Dank für Ihre Antwort angelvoyager, dass war ein guter Einblick von jemandem, der si vertraut mit beiden Seiten der Medaille, ich bin im gleichen Boot wie Raptor, die Konzepte der oop haben begonnen, mich zu interessieren und ich möchte mehr darüber zu lernen, seine gut zu wissen, dass ist nicht ganz notwendig für die weitere Verwendung von mql4 auch mit dem mql5 Funktionen, aber immer noch, ich möchte verstehen, was sind die Vorteile der Codierung nach oop Konzepte und Prinzipien und wie gut sie gelten für die Codierung ein kleines Projekt wie ein EA.

 

Wenn ich einen EA programmiere, endet er in der Regel ähnlich wie im Buch: eine zentrale Hub-Funktion, die den aktuellen Status der Dinge sammelt und diese Informationen in globalen Arrays speichert, umgeben von peripheren Funktionen, die die Informationen in denselben Arrays verwenden, um zu entscheiden, was zu tun ist, und die jeweils andere Hilfsfunktionen zur Berechnung von Dingen wie Losgrößen usw. aufrufen. Die start()-Funktion ruft einfach zuerst die zentrale Hub-Funktion auf, gefolgt von den peripheren Funktionen in der Reihenfolge ihrer Priorität. Diese Grundstruktur funktioniert ziemlich gut, obwohl mir die Tatsache, dass das Ganze auf den globalen Zugriff auf diese Arrays ausgerichtet ist, nie wirklich gefallen hat, aber ich mochte es nicht genug, um nach einer anderen Lösung zu suchen. Mit anderen Worten, es funktioniert gut genug, also habe ich nicht versucht, es zu reparieren lol.

Ich würde gerne wissen, wie sich ein Oop-Ansatz davon unterscheiden würde und was die Vorteile davon wären.

 
SDC: Wenn ich einen EA programmiere, ist er in der Regel ähnlich aufgebaut wie der aus dem Buch: eine zentrale Hub-Funktion, die den aktuellen Stand der Dinge sammelt und diese Informationen in globalen Arrays speichert, umgeben von peripheren Funktionen, die die Informationen in denselben Arrays verwenden, um zu entscheiden, was zu tun ist, und die jeweils andere Hilfsfunktionen zur Berechnung von Dingen wie Losgrößen usw. aufrufen. Die start()-Funktion ruft einfach zuerst die zentrale Hub-Funktion auf, gefolgt von den peripheren Funktionen in der Reihenfolge ihrer Priorität. Diese Grundstruktur funktioniert ziemlich gut, obwohl mir die Tatsache, dass das Ganze auf den globalen Zugriff auf diese Arrays ausgerichtet ist, nie wirklich gefallen hat, aber ich mochte es nicht genug, um nach einer anderen Lösung zu suchen. Mit anderen Worten, es funktioniert gut genug, also habe ich nicht versucht, es zu reparieren lol.

Ich würde gerne wissen, wie sich ein Oop-Ansatz davon unterscheiden würde und welche Vorteile er hätte.

Ich glaube, du beschreibst einen Programmablauf. Ich glaube nicht, dass das die große Idee hinter OOP ist. (imo) OOP versucht, die folgenden Probleme zu lösen. Ich bin ein OOP-Noob, aber ich bilde mir meine Weltanschauung darüber.

1) Sind Ihre Funktionen unabhängig von globalen Variablen? Mit anderen Worten, sind Ihre Funktionen eigenständige Objekte? Verkapselung

2) Versteckt Ihre Funktion Details wie lokale_Variablennamen? Vereinfacht sie das Volumen des Codes auf dem Bildschirm? Abstraktion

3) Hat die Funktion die Möglichkeit, Duplikate von sich selbst für Änderungen zu erstellen? Wie die Möglichkeit, eigene Datentypen zu erstellen? Vererbung.

4) Hat sie die Fähigkeit, sich während des Betriebs zu ändern? Beispiel: Kann die Funktion sowohl integer_array als auch double_arrays verarbeiten? Polymorphismus.

Die Art und Weise, wie OOP bei der Erstellung von ea helfen kann, ist vergleichbar mit der Art und Weise, wie ein ea_builder einem Nicht-Programmierer hilft, einen Expert_Advisor zu erstellen. Man schnappt sich einfach seine bevorzugte Order_Accounting_Function -> Data_Function -> Event Tracking Function -> Volume Defining Function -> Trading Criteria Defining Function -> Trade Functions -> Error Processing Function. Und bumm, schon haben Sie einen Expert_Advisor. Alle Ihre Handelskriterien definierenden Funktionen, die Sie im Laufe der Jahre entwickelt haben, können einfach ein- oder ausgetauscht werden.

Wenn Sie z.B. meinen Expert_Advisor ändern wollten, müssten Sie untersuchen, wo meine globalen Variablen verwendet werden und welche andere Funktion davon abhängt (z.B. in Ihren Status- oder Status-Arrays). OOP macht es so einfach wie Accounting(Option_3); Display(Option_1); Caption(Option_5); TradingSys(Option_7); VolumeSize(Option2); OrderType(Option_2) und das ist der gesamte Experte.

Das macht es für andere einfacher, Ihre Bibliotheken zu verwenden, und was für andere funktioniert, funktioniert in der Regel auch für Sie selbst in der Zukunft. Denken Sie einfach an eigenständige Objekte am Fließband :)

 
***Ps: (Ich will das nicht vergessen). Sicherlich mögen es die meisten von uns nicht, nicht zu wissen, was in den Codes steht, die wir verwenden. Oder wir verausgaben uns bei dem Versuch, die Codes von jemand anderem zu verstehen, sonst würden wir sie wahrscheinlich nicht verwenden. Die meisten nativen Funktionen (z.B. OrderSend()) in mql4 sind jedoch aus unserer Sicht Objekte. Wir sehen ihre Codes nicht, aber wir akzeptieren sie. Ich glaube, dass diese Akzeptanz von Bibliotheken anderer Leute etwas ist, das ein professioneller_oop_Programmierer, der an großen Projekten arbeitet, akzeptieren und darauf aufbauen muss. Ansonsten muss man das Rad neu erschaffen.
 

Die neueste Version meiner EA ist immer in der Nähe, dass, es ist jetzt alle Include-Dateien, aber sie sind nicht robust genug, um aus der Box ohne zumindest einige Änderungen verwendet werden. Der Fehler, den ich oft mache, ist, dass ich mich nicht dabei ertappe, kriterienspezifischen Code in Funktionen zu schreiben, die erst im Nachhinein zweideutig sein sollten, und sie verlassen sich zu sehr auf glabale Arrays, wenn ich Zeit habe, werde ich mehr lokale Arrays und mehr Parameterübergabe verwenden, um weniger globalen Zugriff zu kompensieren.

 
ubzen:
***Ps: (Ich will das nicht vergessen). Sicherlich mögen es die meisten von uns nicht, nicht zu wissen, was in den Codes steht, die wir verwenden. Oder wir verausgaben uns bei dem Versuch, die Codes von jemand anderem zu verstehen, sonst würden wir sie wahrscheinlich nicht verwenden. Die meisten der nativen Funktionen (z.B. OrderSend()) in mql4 sind jedoch aus unserer Sicht Objekte. Wir sehen ihre Codes nicht, aber wir akzeptieren sie. Ich glaube, dass diese Akzeptanz von Bibliotheken anderer Leute etwas ist, das ein professioneller_oop_Programmierer, der an großen Projekten arbeitet, akzeptieren und darauf aufbauen muss. Ansonsten muss man das Rad neu erschaffen.
Es gibt einen Unterschied ... Ich habe keine andere Wahl, als OrderSend() zu verwenden, wenn ich eine Bestellung aufgeben will... Ich habe die Wahl, eine fremde Bibliothek zu verwenden oder nicht ... selbst wenn die Quelle respektiert wird, versuche ich sie zu verstehen, bevor ich versuche, sie zu verwenden, und so werden einige Fehler gefunden und behoben: https://www.mql5.com/en/forum/133792/page3 "Und meine Korrektur für RaptorUKs Kommentar:"

Grund der Beschwerde: