Beta-Version des Online-Buchs über MQL4-Programmierung - von Sergey Kovalev (SK.) - Seite 11

 

an SK

1. Das Tutorial wurde als Beta-Version veröffentlicht, d.h. mit einem Angebot zur Kritik.
2. ich habe den Satz betont und die Zeile "all arrays are static by definition" gefunden.))) d.h. das ist nicht mein Problem.
3. wenn wir willkürlich dieser einen kritisierten Zeile aus dem Lehrbuch folgen, die besagt, dass alle Arrays per Definition statisch sind, können wir einen Adressfehler "incorrred start position 0 for ArrayMinimum function" im Tracer erhalten
(diese eine Zeile schmälert nicht die Vorzüge des Lehrbuchs, Hut ab vor Ihnen SK)
4) Also. Ein statisches Array ist in erster Linie im Sinne der Speicherzuweisung,
oder nicht, kann es eine neue Initialisierung jedes Elements geben.
Was sehen wir in MQL4? Bei jedem Aufruf wird jedes Element mit dem Standardwert Null initialisiert, der explizit in der Definition angegeben ist.
D.h. Daten in Unterprogrammen werden nicht ohne statische Vordefinition gespeichert.
Das bedeutet, dass MQL4-Unterprogramme mit dynamischer Zuweisung von variablem Speicher ausgeführt werden.
Es ist klar, dass alle Variablen in MQL4-Unterprogrammen und alle Arrays ohne explizite Größe standardmäßig dynamisch sind. Andernfalls sollten sie mit einer statischen Beschreibung versehen werden.
5. Zum Beispiel ist die dynamische Speicherzuweisung eine Möglichkeit, double a[][]...[]; mit leeren Dimensionen zu deklarieren,
aber es ist notwendig zu erwähnen, dass der Programmierer für die Adressierung verantwortlich sein sollte.
(Im obigen Beispiel wird die Standardfunktion durch eine alte Referenz angesprochen und liegt nicht innerhalb der Array-Grenzen).

 
Korey:

an SK


GUT.
 
Die Frage lautet wie folgt.

Das Buch ist auf Russisch geschrieben. Die Entwickler sagen, dass die Übersetzung ins Englische in Arbeit ist und dann auf Chinesisch erscheinen wird. Ich bin sicher, dass nur Erklärungen übersetzt werden; niemand wird den Quellcode anfassen.

Viele Programmierer geben von Natur aus verständliche Namen für Variablen aus ihrer Sprache, zum Beispiel hier auf der Seite traf ich massiv (masiv), Koef und sogar MuH_IIIuPuHa_KaHaJIa. Beim Durchblättern eines Lehrbuchs stieß ich auf den folgenden Code:




Was sagt ein Bewohner von Chinatown, wenn er sich die Tipp-Variable ansieht? Wir wissen, was es ist, aber was wissen die anderen?

( Gefunden hier: https://book.mql4.com/ru/trading/orderclose )
 
Parabellum:
Die Frage lautet wie folgt.

Das Buch ist auf Russisch geschrieben. Die Entwickler sagen, dass die Übersetzung ins Englische in Arbeit ist und dann auf Chinesisch erscheinen wird. Ich bin sicher, dass nur Erklärungen übersetzt werden; niemand wird den Quellcode anfassen.

Viele Programmierer geben von Natur aus verständliche Namen für Variablen aus ihrer Sprache, zum Beispiel hier auf der Seite traf ich massiv (masiv), Koef und sogar MuH_IIIuPuHa_KaHaJIa. Beim Durchblättern eines Lehrbuchs stieß ich auf den folgenden Code:




Was sagt ein Bewohner von Chinatown, wenn er sich die Tipp-Variable ansieht? Wir wissen, was es ist, aber was wissen die anderen?

( Gefunden hier: https://book.mql4.com/ru/trading/orderclose )

Danke für den Hinweis!
Die Namen der Variablen in den Beispielen werden sich natürlich nicht berühren - im Chinesischen zum Beispiel verwendet der Quellcode keine Hieroglyphen, sie haben es auf jeden Fall mit dem lateinischen Alphabet zu tun. Um die Bedeutung dieser Variable zu verstehen, muss der "Einwohner von Chinatown" nur den Kommentar lesen. Auch die Bewohner englischsprachiger Länder werden das Wort Tip nicht als "Typ" wahrnehmen. Denn "type" würde im Englischen "Typ" heißen. Und Tip heißt "Tipp" oder sogar "Hinweis", was sie aber nicht daran hindert, die Codes der russischsprachigen Entwickler zu verstehen. ))
 

Aber ich denke, ein Muttersprachler sollte sich trotzdem die Namen der Variablen ansehen. Um nicht auf eine Harke zu treten. Was ist, wenn die Variable Tip - ihr Klang ist der gleiche wie der des russischen Wortes mit drei Buchstaben, das in der Mitte den Buchstaben U (.u.) hat. Und wenn es nicht so ist? Das würde in einem Buch nicht gut aussehen.

Es könnte einfacher und korrekter sein.

int _OrdetType=OrderType();

if ( _OrdetType > 1 ) ....

 

Man geht davon aus, dass der Leser noch ein wenig nachdenken wird...

 

Hier https://book.mql4.com/ru/build/lots fehlen die Teilungszeichen

Es gibt

Lots_New=MathFloor(Free*Percent100One_Lot/Step)*Step;// Berechnen

Wir brauchen

Lots_New=MathFloor(Free*Percent/100/One_Lot/Step)*Step;// Berechnen


Es ist ein bisschen umständlich, ich glaube, ich kann den Code sehen. Ich möchte ein Stück davon nehmen, aber nicht alles. D.h. ich kopiere, was ich im Puffer sehe und füge es in den Text meines Programms ein. Sie wird jedoch nicht korrekt eingefügt. Der gesamte Code wird in einer Zeile gespeichert. Das Zeilenende des Codes im Buch und im MQL-Editor stimmt höchstwahrscheinlich nicht überein

 

hier eine weitere kleine Änderung.

https://book.mql4.com/ru/build/trading

Es gibt

switch() wird die Kontrolle an das Etikett case 10 (Block 2-3) übergeben.


Bedarf

.... (Block 2).

 
Prival:

Hier https://book.mql4.com/ru/build/lots fehlen die Teilungszeichen

Es gibt

Lots_New=MathFloor(Free*Percent100One_Lot/Step)*Step;// Berechnen

Wir brauchen

Lots_New=MathFloor(Free*Percent/100/One_Lot/Step)*Step;// Berechnen


Es ist ein bisschen umständlich, ich glaube, ich kann den Code sehen. Ich möchte ein Stück davon nehmen, aber nicht alles. D.h. ich kopiere, was ich im Puffer sehe und füge es in den Text meines Programms ein. Sie wird jedoch nicht korrekt eingefügt. Der gesamte Code wird in einer Zeile gespeichert. Das Zeilenende des Codes im Buch und im MQL-Editor stimmt höchstwahrscheinlich nicht überein


Ja, es handelt sich um dieselben Formatierungsprobleme. Wir werden es morgen reparieren.

Danke, dass Sie den Fehler gefunden haben.

Für alle fertigen Codes gibt es authentifizierte Dateien. Es wird davon ausgegangen, dass der Code in den Dateien korrekt ist. Sie kann übrigens auch als Nachschlagewerk verwendet werden, um nach Tippfehlern und Ungenauigkeiten zu suchen.

 
Prival:

hier eine weitere kleine Änderung.

https://book.mql4.com/ru/build/trading

Es gibt

switch() wird die Kontrolle an das Etikett case 10 (Block 2-3) übergeben.


Bedarf

.... (Block 2).



Eine Korrektur ist hier nicht erforderlich. Alle Blöcke haben einen Start- und einen Endpunkt. In diesem Fall ist 2 der Anfang und 3 das Ende.

Trotzdem danke:)

Grund der Beschwerde: