Fragen zum MQL5-Assistenten und zur Standardbibliothek der Handelsklassen - Seite 12

 
Reshetov:

Bislang gibt es nur eine einzige Lösung für die oben genannten Nachteile:

Offener Zugang zum Lesen der von der Methode Direction() des Signalmoduls zurückgegebenen Werte aus den Modulen Positionsmanagement und Kapital- und Risikomanagement.

Fügen Sie eine weitere Methode hinzu, z. B. mit dem Bezeichner double getMainSingnal(), die auf eine Instanz der Signalmodulklasse verweist und das Ergebnis der Methode Direction() des Signalmoduls zurückgibt. Da dieser Informationsaustausch im Nur-Lese-Modus erfolgt, ist die Sicherheit in keiner Weise gefährdet.

Zu diesem Zweck

  1. Zuweisung von Feldern in den Klassen CExpertMoney und CExpertTrailing zur Speicherung einer Instanz der Klasse CExpertSignal, d. h. des Hauptmoduls der Signale.
  2. Genau diese Instanz der Klasse CExpertSignal, d.h. das Signalmodul, sollte bei der Initialisierung von Instanzen dieser Modulklassen an die Module Positionsmanagement und Geldmanagement übergeben und in den in Schritt 1 angegebenen Feldern gespeichert werden. Bevor Sie das tun, sollten Sie natürlich prüfen (sicherstellen), dass es bereits eine Instanz der Signalmodulklasse gibt, d. h. dass sie erstellt wurde.
  3. Erstellen Sie in den Klassen CExpertMoney und CExpertTrailing zusätzliche Methoden mit dem Bezeichner double getMainSignal(), der sich auf die Instanz der Signals-Modulklasse bezieht, die in den entsprechenden Feldern dieser Klassen gespeichert ist, und als Ergebnis das Ergebnis der Signals-Modulmethode Direction() zurückgibt.

Fast alles ist klar. Das Einzige, was ich klären möchte: "Warum dieser Wunsch von Ihnen, das Signal auf der MM- und Trailing-Ebene zu sehen, muss auf der Ebene der Basisklasse implementiert werden?

Ich glaube nicht, dass das eine gute (d.h. schlechte) Sache wäre. Der Algorithmus ist (aus meiner Sicht) nicht typisch. So wie ich es verstehe, haben Sie Ihre eigenen MM- und Trailing-Module (mit ihren eigenen Algorithmen, die an das Signal gebunden sind).

Hier und tragen Sie die entsprechenden 1.,2.,3.

 
uncleVic:

Fast alles ist klar. Das Einzige, was ich klären möchte, ist: "Warum sollte Ihr Wunsch, das Signal auf MM- und Trailing-Ebene zu sehen, auf Ebene der Basisklasse implementiert werden?".

Ich glaube nicht, dass das eine gute (d.h. schlechte) Sache wäre. Der Algorithmus ist (aus meiner Sicht) nicht typisch. So wie ich es verstanden habe, haben Sie Ihre eigenen Module für MM und Trailing (mit Ihren eigenen Algorithmen, die mit dem Signal verbunden sind).

Setzen Sie also die entsprechenden 1, 2, 3 ein.

Der Punkt ist, dass Master die Klasse SEhregt als Basis nimmt. Und folglich kann ich notwendige Funktionen in den von mir erstellten Modulen nicht überschreiben, da diese bereits von Anfang an mit dieser sehr grundlegenden CEhregt-Klasse inkompatibel sind, weil sie keinen Zugriff auf eine Instanz der Signals-Modulklasse haben.

Da die Instanz der Signalmodulklasse nur im Feld der Klasse SEhregt in der Datei Expert.mqh, Zeile 67, gespeichert ist

CExpertSignal    *m_signal;                   // trading signals object

und dieses Feld wird nicht mit anderen Klassen und Modulen, die aus ihnen erstellt werden, geteilt (unzugänglich).

Aus genau diesem Grund gibt es keine Möglichkeit, die Klassen CExpertMoney und CExpertTrailing zu überschreiben, um sie mit dem Assistenten kompatibel zu machen.

Denn wenn der Zugang in den übergeordneten Klassen verweigert wird, erhalten die Nachkommen ihn auf keinen Fall.


Der Sache auf den Grund gehen (c) "Aphorismen" von Kozma Prutkov

 

Ich habe herausgefunden, wie man Handelssignale vom Signalmodul an die Module zur Positionsverwaltung und zum Geld- und Risikomanagement weitergibt, ohne Instanzen von CExpertSignal zu übergeben.

