Diskussion über die Einführung von Ratsmitgliedern.

 

Hallo, ich lerne gerade mql5 und es ist schon lange her, dass ich den Einstieg geschafft habe. Da jeder seine Programme anders schreibt, ist jeder von seinem Ansatz überzeugt, und für Anfänger ist es schwer zu verstehen, welcher Ansatz optimal ist.

Ich selbst würde es gerne verstehen, und ich denke, dass die Gemeinschaft von einer öffentlichen Diskussion über die Umsetzung optimaler Lösungen für typische EA-Blöcke profitieren würde. Zum Beispiel schreibt jemand fast nichts in die Initialisierung, und jemand füllt diesen Block sehr stark. Welche Kontrollen ein EA durchführen sollte und welche nicht. Virtuelle Takes und Stops oder nicht, etc. Auch die Art und Weise, wie die Strategie umgesetzt wird, ist interessant.

Ich schlage also vor, dass, wenn jemand sein Wissen mit anderen teilen möchte, er dies tut. Dann können wir die Umsetzung zu diskutieren, zum Beispiel am Beispiel der nettler, oder eine einfache Expert Advisor auf der Grundlage gleitender Durchschnitt, wie, wenn es eine Abweichung von der durchschnittlichen, dann warten Sie auf die Rückkehr zum Durchschnitt. Oder jede andere Strategie, die Sie vorstellen möchten. Posten Sie den Code mit einem Kommentar, warum Sie ihn so geschrieben haben.

Vielen Dank im Voraus an alle, die dazu beitragen, die Qualität des Codes in der Open-Source-Gemeinschaft zu verbessern.

 
Ivan_Invanov:

Hallo, ich lerne gerade mql5 und es ist schon lange her, dass ich den Einstieg geschafft habe. Da jeder seine Programme anders schreibt, ist jeder von seinem Ansatz überzeugt, und für Anfänger ist es schwer zu verstehen, welcher Ansatz optimal ist.

Ich selbst würde es gerne verstehen, und ich denke, dass die Gemeinschaft von einer öffentlichen Diskussion über die Umsetzung optimaler Lösungen für typische EA-Blöcke profitieren würde. Zum Beispiel schreibt jemand fast nichts in die Initialisierung, und jemand füllt diesen Block sehr stark. Welche Kontrollen ein EA durchführen sollte und welche nicht. Virtuelle Takes und Stops oder nicht, etc. Auch die Art und Weise, wie die Strategie umgesetzt wird, ist interessant.

Ich schlage also vor, dass, wenn jemand sein Wissen mit anderen teilen möchte, er dies tut. Dann können wir die Umsetzung zu diskutieren, zum Beispiel am Beispiel der nettler, oder eine einfache Expert Advisor auf der Grundlage gleitender Durchschnitt, wie, wenn es eine Abweichung von der durchschnittlichen, dann warten Sie auf die Rückkehr zum Durchschnitt. Oder jede andere Strategie, die Sie vorstellen möchten. Posten Sie den Code mit einem Kommentar, warum Sie ihn so geschrieben haben.

Vielen Dank im Voraus an alle, die dazu beitragen, die Qualität des Codes in der Open-Source-Gemeinschaft zu erziehen und zu verbessern.

Sie haben alle Artikel über die Entwicklung von EA auf dieser Website gelesen und waren nicht der Meinung, dass dies ausreicht? und Sie sind ein Wortspezialist)

 
Aleksey Mavrin:

Sie haben alle Artikel über die Entwicklung von EA auf dieser Website gelesen und sind der Meinung, dass das nicht ausreicht? und Sie sind ein Wortspezialist)

