Projekt des Beraters - Seite 2

 
Vasiliy Sokolov:

Das Umstellen der Klammern macht die Sache nicht weniger unübersichtlich. Bevor Sie Ratschläge erteilen, sollten Sie zumindest Ihr Niveau auf ein durchschnittliches Niveau bringen.

Was stimmt nicht mit meinem Niveau?

 
STARIJ:

Der Kommentar sollte die Hälfte des Programmtextes einnehmen

Ich schreibe sogar einige Dinge - zuerst einen langen Kommentar "was hier passieren soll", und dann Code, der das umsetzt :-) Übrigens, ich empfehle diesen Ansatz auch für Neulinge
 
Maxim Kuznetsov:
Manche Dinge schreibe ich - erst einen langen Kommentar "was da sein sollte", und dann den Code, der es umsetzt :-) Übrigens rate ich auch Neulingen zu einem solchen Ansatz
Zuerst ein Stub für eine Funktion mit einer Beschreibung, was sie tun wird und return(something). Dann wird der Code
 
Vitaly Muzichenko:

Schreiben Sie keine Funktionen, die immer konstant sind und sich nie ändern, in diesem Stil

Schreiben Sie sie kurz und bündig, dann sieht sie sowieso niemand an, und sie nehmen nur halb so viel Platz ein.


Kommentieren Sie den Code die ganze Zeit, wofür dieser Teil des Codes verantwortlich ist, es ist nicht schwierig, und jetzt werden Sie immer wissen, was der Code ist, und reduzieren Sie die Zeit, um es zu studieren


Vitaly, ich habe es richtig verstanden, Sie haben einen 12-Zoll-Laptop-Bildschirm?

Ich erinnere mich, dass auch ich früher, beim CV-1420 mit alphanumerischem Bildschirm 24 Zeilen x 80 Zeichen, versucht habe, Platz zu sparen )) Jetzt versuche ich, es irgendwie so zu schreiben, dass es schneller zu verstehen ist.

 
Vitaly Muzichenko:

Schreiben Sie keine Funktionen, die immer konstant sind und sich nie ändern, in diesem Stil

Schreiben Sie sie kurz und bündig, dann sieht sie sowieso niemand an, und sie nehmen nur halb so viel Platz ein.


Kommentar auf den Code die ganze Zeit, was dieses Stück Code verantwortlich ist, ist es nicht schwer, und hier bei der Fertigstellung wird immer wissen, was der Code, und reduzieren die Zeit, um es zu studieren

Und dann erkennen Sie mit Ihren Augen, worauf sich diese 4 Klammern am unteren Rand beziehen. Dies ist ein sehr schlechter Codestil. Im Allgemeinen hat MS das Beste, und die Tatsache, dass MQ sich zum K&R-Stil bekennt, ist kein Grund, es nachzuahmen. Die Zeiten von Lochkarten und 80x24-Monitoren sind längst vorbei.

void CloseOrders(int cmd) {
 for(int i=OrdersTotal()-1;i>=0;i--) {
  if(OrderSelect(i,SELECT_BY_POS)) {
   if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic) {
    if(OrderType()==OP_BUY && cmd==OP_BUY) {
     if(!OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,Blue)) Print("Order BUY not close! Error = ",GetLastError());
    }
     if(OrderType()==OP_SELL && cmd==OP_SELL) {
      if(!OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,Red)) Print("Order SELL not close! Error = ",GetLastError());
    }
}}}}
Vasiliy Sokolov:
Nun, dann sind 90 % des Codes Kommentare. Außerdem muss es so viel sinnlosen und schlecht lesbaren Code wie möglich geben, damit man mehr Kommentare einfügen kann!

Aber wenn ich alt bin, kann ich die Kommentare in Form eines Buches "Forex and Me" )))) veröffentlichen. Nein, ich bevorzuge "Ich und Forex".

 
Alexey Volchanskiy:

Und dann suchen Sie sich aus, worauf sich die vier Klammern am unteren Rand beziehen. Dies ist ein sehr schlechter Codestil. Im Allgemeinen hat MS das Beste, und die Tatsache, dass MQ sich zum K&R-Stil bekennt, ist kein Grund, ihn nachzuahmen. Die Zeiten von Lochkarten und 80x24-Monitoren sind längst vorbei.


Aber wenn ich alt bin, kann ich die Kommentare in Form eines Buches "Forex and Me" )))) veröffentlichen. Nein, ich bevorzuge "Ich und Forex".

Arbeitsbildschirm 27".

Ich werde ihn nicht noch einmal lesen, aber ich möchte ihn zitieren:"Schreiben Sie keine Funktionen, die immer konstant sind und sich in diesem Stil nie ändern.

Warum sollte man sich über eine Funktion aufregen, die einmal geschrieben wird, wenn die Plattform freigegeben wird, und die sich in der Zukunft nie ändern wird? Ändern Sie häufig den Code in den Funktionen, um die Losgröße, die Anzahl der Aufträge und die typischen Werte zu erhalten? Warum sollte man sie dann auf 3 Bildschirme eines 32-Zoll-Monitors verteilen?

P.S. Der beigefügte Code ist eine Fälschung von kodobase.

 
Vitaly Muzichenko:

27"-Arbeitsbildschirm

Ich werde ihn nicht noch einmal lesen, sondern nur zitieren:"Schreiben Sie keine Funktionen, die immer gleich bleiben und sich nie ändern, in diesem Stil.