Fügen wir jeweils zwei Zeilen zu den Klassen CExpertMoney und CExpertTrailing hinzu:

  double m_signaldirection; // Direction from signals module
 
  void              setSignalDirection(double value)  { m_signaldirection = value; }
  

Für die Datei ExpertMoney.mqh:

class CExpertMoney : public CExpertBase
  {
protected:
   //--- Direction from signals module  
   double m_signaldirection;
   //--- input parameters
   double            m_percent;

public:
                     CExpertMoney();
   void              setSignalDirection(double value) { m_signaldirection = value; }        
   //--- methods of setting adjustable parameters
   void              Percent(double percent)    { m_percent=percent; }
   //--- method of verification of settings
   virtual bool      ValidationSettings();
   //---
   virtual double    CheckOpenLong(double price,double sl);
   virtual double    CheckOpenShort(double price,double sl);
   virtual double    CheckReverse(CPositionInfo* position,double sl);
   virtual double    CheckClose(CPositionInfo* position);
  };

Für die Datei ExpertTrailing.mqh:

class CExpertTrailing : public CExpertBase
  {
protected:
   
    //--- Direction from signals module
   double m_signaldirection;
public:
   //---
   void              setSignalDirection(double value) { m_signaldirection = value; }        
   virtual bool      CheckTrailingStopLong(CPositionInfo *position,double& sl,double& tp)  { return(false); }
   virtual bool      CheckTrailingStopShort(CPositionInfo *position,double& sl,double& tp) { return(false); }
  };


Damit haben wir die notwendigen Felder und Methoden für die Übermittlung der Handelssignale definiert. Nun müssen wir diese Handelssignale an die Modulklassen weitergeben. Wir werden dies in Expert.mqh tun, d. h. für die Klasse CExpert

Wir werden eine Zeile schreiben, um unsere Handelssignale an die Klasse der Positionsunterstützung zu übergeben

m_trailing.setSignalDirection(m_signal.Direction());

und fügen Sie es ganz am Anfang der Methode ein, die vor jedem Trailing-Stop aufgerufen wird, d.h. CheckTrailingStop():

bool CExpert::CheckTrailingStop()
  {
//--- Set signal direction to trailing stops module
   m_trailing.setSignalDirection(m_signal.Direction()); 
//--- position must be selected before call
   if(m_position.PositionType()==POSITION_TYPE_BUY)
     {
      //--- check the possibility of modifying the long position
      if(CheckTrailingStopLong()) return(true);
     }
   else
     {
      //--- check the possibility of modifying the short position
      if(CheckTrailingStopShort()) return(true);
     }
//--- return without operations
   return(false);
  }

Wir werden eine Zeile schreiben, um Handelssignale an die Kapital- und Risikomanagementklasse weiterzuleiten:

m_money.setSignalDirection(m_signal.Direction());

und fügen Sie es ganz am Anfang der Methode ein, die vor jeder Positionsöffnung aufgerufen wird, d.h. CheckOpen():

bool CExpert::CheckOpen()
  {
//--- set signal direction to money management module
   m_money.setSignalDirection(m_signal.Direction());
   if(CheckOpenLong())  return(true);
   if(CheckOpenShort()) return(true);
//--- return without operations
   return(false);
  }

Und das war's, das Problem ist gelöst.

Jetzt können wir den aktuellen Wert der Handelssignale in den Modulen Positionsmanagement und Aktien- und Risikomanagement abrufen, indem wir auf den Wert des Feldes m_signaldirection zugreifen. Jetzt müssen wir nur noch die neuen Felder und Methoden in den Klassen CExpertMoney und CExpertTrailing in der Dokumentation registrieren und die geänderten Dateien zu den Updates hinzufügen.

 

Hier sind die Dateien. Im Sachverständigenbericht sind die Zeilen 100 und 123 handgeschrieben.

Wenn Sie weitere Fragen haben, zögern Sie bitte nicht, sie zu stellen.

 
uncleVic:

Hier sind die Dateien. Im Sachverständigenbericht sind die Zeilen 100 und 123 handgeschrieben.

Wenn Sie weitere Fragen haben, können Sie mich gerne kontaktieren.

Was für Menschen sind diese Entwickler? Wann werden sie anfangen, auf die Bedürfnisse von Händlern zu hören, die bereits Erfahrung mit der Entwicklung von Handelssystemen haben, anstatt ihre eigene Vision von Handelssystemen zu entwickeln, die für Endnutzer praktisch unbrauchbar sind, weil sie den Quellcode manuell anpassen müssen? Wie oft muss ich noch erklären, dass ich manuell einsteigen und es korrigieren kann, und selbst dann wird es lange dauern, bis ich verstehe, was los ist, obwohl ich mit der Programmierung vertraut bin. Und der Endbenutzer wird sich wahrscheinlich nicht mit dem Code befassen, weil er nichts vom Programmieren versteht. Sie selbst haben erklärt, und ich zitiere:

"DieKenntnis von Programmiersprachen ist keine Voraussetzung mehr für die Erstellung von Handelsrobotern."Siehe https://www.mql5.com/ru/articles/240.

"Die erste Version des MQL5 Wizard bot bereits die Möglichkeit, schnell einen gebrauchsfertigen Expert Advisor als eine Reihe einfacher Module in Form eines Quellcodes in MQL5 zu erstellen. Sie brauchten nicht einmal MQL5 zu kennen- Sie mussten nur"Build your own Expert Advisor in MQL5 Wizard" lesen (siehe https://www.mql5.com/ru/articles/275).

Nun stellt sich heraus, dass Kenntnisse in Programmiersprachen erforderlich sind, da der Benutzer den Code nach dem Assistenten eingeben und dort etwas bearbeiten muss. D.h. alle bisherigen Erklärungen sind Erfindungen und Täuschungen der Entwickler.

Wenn ich zum Beispiel mein eigenes Geld- und Risikomanagement-Modul schreibe, das eine Position entsprechend der Höhe des Handelssignals eines Moduls eines anderen Modulentwicklers eröffnen muss. Das Ergebnis ist, dass mein Modul nicht mit dem Assistenten kompatibel sein wird. Wie kann man den Benutzern erklären, dass sie irgendwo in den Code gehen und einige Zeichenfolgen einfügen müssen, damit das Modul funktioniert? Schließlich sollten Modulentwickler Module erstellen, und Master sollte sie automatisch zu einem einheitlichen System zusammenfassen, so dass die Module zumindest nicht miteinander in Konflikt geraten und vollständig miteinander kompatibel sind. Aber in Ihrem Fall tut der Assistent das nicht, denn nach dem Assistenten müssen Sie in den Code gehen und alles manuell wiederherstellen.

Ist es wirklich so schwer, nur sechs Zeilen in übergeordnete Klassendateien einzufügen, wie ich in meinem vorherigen Beitrag dargelegt habe? Dann löst sich das Problem von selbst und niemand muss in die Quellen gehen und dort etwas ändern. Was wird Ihren Händen abfallen? Warum sollten Sie Ihre Zeit mit irgendeinem Kauderwelsch verschwenden, bei dem Sie demonstrieren, wie etwas nach dem Assistenten manuell korrigiert werden muss? Können Sie die gleiche Zeit nicht für eine sinnvollere Aufgabe verwenden, so dass niemand später in den Code einsteigen muss, um ähnliche Probleme zu lösen?

Was ist die Ideologie Ihres Unternehmens, das einerseits die vollständige Automatisierung verkündet, andererseits aber vorschlägt, nach der so genannten "Automatisierung" in den Code einzusteigen und alles von Hand neu zu machen?

Alles in allem ist es meines Erachtens müßig, all dies zu erklären. Es sollte Sie nicht überraschen, dass Händler nicht auf MT5 umsteigen wollen, denn die Plattform ist unausgereift und wurde nicht für die Bequemlichkeit des Autotradings entwickelt, sondern für die Bequemlichkeit der Entwickler dieser Plattform. Und wenn der Benutzer nicht gründlich das Programmieren lernt, sollte er besser die Finger vom automatisierten Handel lassen.

Wenn Sie nicht wollen, müssen Sie nicht. Wenn Sie nichts anderes zu tun haben, dann setzen Sie sich hier hin und erklären Sie jedem Benutzer, wo und wie er mit seinen Händen in den Quellcode eindringen muss und was genau zu beheben ist.

Собери свой торговый советник в Мастере MQL5
Собери свой торговый советник в Мастере MQL5
  • 2011.01.14
  • MetaQuotes Software Corp.
  • www.mql5.com
Знание языков программирования теперь не является обязательным условием для создания торговых роботов. Если раньше это действительно служило непроходимым препятствием для реализации своих торговых стратегий, то появление Мастера MQL5 в корне изменило ситуацию. Начинающие трейдеры могут перестать тревожиться из-за отсутствия опыта программирования - с новым визардом, позволяющим быстро генерировать код советника, он не понадобится.
 