Ich finde es schwierig, ein Paradigma für die Programmausführung zu entwickeln. Ja, ich habe diesen Artikel über Zeitersparnis gesehen, er ist sehr nützlich. Aber was nützt es, die Ausführungszeit eines einzelnen Stücks zu verkürzen. Zum Beispiel, wenn der Lösungsansatz selbst im Vergleich zu einem anderen Lösungsansatz deutlich langsamer wird. Sind Sie sicher, dass es keinen besseren Weg gibt, EAs zu schreiben, als Sie es tun? Herzlichen Glückwunsch, Sie müssen auf dem höchsten Niveau sein. Vielleicht können Sie uns dann ein Codebeispiel zeigen?
 
Ivan_Invanov:
Ich finde es schwierig, ein Paradigma für die Durchführung eines Programms zu entwickeln. Ja, ich habe diesen Artikel über Zeitersparnis gesehen, er ist sehr nützlich. Aber was nützt es, die Ausführungszeit eines einzelnen Stücks zu verkürzen. Zum Beispiel, wenn der Lösungsansatz selbst im Vergleich zu einem anderen Lösungsansatz deutlich langsamer wird. Sind Sie sicher, dass es keinen besseren Weg gibt, EAs zu schreiben, als Sie es tun? Herzlichen Glückwunsch, Sie müssen auf dem höchsten Niveau sein. Vielleicht können Sie mir dann ein Beispiel für einen Code zeigen?
Sie tun, was Sie tun. Und Sie werden mit der Zeit Ihr eigenes Paradigma entwickeln.
 
Ivan_Invanov:
Ich kann kein Paradigma der Programmausführung bilden. Ja, ich habe diesen Artikel über Zeitersparnis gesehen und er ist sehr nützlich. Es macht jedoch keinen Sinn, die Laufzeit eines einzelnen Fragments zu verkürzen. Zum Beispiel, wenn der Lösungsansatz selbst im Vergleich zu einem anderen Lösungsansatz deutlich langsamer wird. Sind Sie sicher, dass es keinen besseren Weg gibt, EAs zu schreiben, als Sie es tun? Herzlichen Glückwunsch, Sie müssen auf höchstem Niveau sein. Vielleicht können Sie uns dann ein Codebeispiel zeigen?

Die Links zu den Artikeln hier werden automatisch nach Stichworten eingefügt.

Und damit meine ich eine Menge Artikel mit vorgefertigten Expert Advisors, in denen die Autoren den Code speziell für Leute wie Sie erklären. Haben Sie sie sich angesehen? Beispiele dafür gibt es genug.

Der optimale Weg ist ein situationsbedingter Begriff.

Ihr Systemansatz ist gut.

Unterteilen Sie den Prozess der EA-Erstellung in zwei Phasen:

1. Algorithmus

2. den Code.

Die Hauptsache ist, dass man lernt, wie man den Algorithmus formuliert. Und Sie können auf viele Arten codieren, je nachdem, was Ihnen lieber ist.

Sind endliche Automaten mit mehreren Rückkopplungen bekannt? Wenn nicht, sollten Sie sich mit der Theorie befassen, damit Sie eine bessere Vorstellung davon bekommen, wo Sie anfangen können.

 
Ivan_Invanov:

Hallo, ich lerne gerade mql5 und es ist schon lange her, dass ich den Einstieg geschafft habe. Da jeder seine Programme anders schreibt, ist jeder von seinem Ansatz überzeugt, und für Anfänger ist es schwer zu verstehen, welcher Ansatz optimal ist.

Ich selbst würde es gerne verstehen, und ich denke, dass die Gemeinschaft von einer öffentlichen Diskussion über die Umsetzung optimaler Lösungen für typische EA-Blöcke profitieren würde. Zum Beispiel schreibt jemand fast nichts in die Initialisierung, und jemand füllt diesen Block sehr stark. Welche Kontrollen ein EA durchführen sollte und welche nicht. Virtuelle Takes und Stops oder nicht, etc. Auch die Art und Weise, wie die Strategie umgesetzt wird, ist interessant.

Ich verstehe nicht, worum es bei diesem Thema geht.

Es ist klar, dass jeder Programmierer seine eigenen Vorlieben, seine eigenen Prinzipien, seine eigenen Ansichten über die Programmstruktur hat. Sie werden Ihre eigenen haben. Um sie zu entwickeln, müssen Sie den Code schreiben und ihn testen. Wenn Sie die Regelmäßigkeiten und Fehler herausfinden, werden Sie sich ein Bild davon machen, welche Programmstruktur am besten zu Ihnen passt.

Spezifische Implementierungen - in KodoBase, viele Optionen. Nehmen Sie eine davon und erforschen, nutzen und verändern Sie sie.

Was brauchen Sie noch?

 
Georgiy Merts:

Ich verstehe nicht, worum es bei diesem Thema geht.

Es ist klar, dass jeder Programmierer seine eigenen Vorlieben, seine eigenen Prinzipien, seine eigenen Ansichten über die Programmstruktur hat. Sie werden Ihre eigenen haben. Um diese herauszufinden, müssen Sie Code schreiben und ihn testen. Wenn Sie die Regelmäßigkeiten und Fehler herausfinden, werden Sie sich ein Bild davon machen, welche Programmstruktur am besten zu Ihnen passt.

Spezifische Implementierungen sind in KodoBase zu finden, es gibt eine Vielzahl von Optionen. Nehmen Sie eine davon und erforschen, nutzen und verändern Sie sie.

Was brauchen Sie noch?

Ich schaue mir natürlich kodobase an. Ich habe keine Zweifel am Code eines einzigen Autors, nämlich metaquotes, dem offiziellen Entwickler. Ich lerne von ihm. Der Mann dort schreibt logisch und nutzt die eingebauten Funktionen in vollem Umfang. Aber er hat nur sehr wenige Expert Advisors. Im Allgemeinen gibt es eine Menge fragwürdigen Code, der von verschiedenen Autoren geschrieben wurde, und es kommt oft vor, dass man sich den Code ansieht und nicht versteht, warum er so geschrieben wurde. Nun, ich bin überrascht, wie viel Vertrauen die Menschen in diese Umsetzungen haben. Vielleicht bin ich natürlich zu besorgt. Wahrscheinlich sollte ich es nur schreiben, damit es funktioniert, wie man hier sagte.

 
Aber ich habe den Eindruck, dass es früher oder später eine Art Konsens bei Open Source geben wird. Schließlich schreiben die Leute immer wieder das Gleiche, nur mit Variationen. Warum also nicht fertige Stücke anfertigen und diese diskutieren? Wie hier haben wir eine Implementierung eines Netflow-Generators, die nun auf optimale Geschwindigkeit und Funktionalität gebracht wird. Ich werde es tun. Ich habe einfach nicht genug Wissen, um die optimalen Lösungen zu nutzen. Ich werde jetzt ein Schema zeichnen, und das, was mir als erstes einfällt, das wird es sein. Oder ich leihe sie mir von jemandem aus, der den gleichen Wissensstand hat. Aber wenn wir Beispiele für die Umsetzung machen würden, würden erfahrene und gelehrte Leute mitmachen, etwas reparieren, miteinander streiten und einen Konsens erreichen. Am Ende würde jeder einen qualitativ hochwertigen Code erhalten, oder zumindest ein Beispiel, dem man folgen kann.
 
Ivan_Invanov:
Aber ich habe den Eindruck, dass es früher oder später einen Konsens bei Open Source geben wird. Schließlich schreiben die Leute immer wieder das Gleiche, nur mit Variationen. Warum also nicht fertige Stücke anfertigen und diese diskutieren? Wie hier haben wir eine Implementierung eines Netflow-Generators, der nun auf optimale Geschwindigkeit und Funktionalität gebracht wird. Ich werde es tun. Ich habe einfach nicht genug Wissen, um die optimalen Lösungen zu nutzen. Ich werde jetzt ein Schema zeichnen, und das, was mir als erstes einfällt, das wird es sein. Oder ich leihe sie mir von jemandem aus, der den gleichen Wissensstand hat. Aber wenn wir Beispiele für die Umsetzung machen würden, würden erfahrene und gelehrte Leute mitmachen, etwas reparieren, miteinander streiten und einen Konsens erreichen. Am Ende würde jeder einen qualitativ hochwertigen Code erhalten, oder zumindest ein Beispiel, dem man folgen kann.

