- Vorhersage von I
- Weniger Code, mehr Action... einen EA schreiben
- Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 6.
Hallo.
Wie viel ist zu viel? Ist es so viel, dass es nicht in Dateien aufgeteilt werden kann?
- 2016.03.20
- www.mql5.com
Hallo.
Zwei Grundprinzipien:
1. Unterteilen Sie den Code in Funktionen. Eine Funktion sollte mehr oder weniger logisch abgeschlossen sein und nicht mehr als einen Bildschirm umfassen, den man auf einen Blick erfassen kann.
2. Reduzieren Sie die Anzahl der globalen Variablen. Von den globalen Variablen sollten nur Parameter verwendet werden, die sich während des Programmablaufs nicht ändern.
...und mehr:
3. objektorientierte Programmierung.
4. Aufteilung des Codes in mehrere Dateien (dies erschwert die Fehlersuche ein wenig, hat aber einen Sinn).
Es ist ganz einfach: Wir müssen die einzelnen Funktionen genau dokumentieren und sie in einer separaten Datei zuordnen. Die Hauptdatei wird sofort kleiner und besser lesbar
Ich habe immer eine mq4/mq5-Datei und eine Reihe von mqh-Dateien mit Klassen, für jede Klasse eine eigene Datei. Im Allgemeinen wird dies in der industriellen Entwicklung so gehandhabt. Keine kilometerlangen Dateien, in denen alles durcheinander ist.
Manchmal kann man ein Meisterwerk sehen, bei dem der gesamte EA in OnTick verpackt ist, mit den gleichen Codestücken für das Öffnen von Aufträgen, die jeweils 20 Mal in diesem hässlichen Blatt enthalten sind. Ich möchte sofort den Kotzbeutel herausnehmen ))
Hallo.
Schreiben Sie keine Funktionen, die immer konstant sind und sich nie ändern, in diesem Stil
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()); } } } } } }
Schreiben Sie sie kurz und bündig, dann sieht sie sowieso niemand an, und sie nehmen nur halb so viel Platz ein.
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()); } }}}}
Kommentieren Sie den Code immer, wofür dieser Teil des Codes verantwortlich ist, das ist nicht schwer, und jetzt werden Sie immer wissen, was der Code ist, und reduzieren Sie die Zeit, ihn zu studieren
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 die ganze Zeit den Code, wofür dieser Teil des Codes verantwortlich ist, das ist nicht schwer, und jetzt werden Sie immer wissen, was der Code ist, und reduzieren Sie die Zeit, ihn zu studieren
Der Kommentar muss die Hälfte des Textes des Programms einnehmen
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 in der Revision wird immer wissen, was der Code, und reduzieren die Zeit, um es zu studieren
Durch das Umstellen von Klammern wird der Rückstand nicht geringer. Bevor Sie Ratschläge erteilen, sollten Sie Ihr Niveau zumindest auf ein durchschnittliches Niveau anheben.
Der Kommentar sollte die Hälfte des Programmtextes einnehmen
Nein, dann sind 90 % des Codes Kommentare. Und Sie brauchen so viel sinnlosen und schlecht lesbaren Code wie möglich, damit Sie mehr Kommentare einfügen können!
Auch Ihre Ideen sind bemerkenswert. Sie sollten öfter über sie sprechen
Das wollte ich schon lange mal fragen. Wenn Sie in mcl5 Indikatordaten aus Include-Dateien und Klassen erhalten, wird die Optimierung dann schneller sein?
Das heißt, im Code des Expert Advisors selbst werden keine Indikator-Handles aufgerufen.
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.