Ich fürchte, Sie sind entweder dem Maximalismus verfallen oder verstehen einfach nicht die Grenzen der Anwendbarkeit der Instrumente.

Auf jeden Fall kann man mit Ihnen nicht arbeiten, wenn Sie auf diesem Niveau argumentieren und bei fast jedem Thema die Grenzen der Übertreibung überschreiten. Echte Arbeit erfordert bewusste Entscheidungen, keine verbale Demagogie.
 
Renat:
Ich fürchte, Sie sind entweder dem Maximalismus verfallen oder verstehen einfach nicht die Grenzen der Anwendbarkeit von Werkzeugen.

Auf jeden Fall kann man mit Ihnen nicht arbeiten, wenn Sie auf diesem Niveau argumentieren und bei fast jeder Frage die Grenzen der Übertreibung überschreiten. Echte Arbeit setzt bewusste Entscheidungen voraus, keine verbale Demagogie.

Im Allgemeinen habe ich nicht um Arbeit gebeten, d. h. um Geld zu verdienen, und ich habe gerne auf freiwilliger Basis mitgearbeitet. Wie und wo ich meinen Lebensunterhalt verdiene, entscheide ich.

Nun, das wird es nicht, und das muss es auch nicht. Unser Geschäft ist es, Ihnen ein Angebot zu machen, Sie haben das Recht, es abzulehnen. Wie man so schön sagt: Der Meister ist der Chef.

Wenn Ihr Unternehmen bereits alles verstanden hat und sogar Dummies beigebracht hat, so genannte "fertige" Expert Advisors zu erstellen, ist der Punkt, dass sie nur zur Demonstration des Assistenten gut sind, aber nicht sehr gut für den automatisierten Handel, denn selbst auf historischen Daten sieht die Equity-Kurve unbequem aus, da die Modularität implementiert ist, aber die Modulkonsistenz für ein vollständiges Handelssystem fehlt.

Viel Glück!

 
Reshetov:
...

Wenn ich zum Beispiel mein eigenes Geld- und Risikomanagementmodul schreibe, das eine Position entsprechend der Höhe des Handelssignals eröffnen soll, das von dem Modul ausgegeben wird, das von einem anderen Modulentwickler geschrieben wurde. Das Ergebnis wird sein, dass mein Modul bereits mit dem Assistenten inkompatibel ist. Wie kann man den Benutzern erklären, dass sie irgendwo in den Code gehen und einige Zeichenfolgen einfügen müssen, damit das Modul funktioniert? Schließlich sollten Modulentwickler Module erstellen, und der Assistent sollte sie automatisch zu einem einheitlichen System kombinieren, so dass die Module zumindest nicht miteinander in Konflikt geraten und vollständig miteinander kompatibel sind. Und Sie haben einen Assistenten, der das nicht tut, denn danach müssen Sie in den Code gehen und alles manuell wiederherstellen.

Ist es wirklich so schwer, nur sechs Zeilen in die übergeordneten Klassendateien zu schreiben, worauf ich in meinem vorherigen Beitrag hingewiesen habe? Das Problem löst sich dann von selbst, und niemand muss in die Quellen gehen und dort etwas ändern. Was wird Ihren Händen abfallen? Warum verschwenden Sie Ihre Zeit mit irgendwelchem Kauderwelsch, um zu zeigen, wie man etwas nach dem Assistenten manuell repariert? Können Sie diese Zeit nicht für etwas Nützlicheres verwenden, so dass niemand später in den Code einsteigen muss, um ähnliche Probleme zu lösen?

...

Ihr Ansatz verstößt gegen die Klassenkapselung und führt zu einem hierarchischen Durcheinander.

Lesen Sie in aller Ruhe das Buch "The Perfect Code" von Steve McConell.

Stellen Sie sich vor, in einer Fabrik für die Herstellung von Handschuhen gibt es einen Fünf-Finger-Stempel für die rechte und linke Hand, aber dann kommt ein kleiner Auftrag für Sechs-Finger-Handschuhe. Schließlich gibt es solche Leute. Aber anstatt einen Stempel für sie zu machen (der einen Stapel bildet und dort eine Weile verbleibt), schlagen Sie vor, den fünfzehigen Stempel durch einen gleitenden Finger zu modifizieren. Es scheint universell zu sein, und alles ist großartig, aber die Stärke des fünfzehigen Stempels wird um der Universalität willen geschwächt (um eines winzigen Bedürfnisses willen, gelegentlich sechszehige Handschuhe herzustellen). Und dann wird eine Charge von 300 Vierfingern geordert, die wiederum die bewährte, zuverlässige Vorlage zerbröseln.

Das wurde Ihnen oben schon gesagt:

"Warum muss Ihr Wunsch, das Signal auf der MM- und Trailing-Ebene zu sehen, auf der Ebene der Basisklasse umgesetzt werden?".

Ich glaube nicht, dass es gut (d.h. schlecht) wäre. Der Algorithmus ist (aus meiner Sicht) nicht typisch. So wie ich es verstehe, haben Sie Ihre eigenen MM- und Trailing-Module (mit ihren eigenen Algorithmen, die an das Signal gebunden sind).

Anstatt Änderungen an der Standardbibel vorzunehmen, wäre es besser, Entwicklungen vorzunehmen, um sie zu erweitern (durch Vererbung). Dann würde es wirklich interessant werden.

HZZ Darüber hinaus, so dass die Menschen nicht haben, um mit den Feinheiten des Codes befassen (wie Sie oben schrieb), können Sie wickeln die fertigen Module in biblio und sharovariously gießen in den Markt, dann stecken Sie einfach das Modul von Reshetov und drücken Sie [download Teig] Taste.

 
Urain:

Ihr Ansatz verstößt gegen die Kapselung von Klassen und führt infolgedessen zu einem hierarchischen Durcheinander.

Lesen Sie in aller Ruhe das Buch "Perfect Code" von Steve McConell.

Stellen Sie sich den Meister wie eine Handschuhfabrik vor: Es gibt einen Fünf-Finger-Stempel für die rechte und linke Hand, aber dann kommt eine kleine Bestellung für Sechs-Finger-Handschuhe herein. Schließlich gibt es solche Leute. Aber anstatt einen Stempel für sie zu machen (der einen Stapel bildet und dort eine Weile verbleibt), schlagen Sie vor, den fünfzehigen Stempel durch einen gleitenden Finger zu modifizieren. Es scheint universell zu sein, und alles ist großartig, aber die Stärke des fünfzehigen Stempels wird um der Universalität willen geschwächt (um eines winzigen Bedürfnisses willen, gelegentlich sechszehige Handschuhe herzustellen). Und dann wird eine Charge von 300 Vierfingern geordert, die wiederum die bewährte, zuverlässige Vorlage zerbröseln.

Das wurde Ihnen oben schon gesagt:

Anstatt Änderungen an der Standardbibel vorzunehmen, wäre es besser, Entwicklungen vorzunehmen, um sie zu erweitern (durch Vererbung). Dann wird es wirklich interessant.
Wie oft können wir noch sagen, dass wir nicht erben können, was in den Elternklassen nicht vorhanden ist? Wann werden Sie endlich das von Steve McConell selbst geschriebene Buch "Code Complete" kennenlernen?
  1. Mein Ansatz verstößt nicht gegen die Grundsätze der Kapselung, denn in der von mir vorgeschlagenen Version wird alles Überflüssige ausgeblendet, und die Module erhalten ein Handelssignal nur als Wert vom Typ double und nur im Lesemodus. Im Gegensatz zu manchen Leuten habe ich die Bücher über OOP nicht nur gelesen, sondern sorgfältig studiert.
  2. Ich habe nicht vorgeschlagen, sechsfingrige Handschuhe zu Vorlagen zu erstellen, d.h. die sechsten Finger als zusätzliche Module anzubringen, sondern lediglich vorgeschlagen, alle vorhandenen Module mit Signalen aus dem Signalmodul abzustimmen, das eigentlich das wichtigste für Handelssysteme ist, weil das gesamte System nach seinem Befehl funktionieren muss. Sie waren es, der die Modularität vorgeschlagen hat, d. h. Handschuhe mit austauschbaren Fingern. Da Sie aber dafür gesorgt haben, dass die rechte Hand nicht weiß, was die linke Hand tut, d.h. andere Module können keine Informationen vom Signalmodul erhalten und ihre Aktionen damit synchronisieren, werden die Handschuhe Finger (Module) unterschiedlicher Größe haben, wenn der Benutzer den Handschuh anzieht und sieht, dass einer der Finger klein ist und nicht hineinpasst, während der andere groß und übermäßig groß ist.

Beispielsweise wird ein Trailing-Stop nach einem separaten Signalsystem ausgeführt, das von einem Drittentwickler des Moduls entwickelt wurde, wie z.B. eine gleitende Welle oder ein Paraboloid, dessen Signale an einigen Stellen den Signalen des Moduls widersprechen und das Handelssystem beginnt, inkonsistent zu arbeiten. Das Geld- und Risikomanagementmodul kann auch nicht telepathisch erraten, dass das Handelssignal schwach ist und es an der Zeit ist, das Volumen der offenen Positionen zu reduzieren und nach einigen Regeln zu handeln, die unabhängig vom Signalmodul sind, d.h. eines von ihnen bittet darum, in Kurven langsamer zu fahren und das andere schaltet einen Gang höher. Und das gesamte Handelssystem, das mit Hilfe Ihres so genannten Meisters geschaffen wurde, entwickelt sich wie in der Fabel von Krylow "Die Krabbe und der Hecht". Nicht mehr und nicht weniger. Und genau diese fabelhafte Ideologie der Zusammenstellung von rücksichtslosen Beratern versucht Ihr Unternehmen uns für den Eigenhandel aufzuzwingen. Brauchen wir das?

Das Ergebnis sind Handelssysteme mit derartigen Diagrammen des Eigenkapitals und der Ausgewogenheit, die Händlern und Anlegern gleichermaßen nur Angst machen können, siehe https://www.mql5.com/ru/code/833.




Das liegt nicht daran, dass der Ersteller des Moduls, in diesem Fall Nikolay Kositsin, etwas falsch gemacht hat, sondern daran, dass die übrigen Module des Handelssystems nicht aufeinander abgestimmt sind und inkonsistent arbeiten.

Aber es ist sinnlos, das zu erklären. Die Entwickler der Plattformen werden, anstatt mickrige sechs Zeilen zu schreiben, um die Probleme zu beheben, kilometerlange Fußnoten in die Foren schreiben und die Entwickler von Handelssystemen beschuldigen, Demagogie, Verstöße gegen die Kapselung und andere Todsünden zu verbreiten, aber sie werden keinen Finger rühren, um ihre eigenen Mängel und Missverständnisse zu korrigieren.

Es hat also keinen Sinn, weiter zu diskutieren. Bleiben Sie bei Ihrer Meinung und machen Sie, was Sie wollen. Ich habe es satt und es ist nutzlos, denn die Entwickler der Plattformen scheren sich einen Dreck darum, weil sie ihre eigenen Sachen nicht machen und ob genau diese Tools von den Nutzern der Plattformen zum Autotrading verwendet werden können, ist den Entwicklern egal. Wer voll von hungrigen Menschen ist, weiß nicht, worauf er Hunger hat.

Модуль торговых сигналов, выполненный на основе индикатора Heiken_Ashi_Smoothed
Модуль торговых сигналов, выполненный на основе индикатора Heiken_Ashi_Smoothed
  • Stimmen: 7
  • 2012.02.23
  • Nikolay Kositsin
  • www.mql5.com
Модуль торговых сигналов для Мастера MQL5. Сигналом для открытия позиций служит изменение цвета свечи, формируемой индикатором Heiken_Ashi_Smoothed.
 
Reshetov:
...

Reshetov, ich kann deine emotionalen Kritzeleien nicht einmal lesen. Wenn Sie argumentieren wollen, dann argumentieren Sie.

Der Sinn eines Assistenten besteht darin, eine Vorlage zu erstellen, die den Bedürfnissen der meisten Händler entspricht. Ich habe eine EA-Vorlage auf Cherver (ich habe sie selbst geschrieben), die die Grundfunktionen enthält. Und in der Praxis muss sie immer wieder korrigiert werden. Die Bearbeitungen sind jedoch minimal. Wenn ich eine Vorlage erstellt hätte, um sie überhaupt nicht zu bearbeiten, wäre es ein riesiger Code für alle Gelegenheiten gewesen, in dem man sich verlieren könnte.

Der Assistent erstellt eine bereits funktionierende Vorlage, die auch von Personen, die keine Programmierkenntnisse haben, verwendet werden kann. Wenn Sie sich mit der Programmierung auskennen, können Sie sie leicht nach Ihren Wünschen ändern. Es reicht aus, wenn Sie einmal verstehen, wie Dinge erstellt werden und wo sie in der Standardbibliothek getrennt sind. Darüber hinaus können Sie die Standardbibliothek auch als Vorlage verwenden und die gewünschten Abschnitte einfach in Ihren eigenen Code kopieren.