Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Wie muss man sich einen Artikel vorstellen?! Ich nehme meinen Quellcode aus KB und beginne in dem Artikel zu beschreiben, warum ich mich entschieden habe, ein Makro an dieser Stelle anzuwenden und warum es genau so ist?
Für jede Arbeit in KB gibt es einen Diskussionsstrang. Dort können Sie Fragen zu den Quellen stellen.
Wie muss man sich einen Artikel vorstellen?! Ich nehme meinen Quellcode aus KB und beginne in dem Artikel zu beschreiben, warum ich mich entschieden habe, ein Makro an dieser Stelle anzuwenden und warum es genau so ist?
Für jede Arbeit in KB gibt es einen Diskussionsstrang. Dort können Sie Fragen zu den Quellen stellen.
Zum Beispiel schlage ich hier überhaupt keine Hohlräume ab).
Es wäre nicht schlecht, diese Dinge zu beschreiben!
Zum Beispiel hier, wo ich überhaupt nicht hohl bin)
Es wäre schön, wenn man diese Dinge beschreiben könnte!
Dies ist ein mehrzeiliges Makro mit fünf Eingabeparametern. Schauen Sie sich den Text an, mit welchen Parametern es aufgerufen wird.
Es erzeugt entsprechende Methoden mit den Namen MT4OrderTicket, MT4OrderClosePrice, usw. Die Methoden sind zu 95% identisch im Text und es gibt viele von ihnen. Um nicht ein riesiges Copy-Paste zu machen, bei dem sich leicht ein Fehler einschleichen kann, wird ein Makro erstellt. Alles ist kompakt und sofort sichtbar.
Darüber hinaus unterstreicht dieser Code, dass die Funktionen zu 95 % identisch sind. Das heißt, wenn man ihn liest, erkennt man das sofort. Wenn Sie jedoch klassisch schreiben würden, könnten Sie eine solche Schlussfolgerung nur ziehen, indem Sie den Code von 20 Methoden (es sind so viele) lesen und analysieren. Und das bereitet große Kopfschmerzen. Und so sind alle 20 Methoden auf einem Bildschirm und es wird betont, dass die Methoden fast übereinstimmen. Und nur die Eingabeparameter der Makros verraten die Unterschiede. Man achtet beim Lesen auf diese Unterschiede und nicht auf den Flitter. D.h. der Code zeigt sofort die Hauptsache - den Kern und nicht eine profane Hülle.
Die Dinge, die er tut, sind ungewöhnlich. Das ist wertvolles Wissen, das mit der Öffentlichkeit geteilt werden sollte!
Nun, er teilt es ja auch. Einige seiner Beiträge und Beschreibungen des Codes in KB sind informativer als die Hälfte der Artikel hier.
Ich verstehe auch nicht, warum es ein künstliches Nachschlagewerk gibt, wenn es von ihm Live-Antworten auf alle gestellten Fragen gibt.
Es wäre besser, wenn Renat seine Gewohnheit ablegen würde, ihn für jede harte Aussage zu bannen.
Würde der Entwickler einen zusätzlichen Befehl "eine Kopie der Datei, ersetzen Makros ohne Kompilierung und öffnen Sie die Datei", um die Schaltfläche "Kompilieren" im Editor zu machen. Speziell für das Studium von Makros aus fxsaber.
Oder Sie können den Befehl im Kontextmenü verwenden. Setzen Sie die Maus auf den Makroaufruf, wählen Sie den Befehl aus, und der nach der Makroersetzung erhaltene Code wird in den Puffer kopiert.
Im Allgemeinen können Makros wie folgt verstanden werden:
1. Es ist notwendig, den Makronamen von seinem Wert zu trennen. Zuerst in der Zeile geht #define, dann ein Leerzeichen, danach dieser Name (er kann mit Parametern sein), dann ein weiteres Leerzeichen oder Übergang zu einer neuen Zeile und der Wert des Makros.
2. Wir sehen, wie das Makro im Code aufgerufen wird, was seine Parameter sind. Kopieren Sie den Wert des Makros und ersetzen Sie die Parameter durch die Parameter, mit denen es irgendwo im Code aufgerufen wird.
3. an der Stelle, an der das Makro im Code aufgerufen wird, ersetzen Sie es durch das, was wir in Schritt 2 erhalten haben.
Ungefähr so.
Es gibt einige Dinge, die du wissen musst: \ - es bedeutet Fortsetzung in einer neuen Zeile. ## - es ist eine Verbindung von Zeilen.Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien
Merkmale der Sprache mql5, Feinheiten und Techniken der Arbeit
fxsaber, 2017.12.05 11:39 pm.
Im Debug-Modus können Sie den Wert, den eine Funktion oder ein Ausdruck zurückgibt, nicht herausfinden.
Zum Beispiel
Zum Beispiel, was die hervorgehobenen Funktionen zurückgeben.
Ich verwende (nicht nur im Debug-Modus) diesen Weg
Ergebnis
Ich habe es als mqh formatiert.
Ein plattformübergreifendes Skript als Beispiel
Nehmen wir an, wir möchten wissen, was OrderClosePrice() in diesem Code zurückgibt. Gehen wir wie folgt vor
Und hier ist der Code, wenn Sie fast alles wissen wollen (das passiert, wenn Sie überhaupt nicht verstehen, wo das Problem in Ihrem eigenen Code oder dem eines anderen liegt).
D.h. jede Stelle, deren Wert Sie sehen wollen, setzen wir in _P() ein. Das Ergebnis
Oder, zum Beispiel, gibt es einen solchen Ausdruck
Wir müssen schnell herausfinden, warum 19602 ausgegeben wird. Wir fügen die Teile, die wir schnell herausfinden wollen, in unser Makro ein
Und wir können das Ergebnis der Berechnung Schritt für Schritt sehen
ZY Statt eines Stücks Artikel...
Es gibt einen Fehler, der erste Symbolprozess ist mit Positionsindex 0, der nächste ist mit Positionsindex 2. Dir fehlt der Positionsindex 1 und deine Schleife wird nur os_total-1 mal ausgeführt.
In dieser gibt es den gleichen Fehler wie zuvor.
Außerdem vermischen Sie Funktionen für die Bearbeitung von offenen Aufträgen und die Auswahl der Historie. Wenn Sie beabsichtigen, mit offenen Aufträgen zu arbeiten, besteht keine Notwendigkeit, HistorySelect() zu verwenden.
Übrigens demonstrieren diese Fehler gut das Problem mit ohne Makro. Es ist schwer oder unmöglich zu debuggen.
The most strongest criticism of using #define is the fact that macro substitutions do not allow for code debugging. I agree with this, although, as fxsaber says, "A reliably fixed patient requires no anesthesia debugged macro requires no debugging".
Danach habe ich aufgehört zu lesen, sorry.
Neuer Artikel LifeHack für Trader: Mischen von ForEach mit Defines (#define) ist veröffentlicht worden:
Autor: Wladimir Karputow
vielleicht sollten Sie 2 weitere Defines für mql4 hinzufügen, OrderCalcProfit() und OrderCalcMargin()