Die Idee ist gut. Die Basis von Igor Kim war damals sehr hilfreich, ich danke ihm sehr für seine Arbeit :)

 
Ivan_Invanov:

Natürlich mit Blick auf die kodobase. Ich habe keine Zweifel an dem Code von nur einem Autor, metaquotes, der der offizielle Entwickler ist. Ich lerne von ihm. Der Mann dort schreibt logisch und nutzt die eingebauten Funktionen bis zum Maximum. Aber er hat nur sehr wenige Expert Advisors. Im Allgemeinen gibt es eine Menge fragwürdigen Code, der von verschiedenen Autoren geschrieben wurde, und es kommt oft vor, dass man sich den Code ansieht und nicht versteht, warum er so geschrieben wurde. Nun, ich bin überrascht, wie viel Vertrauen die Leute in diese Umsetzungen haben. Vielleicht bin ich natürlich zu besorgt. Wahrscheinlich sollte ich es einfach schreiben, damit es funktioniert, wie man hier sagt.

Das ist eine andere Sache.

Ich schaue mir manchmal meinen eigenen Code an und verstehe nicht, warum er an einer bestimmten Stelle geschrieben ist. Deshalb versuche ich, solche Fragmente sehr ausführlich zu kommentieren und alle Feinheiten zu erwähnen. Dennoch stelle ich regelmäßig fest, dass ich einige Dinge nicht bedacht habe.

Außerdem verwende ich den folgenden Code (um die Art der Ausführung zu bestimmen), der von einem sehr kompetenten Forumsbenutzer geschrieben wurde:

ENUM_ORDER_TYPE_FILLING CSymbolInfo::GetTypeFilling(string strSymbol,ENUM_ORDER_TYPE_FILLING otfFilingType)
{
   #ifndef __MQL5__
      return(otfFilingType);
   #else // __MQL5__
      
   const ENUM_SYMBOL_TRADE_EXECUTION steExeMode = (ENUM_SYMBOL_TRADE_EXECUTION)::SymbolInfoInteger(strSymbol, SYMBOL_TRADE_EXEMODE);
   const int iFillingMode = (int)::SymbolInfoInteger(strSymbol, SYMBOL_FILLING_MODE);

   return((iFillingMode == 0 || (otfFilingType >= ORDER_FILLING_RETURN) || ((iFillingMode & (otfFilingType + 1)) != otfFilingType + 1)) ?
         (((steExeMode == SYMBOL_TRADE_EXECUTION_EXCHANGE) || (steExeMode == SYMBOL_TRADE_EXECUTION_INSTANT)) ?
           ORDER_FILLING_RETURN : ((iFillingMode == SYMBOL_FILLING_IOC) ? ORDER_FILLING_IOC : ORDER_FILLING_FOK)) :
          otfFilingType);
  
   #endif // __MQL5__
};

Außerdem hat dieser Forumsteilnehmer selbst auf Nachfrage gesagt, dass er sich nicht mehr daran erinnert, sondern dass dieser Code bereits viele Male getestet wurde und man ihm vertrauen kann.

Nun, wenn ich es schaffe, diese dummen "Fragen" durch echte "Wenn"-Anweisungen zu ersetzen, werde ich es herausfinden... Im Moment...

 
Es ist besser, ein Blockdiagramm zu erstellen und direkt mit diesen Blöcken zu schreiben, so habe ich es am Anfang gemacht, dann fängt man an, Funktionen zu benutzen, aber ich benutze nur die OOP anderer Leute. Im Allgemeinen müssen Sie so schreiben, dass Sie leicht Änderungen an einem Teil des Codes vornehmen können, ohne alles neu schreiben zu müssen.