Warum sollte man sich über eine Funktion aufregen, die einmal geschrieben wird, wenn die Plattform freigegeben wird, und die sich in der Zukunft nie ändern wird? Ändern Sie häufig den Code in den Funktionen, um die Losgröße, die Anzahl der Aufträge und die typischen Werte zu erhalten? Warum sollte man sie dann auf 3 Bildschirme eines 32-Zoll-Monitors verteilen?

Die Akte, in der sie liegen, wird alle dreihundert Jahre auf dieselbe Art und Weise geöffnet.

Und wenn es sich öffnet - finden Sie es in einem Stapel }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}} was was ist.

Warum sollten Sie eine Falle für sich selbst schreiben, wenn Sie sie geschrieben, getestet und an eine Bibliothek oder eine Klasse zur Speicherung geschickt haben? Das war's. Und wenn Sie Ihr Gedächtnis auffrischen müssen (vielleicht müssen Sie etwas auf der Grundlage davon tun, was auch immer... Sie müssen etwas hinzufügen) - Sie setzen sich einfach hin und verschieben Klammern...

 
Vitaly Muzichenko:

27"-Arbeitsbildschirm

Ich werde ihn nicht noch einmal lesen, sondern nur zitieren:"Schreiben Sie keine Funktionen, die immer gleich bleiben und sich nie in diesem Stil ändern".

Warum sollte man sich über eine Funktion aufregen, die einmal geschrieben wird, wenn die Plattform freigegeben wird, und die sich in der Zukunft nie ändern wird? Ändern Sie häufig den Code in den Funktionen, um die Losgröße, die Anzahl der Aufträge und die typischen Werte zu erhalten? Warum sollte man sie dann auf 3 Bildschirme eines 32-Zoll-Monitors verteilen?

P.S. Der beigefügte Code stammt von kodobase.

Vitaly, die erste Version deiner Funktion zeigt deutlich, welche schließende Klammer sich auf welche öffnende Klammer bezieht, während die zweite Version deine Augen bei der Suche nach einem Paar bricht...

Normalerweise sind benutzerdefinierte Funktionen nicht so groß, dass sie nicht auf den Bildschirm passen. Und es spielt überhaupt keine Rolle, wie die Klammern im kompilierten EA angeordnet sind.

 
Artyom Trishkin:

Auch die Akte, in der sie liegen, wird einmal alle dreihundert Jahre geöffnet.

Aber wenn sie sich öffnet, müssen Sie den Stapel }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}} durchsuchen, um herauszufinden, was sich darin befindet.

Warum sollte man eine Falle für sich selbst schreiben, wenn man sie schreibt, testet und an die Bibliothek oder Klasse zur Speicherung schickt. Das war's. Und wenn es notwendig ist, Ihr Gedächtnis aufzufrischen (vielleicht etwas auf der Grundlage davon zu tun, man weiß ja nie...) - setzen Sie sich einfach hin und verschieben Sie Klammern...

Nein, ich habe nichts in der Datei, ich bin nicht gierig und ich teile Programme mit Bekannten und sehr oft, und anstatt Archive zu schicken, schicke ich nur eine Datei.

Alle Funktionen befinden sich am unteren Rand, aber der ausführende Code ist immer gut geschrieben und kommentiert, selbst ein Kind kann ihn verstehen.

 
Gregory Kovalenko:
Hallo.
Wenn die Menge des Codes wächst, wird es manchmal schwierig und verwirrend.
Ich habe EA-Code mit einer riesigen Anzahl von Codezeilen gesehen, ich frage mich, wie komplexe EAs entworfen werden, vielleicht gibt es einige Tools oder Techniken für den Umgang mit solchen komplexen Algorithmen?

Ich habe mehrere tausend Codezeilen in jedem EA. (Sie sind automatisch durch Einschlüsse enthalten.)

Ein EA besteht nämlich aus der Klassenvorlage CExpert, die über die Funktionen OnInit, OnTick usw. verfügt. In der Verbindungsvorlage des EA rufen alle globalen Funktionen - Ereignisse - die entsprechenden Funktionen dieses Objekttyps auf.

Während der Initialisierung fordert CExpert über eine vordefinierte globale Funktion "EA parts factory" an, die alles Notwendige für die Arbeit zu erstellen weiß.

Der Expert Advisor selbst besteht aus fünf Zeilen. Das Objekt der Teilefabrik des EA selbst wird in dieser Datei deklariert, und die Einschlüsse werden aufgenommen.

Mir persönlich gefällt der OOP-Ansatz mit der Trennung von virtuellen Schnittstellen und Implementierung sehr gut. Zunächst beschreiben wir die Schnittstellendatei - eine abstrakte Klasse, in der alle Funktionen virtuell und gleich Null sind. Diese Klasse definiert das "Interaktionsprotokoll". Und dann erben wir von ihr echte Klassen, in denen alle diese Funktionen vollständig implementiert sind (manchmal haben wir eine ganze Hierarchie von Klassen, wenn die Beschreibung der Funktionen "nach Ebenen" verteilt ist).

Dieser Ansatz ermöglicht es, Entitäten zu trennen, was es sehr einfach macht, das gesamte Projekt weiter zu unterstützen und Klassen wiederzuverwenden.

Grund der Beschwerde: