English Русский 中文 Español 日本語 Português 한국어 Français Italiano Türkçe
Besser Programmieren (Teil 04): Wie man ein schnellerer Entwickler wird

Besser Programmieren (Teil 04): Wie man ein schnellerer Entwickler wird

MetaTrader 5Beispiele | 30 August 2021, 09:20
657 0
Omega J Msigwa
Omega J Msigwa

Einführung

Eine schnellere Entwicklung ist der Traum eines jeden Entwicklers. Niemand möchte eine ganze Woche an einem Programm oder einem Stück Code arbeiten oder zu viele Stunden, wenn nicht sogar Tage, damit verbringen, Dinge herauszufinden, wenn wir im Programmierprozess stecken bleiben.

Schneller entwickeln

Jeder Programmierer möchte schneller sein

  • Vielleicht haben Sie ein MQL5-Codierungsvideo auf YouTube gesehen, dem Sie nur schwer folgen konnten, weil Sie zu langsam sind, um mit der Geschwindigkeit des Lehrers mitzuhalten, und Sie möchten selbst auf dieses Niveau kommen.
  • Vielleicht haben Sie einige Entwickler gesehen, die mit einer unglaublichen Geschwindigkeit auf der Tastatur einen komplexen Algorithmus in wenigen Minuten schreiben können, für den Sie Stunden, wenn nicht sogar Tage brauchen würden.
  • Oder vielleicht möchten Sie schneller und effektiver programmieren können, so dass Sie Aufträge als Freelancer schneller abliefern können und Ihren Mitbewerbern voraus sind.
  • Oder vielleicht möchten Sie Ihren Ehepartner/Partner durch Ihre Supermann-Fähigkeiten an der Tastatur beeindrucken, indem Sie in der Lage sind, komplexe Algorithmen mit weniger oder gar keinen Fehlern in kürzester Zeit zu programmieren.
  • Manchmal möchten Sie vielleicht in der Lage sein, schnelle Updates für Produkte auf dem Markt zu liefern und Bugs und Fehler zu beheben, die Ihre Kunden in Ihrem E-Mail- oder MQL5-Posteingang verschickt haben.

Passen Sie gut auf und nehmen Sie Stift und Notizbuch zur Hand, denn ich werde Ihnen zeigen, wie Sie Ihre Programmiergeschwindigkeit erhöhen und gleichzeitig qualitativ hochwertige Arbeit für Sie und Ihre Kunden produzieren können. 

Sie brauchen nichts von dem, um Ihr maximales Geschwindigkeitspotenzial zu erreichen:

    • Umfangreiche Erfahrung im Programmieren.
    • Die beste mechanische Tastatur.
    • Ein gutes Muskelgedächtnis beim Tippen auf der Tastatur.
    • Viele Gigabytes Arbeitsspeicher, viele Kerne, eine leistungsstarke GPU auf Ihrem PC.

Schnellerer Entwickler vs. Schnellerer Programmierer

Bevor ich anfange, die Tasten zu drücken, wäre es wohl besser, den Unterschied zwischen einem Entwickler und einem Programmierer zu erklären.

Entwickler Programmierer
Entwickler sind erfahrenere Codeschreiber. Sie sind für so ziemlich alles im Projekt verantwortlich, wie zum Beispiel:

Design, Arbeitsplanung, Codierung und alles andere, was mit dem Projekt zu tun hat.                                                                                                                                                                                                                                                                                                                            
Jeder, der etwas Code schreiben kann, wird von Menschen außerhalb der Tech-Branche oft als Programmierer bezeichnet. In der Regel werden Programmierer jedoch als die am wenigsten ausgebildeten oder erfahrenen Programmierer (Entwickler) angesehen. Diese Personen verfügen nicht über die gleichen algorithmischen Kenntnisse wie ein Programmierer oder Entwickler, da sie oft Anfänger in diesem Bereich sind und nur eine Programmiersprache beherrschen. Programmierer werden in der Regel mit der Aufgabe betraut, aussagekräftigen Code zu schreiben, der von Entwicklern leicht delegiert werden kann.

Als Programmierer müssen Sie nicht alles innerhalb des Projekts wissen. Der Kunde von einem Freiberuflichen möchte zum Beispiel eine Trailing-Stop-Funktion in seinen EA einbauen. Ein Programmierer kann diese Funktion direkt programmieren, sie innerhalb der Funktion OnTick() aufrufen und sie dann ein- oder zweimal auf dem MetaTrader 5 testen, um sicherzustellen, dass sie funktioniert, und sie dann an den Kunden zurückschicken.

In diesem Artikel werden wir uns mit dem weiter gefassten Begriff des Entwicklers befassen — wie Sie schneller werden können, wenn Sie Ihre Systeme entwickeln. Wir werden alles zwischen Design, Arbeitsethik, zu verwendenden Werkzeugen, Kodierung, Debugging, etc. untersuchen. 


WIE MAN ALS ENTWICKLER SCHNELLER WIRD

01: Bugs und schlechte Architektur vermeiden

Entwickler denken, dass sie viel Zeit mit dem Schreiben von Code verbringen, aber in Wirklichkeit verbringen wir die meiste Zeit damit, Code zu lesen, zu debuggen und herauszufinden, was zu tun ist.

Es kann drei Stunden dauern, einen Code zu debuggen, an dem Sie 30 Minuten gearbeitet haben. Je mehr Fehler Sie haben, desto länger brauchen Sie, um Ihr Projekt fertig zu programmieren. Sie wissen jetzt, dass Fehler unseren Entwicklungsprozess verlangsamen. Das Beste ist also, sie so weit wie möglich zu vermeiden.

Schlechte Architektur + Bugs = das ist das Ende der Welt (nur ein Scherz)

Bugs in einem Projekt zu haben ist schlimm, aber sie nicht zu debuggen oder leicht zu übersehen, nur weil die Architektur schlecht ist, ist noch schlimmer. Sehen Sie sich nur dieses Stück Code aus einem EA an, das mir von jemandem gegeben wurde, um die Fehler zu beheben.

ouble NPB=ND(m_account.Balance()*PortionPC,2);
if(CbT==0||PortChange<0||(PortChange>0&&NPB>PortionBalance))PortionBalance=NPB;
if(Pb+Ph<0)DrawDownPC=-(Pb+Ph)/PortionBalance;
if(!FirstRun&&DrawDownPC>=MaxDDPercent/100)
{       ET(A,displayColorLoss,"Equity Stop Loss Reached");
        if(PlaySounds)PlaySound(AlertSound);
        return(0);
}
if(-(Pb+Ph)>MaxDD)MaxDD=-(Pb+Ph);
MaxDDPer=MathMax(MaxDDPer,DrawDownPC*100);
if(SaveStats)Stats(false,TimeCurrent()<NextStats,PortionBalance,Pb+Ph);

//+-----------------------------------------------------------------+
//|                                                                 |
//+-----------------------------------------------------------------+
double StepAB=InitialAB*(1+StopTradePercent),StepSTB=m_accout.Balance()*(1-StopTradePercent), NextISTB=StepAB*(1-StopTradePercent);
if(StepSTB>NextISTB){   InitialAB=StepAB;
        StopTradeBalance=StepSTB;       }
        
double InitPortion=StopTradeBalance*PortionPC;
if(PortionBalance<InitPortion)
{       if(CbT==0)
 {      AllowTrading=false;
        if(PlaySounds)PlaySound(AlertSound);
        Print("Portion Balance dropped below stop trade percent");
        MessageBox("Reset EA, account balance dropped below stop trade percent on "+Symbol()+Period()," Warning",48);
        return(0); }
        else if(!ShutDown&&!RecoupClosedLoss)
        {       ShutDown=true; if(PlaySounds)PlaySound(AlertSound);
                Print("Portion Balance dropped below stop trade percent");
                return(0);              }
}

Sehen Sie sich nur an, wie schlecht die Architektur ist. Es ist kein Wunder, dass es Fehler im Code gibt. Wie Sie sehen können, ist der Code auf den ersten Blick schwer zu verstehen, selbst wenn Sie derjenige sind, der den Code überhaupt geschrieben hat.

Sie werden so viel Pech haben (genau wie ich), wenn jemand Sie als Freiberufler anstellt, um Fehler zu beheben, dann sehen Sie mehr als 10000 Zeilen Code, die alle wie der obige Code aussehen (Es ist jetzt mehr als 3 Wochen her und ich bin immer noch nicht fertig).

Was ich damit sagen will, ist Folgendes. Seien Sie immer konsistent mit Ihren Codierungsmustern, der Art und Weise, wie Sie Funktionen benennen, Variablen erstellen und so weiter, wählen Sie das, womit Sie sich wohlfühlen und stellen Sie sicher, dass es für Sie und alle anderen einfach zu benutzen ist.


02: Lernen Sie schnelles Debuggen

Wir haben im ersten Punkt gesehen, dass Bugs uns behindern und unsere Zeit auffressen. Debugging ist ein langes Thema, um es in diesem Artikel zu behandeln. Ich empfehle jedem, den Artikel Zur Fehlerbehebung von MQL5-Programmen (Debugging) zu lesen, um mehr über das Debugging zu erfahren.

Um schnell zu sein, müssen wir lernen, wie man sehr schnell debuggt, hier sind einige der schnellen Tipps.

01: Verwenden Sie im MetaEditor den CodeStyler .

Dies ist wie kleine Schritte in Richtung Debugging, dieses erstaunliche Werkzeug kann nicht selbst debuggen, aber es kann helfen, das Aussehen unseres Codes zu ändern und den Code klar und einfach zu lesen.

02: Drucken und kommentieren Sie mehr.

Um herauszufinden, was nicht funktioniert, müssen wir mehr Code in verdächtigen Bereichen drucken und kommentieren.

Finden Sie Fehler immer in Bereichen, in denen sie nicht gefunden werden können.

03: Versuchen Sie nicht, etwas zu ändern, bevor Sie nicht genau verstehen, wie es funktioniert.

Ich bin mir sicher, dass es Ihnen schon einmal passiert ist, dass Sie einen Teil des Codes gelöscht haben, um Ihr System zum Laufen zu bringen, und dann später festgestellt haben, dass der gelöschte Code nichts mit den Fehlern in Ihrem System zu tun hat, so dass Sie nun erneut Zeit aufwenden müssen, um Code zu schreiben, und es gibt keine Garantie dafür, dass Sie Ihr System nicht im Laufe des Prozesses anderen Fehlern aussetzen. 

Bevor Sie etwas löschen, lesen Sie in der Dokumentation nach, ob es sich um eine integrierte Funktion oder Methode handelt. Wenn Sie sich nicht sicher sind, fragen Sie im Forum danach. Ich persönlich würde den gesamten Code in die Textdatei kopieren, wenn ich mir nicht sicher bin, ob ich das Richtige tue. Auf diese Weise kann ich flexibel sein, wenn ich den Code ändere und neue Dinge ausprobiere, und auf den primären Code verweisen, wenn ich herausgefunden habe, wo der Fehler liegt.


03: Bibliotheken werden für einen bestimmten Zweck erstellt

Wenn man mit einer Bibliothek arbeitet, ist es wichtig, die zur Verfügung gestellten Klassen für den beabsichtigten Zweck zu verwenden. Wenn wir versuchen, unseren Weg zu erzwingen, weil wir zu faul sind, etwas sauber zu implementieren, ist das ein sicherer Weg in die Katastrophe.

Wenn Sie die Standardbibliothek verwenden, ist es eine gute Praxis, Teile der Bibliothek auf die beste Art und Weise zu instanziieren und zu referenzieren, die klar, einfach und konsistent ist, und wahrscheinlich die Art und Weise, die von professionellen Bibliotheksentwicklern empfohlen wird.

Zum Beispiel, anstatt die Bibliothek Trade Classes auf faule Art und Weise und mit unklaren Namen zu referenzieren, die nicht einmal konsistent sind, wie dieser hier,

#include <Trade\AccountInfo.mqh> //Class for working with trade account properties
#include <Trade\SymbolInfo.mqh>  //Class for working with trade instrument properties
#include <Trade\OrderInfo.mqh>   //Class for working with pending order properties
#include <Trade\OrderHistoryInfo.mqh>  //Class for working with history order properties
#include <Trade\PositionInfo.mqh>   //Class for working with open position properties
#include <Trade\DealInfo.mqh>       //Class for working with history deal properties
#include <Trade\Trade.mqh>          //Class for trade operations execution
#include <Trade\TerminalInfo.mqh>   //Class for getting the properties of the terminal environment
//--- 
CAccountInfo       ac;
CSymbolInfo        symb;
COrderInfo         orders;
CHistoryOrderInfo  hist_orders;
CPositionInfo      pos;
CDealInfo          _clos;
CTrade             my_trade;
CTerminalInfo      info;

Stattdessen referenzieren Sie alle Bibliotheken in einer konsistenten, leicht verständlichen Weise, und der beste Weg, dies zu tun, ist, auf sie im Referenzformat der Mitglieder der Klassen m_*** - das steht für Mitglieder einer bestimmten Klasse zu verweisen,

so wie hier:

#include <Trade\AccountInfo.mqh> //Class for working with trade account properties
#include <Trade\SymbolInfo.mqh>  //Class for working with trade instrument properties
#include <Trade\OrderInfo.mqh>   //Class for working with pending order properties
#include <Trade\OrderHistoryInfo.mqh>  //Class for working with history order properties
#include <Trade\PositionInfo.mqh>   //Class for working with open position properties
#include <Trade\DealInfo.mqh>       //Class for working with history deal properties
#include <Trade\Trade.mqh>          //Class for trade operations execution
#include <Trade\TerminalInfo.mqh>   //Class for getting the properties of the terminal environment
//--- 
CAccountInfo       m_account;  //members of account info
CSymbolInfo        m_symbol;   //members of symbolInfo
COrderInfo         m_order;    //mambers of OrderInfo
CHistoryOrderInfo  m_orderhistory; //members of Orderhistory info
CPositionInfo      m_position; //members of position info
CDealInfo          m_deal;     //members of deal info
CTrade             m_trade;    //members of trade info
CTerminalInfo      m_terminal; //members of terminal info

Vergessen Sie auch nicht, am Ende der Bibliotheksreferenz Kommentare einzufügen, damit Sie beim nächsten Mal, wenn Sie beim Programmieren darauf zugreifen, daran erinnert werden, worum es in der Referenz geht. 

Um unsere Programmierfähigkeiten zu beschleunigen, sollten wir lieber fertige Standardbibliotheken für unsere Aufgaben verwenden, als zu versuchen, alles von Grund auf neu zu implementieren. Diese Bibliotheken wurden von professionellen Programmierern erstellt, um unseren MQL5-Code DRY (Don't repeat yourself - nichts wiederholen) zu machen und den Entwicklungsprozess zu beschleunigen. Ich empfehle jedem, sie zu verwenden, ganz zu schweigen von anderen guten Bibliotheken in der Codebasis und einigen auf dem Markt. 

Was glauben Sie, wer von diesen beiden schneller programmiert?

Der Alles-Selbermacher (wahrscheinlich ein NOOB oder Neuling) Nutzer von Standardbibliotheken, Programmierer
double SymbolAsk(string symbol)
{
        if (symbol == "") symbol = Symbol();

        return SymbolInfoDouble(symbol, SYMBOL_ASK);
}

double SymbolBid(string symbol)
{
        if (symbol == "") symbol = Symbol();

        return SymbolInfoDouble(symbol, SYMBOL_BID);
}

int SymbolDigits(string symbol)
{
        if (symbol == "") symbol = Symbol();

        return (int)SymbolInfoInteger(symbol, SYMBOL_DIGITS);
}

double SymbolLotSize(string symbol)
{
        if (symbol == "") symbol = Symbol();

        return SymbolInfoDouble(symbol, SYMBOL_TRADE_CONTRACT_SIZE);
}

double SymbolLotStep(string symbol)
{
        if (symbol == "") symbol = Symbol();

        return SymbolInfoDouble(symbol, SYMBOL_VOLUME_STEP);
}

double SymbolMaxLot(string symbol)
{
        if (symbol == "") symbol = Symbol();

        return SymbolInfoDouble(symbol, SYMBOL_VOLUME_MAX);
}

double SymbolMinLot(string symbol)
{
        if (symbol == "") symbol = Symbol();

        return SymbolInfoDouble(symbol, SYMBOL_VOLUME_MIN);

}


#include <Trade\SymbolInfo.mqh>
CSymbolInfo   m_symbol; 

input string Input_symbol = "EURUSD";
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
     string symbol = Input_symbol=="" ? Symbol() : Input_symbol;
      m_symbol.Name(symbol); //Sets symbol name for our CSymbolInfo class object
//---
   return(INIT_SUCCEEDED);
  } 
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
      m_symbol.RefreshRates(); //Refresh to Get the Last quote 
      double    SymbolAsk = m_symbol.Ask();
      double    SymbolBid = m_symbol.Bid();
      double    SymbolDigits = m_symbol.Digits();
      double    SymbolLotSize = m_symbol.ContractSize();
      double    SymbolLotStep = m_symbol.LotsStep();
      double    SymbolMaxLot = m_symbol.LotsMax();
      double    SymbolMinLot = m_symbol.LotsMin();
  }



















Nutzer von Standardbibliotheken sind 3x produktiver als die, die sie vermeiden, und ganz abgesehen davon haben sie weniger Code in ihren Programmen, was weniger Fehler bedeutet.


04: Vermeiden Sie verschachtelten Code

Ich hoffe, Sie haben in Ihrer Laufbahn als Programmierer schon einmal so etwas wie den folgenden Code in einem EA gesehen

        if(LbT>0)
        {       BEb=ND(BEb/LbT,Digits());
                if(BCa<0)BEb-=ND(BCa/PipVal2/(LbB-LbS),Digits());
                if(Pb>PbMax||PbMax==0)PbMax=Pb;
                if(Pb<PbMin||PbMin==0)PbMin=Pb;
                if(!TradesOpen)
                {       FileHandle=FileOpen(FileName,FILE_BIN|FILE_WRITE);
                        if(FileHandle>-1)
                        {       FileWriteInteger(FileHandle,TbF);
                                FileClose(FileHandle);
                                TradesOpen=true;
                                if(Debug)Print(FileName+" File Written: "+TbF);
                        }
                }
        }

Es mag einfach sein, wenn Sie diesen Codeblock schreiben, aber es wird nicht einfach sein, ihn zu lesen, wenn Sie ihn debuggen wollen. Die Wahrscheinlichkeit ist groß, dass Sie einige der Variablen, wenn nicht sogar alle, vergessen werden, sodass Sie sich erneut auf sie beziehen müssen. Denken Sie nur daran, wie zeitraubend diese Tätigkeit ist!

Wenn Sie komplexe Algorithmen schreiben, werden die Leute Sie hassen und Sie werden sich selbst verwirren.

Die gesamte Logik an einer Stelle zu platzieren, ist widerlich, und zu viele Operationen in einer einzigen Funktion zu haben, verlangsamt den Entwicklungsprozess, da wir unseren Code sorgfältig anordnen und sicherstellen müssen, dass alles funktioniert.

Wenn Sie bestimmte Arten von Operationen benötigen, sollten Sie unabhängige Funktionen erstellen, die diese nur ausführen können, so dass es für Sie einfach ist, eine Sache zu beenden und dann zur anderen überzugehen.


05: Vermeiden Sie Ablenkungen.

"Seien Sie sich bewusst, wann Sie abgelenkt werden. Sie wissen, dass es eine Ablenkung ist, wenn Sie aufhören zu tun, was Sie eigentlich tun sollten, und sich dabei ertappen, wie Sie über Dinge nachdenken, die keinen Wert haben."
— Beverly R. Imes

Stellen Sie Ihr Telefon auf lautlos (wenn Sie es nicht überhaupt ausschalten) und holen Sie es nicht zurück, um Ihre Likes und Shares auf Ihren Social Media-Fotos zu überprüfen. Sie werden so ineffektiv sein, wenn Sie das tun. Wenn Sie sich in einer lauten, störenden Wohnung befinden, dann suchen Sie sich einen Ort, an dem Sie sich hinsetzen und Ihr Projekt beenden können.

Wenn es Ihnen wichtig genug ist, werden Sie alle Ablenkungen ausschalten: Schließen Sie die Tür, schalten Sie Ihr Telefon aus, schalten Sie die sozialen Medien ab, konzentrieren Sie sich auf Fokus und erledigen Sie die Arbeit.

Ich glaube, das ist die größte Herausforderung, die wir als Entwickler in der modernen Welt bewältigen müssen, in der man nur einen Klick von verführerisch schönen Models auf Instagram und süßen Katzenvideos auf Snapchat entfernt ist.

Wenn es bei einem Projekt schwierig wird und man den richtigen Code nicht findet, ist es verlockend, eine Pause einzulegen und zu schauen, was in den sozialen Medien passiert, oder einfach nur rauszugehen und zu entspannen.

Es ist nicht so, dass ich etwas gegen Pausen und Chillen mit Freunden habe. Nein, verstehen Sie mich nicht falsch, ich programmiere nicht 24/7, obwohl ich zu viele MQL5- und Webentwicklungsprojekte habe, die auf mich warten. Aber ich glaube, dass sich jeder an einen Zeitplan halten sollte, der für ihn funktioniert. Wenn es nicht an der Zeit ist, die sozialen Medien zu checken, tun Sie es nicht. Wenn es Zeit zum Programmieren ist, dann nur bis zum Ende der Sitzung (egal wie verwirrend oder schwierig die Dinge werden). Ich würde es vorziehen, die Programmiersitzungen zu verlängern, wenn ich danach nichts Wichtiges zu tun hätte.

Abgelenkte Programmierer können 5 Stunden oder länger etwas programmieren, was konzentrierte Programmierer 45 Minuten lang tun können.


06: Dokumentation lesen und lernen

Nachdem Sie die Lösung für Ihr Problem im Forum gefunden haben, kopieren Sie sie nicht und fügen Sie sie überstürzt ein, weil Sie denken, dass Sie Ihr Projekt auf diese Weise schneller fertigstellen (Ich habe dies in meinem ersten Artikel erwähnt). Stellen Sie sicher, dass Sie verstehen, wie Sie die Lösung selbst codieren müssen. Es ist schwer, mit kopiertem Code zu arbeiten, wenn etwas schief geht, besonders wenn er Fehler hat, weil man ihn persönlich nicht verstanden hat.

Ich ermutige jeden Programmierer, die Dokumentation mehrfach zu lesen, besonders bei Dingen, die wir noch nicht kennen oder mit denen wir noch nicht vertraut sind.

Wie erhöht sich dadurch unsere Entwicklungsgeschwindigkeit?

Je mehr man über die MQL5-Sprache weiß, desto komfortabler wird sie, und je komfortabler (einfacher) sie wird, desto schneller wird man als Programmierer sein. Es ist immer ein Kampf, den richtigen Code zu finden, um Ihre Idee effektiv in die Realität (Programm) zu bringen, hier wird die meiste Zeit verschwendet. Ich hoffe, Sie können sich vorstellen, wie schwer es ist, selbst einfache Dinge zu programmieren, wenn Sie nicht viel über eine bestimmte Tätigkeit wie das Programmieren von Indikatoren, Skripten, Expert Advisors usw. wissen. Hier kommt die Erfahrung ins Spiel.

Wie bekommt man also die Erfahrung? Meine Antwort ist immer einfach: Lernen und verschiedene Dinge ausprobieren.

Wer sich mit der Sprache MQL5 gut auskennt, hat unendlich viele Möglichkeiten, seine Idee in effektiven und sinnvollen Code umzusetzen. Man weiß über die Verwendung von


07: Stufenweises Wiederholung

"Der Mensch kann sich leichter an etwas erinnern oder etwas lernen, wenn es über einen längeren Zeitraum hinweg einige Male wiederholt wird (spaced presentation), als wenn es in einem kurzen Zeitraum wiederholt wird."
— Hermann Ebbinghaus

Auf diese Weise haben wir alles gelernt, was wir wissen, indem wir es immer und immer wieder getan haben, bis es uns zur zweiten Natur geworden ist. Unser Gedächtnis in unserem Gehirn ist begrenzt und behält nur das, was wir regelmäßig benutzen, wenn wir also etwas in unserem Gedächtnis behalten wollen, sollten wir es regelmäßig tun. Wir sollten lernen, dies zu unserem Vorteil zu nutzen.

Und wie?

Da einer der Gründe für unsere Langsamkeit unsere Unwissenheit in diesem bestimmten Bereich ist, sollten wir immer nach Bereichen suchen, die wir verbessern müssen (einige davon werden in diesem Artikel besprochen). Wenn wir diese Bereiche gefunden haben, sollten wir uns ständig bemühen, uns in diesen Bereichen zu verbessern, bis wir außergewöhnlich gut werden. Das gilt auch, wenn wir versuchen, eine bestimmte Fähigkeit zu erlernen und zu beherrschen, z. B. Maschinelles Lernen, Selbstlernende Algorithmen, usw.


08: Tastaturkürzel und MetaEditor-Einrichtung

Tastaturkurzbefehle

Tastaturkürzel machen Spaß und können viel Zeit sparen, wenn es darum geht, Code mit der Tastatur zu schreiben. Ich bin ein Profi auf diesem Gebiet und bringe Programmierern gerne meine produktiven Tastenkombinationen für MetaEditor bei.

Das Erlernen von Tastenkombinationen verändert das Leben, wenn es um die Eingabe von Code geht, und ich denke, dass die Verwendung der Tastatur anstelle der Maus von jedem Entwickler übernommen werden sollte, da wir die meiste Zeit auf der Tastatur verbringen, also müssen wir gut darin sein.

Hier sind ein paar meiner Lieblingstastenkombinationen auf einem Windows-PC (Für Mac und Linux). Ich bin mir nicht sicher, aber Mac-Nutzer können STRG durch COMMAND ersetzen;

TASTATURKÜRZEL VERWENDUNG
 F4 Umschalten zwischen MT5 und MetaEditor
 F7  Code kompilieren 
 CTRL+F7  Alle geöffneten Dokumente kompilieren 
 CTRL+C Ausgewählten Code kopieren 
 CTRL+V Ausgewählten Code einfügen  
 CTRL+X Ausgewählten Code löschen 
 CTRL+Z Änderungen im Code rückgängig machen  
 CTRL+Y Änderungen am Code wiederherstellen
 CTRL+A Gesamten Code auswählen 
 CTRL+END Cursor auf die letzte Codezeile in Ihrem Dokument setzen 
 CTRL+HOME Cursor auf die erste Zeile des Codes in Ihrem Dokument bewegen 
 SHIFT + Richtungstasten(LINKS,HOCH,RECHTS,RUNTER) Code in diese Richtung markieren   
 TAB Einrückung des ausgewählten Codes erhöhen 
 SHIFT+TAB Einrückung des ausgewählten Codes verkleinern  
 CTRL+ Backspace Das ganze Wort in einer Zeile löschen 
 HOME Den Cursor an den Anfang einer Zeile bewegen  
 END Cursor an das Ende einer Zeile verschieben  
 CTRL+ ? 
//--- Ein Code-Trennzeichen in die nächste Zeile einfügen
 CTRL+>
//+------------------------------------------------------------------+
//|   Fügt dies der aktuellen und den nächsten beiden Zeilen hinzu   | //+------------------------------------------------------------------+
 CTRL+"
// fügt zwei Schrägstriche an den Anfang einer Zeile    
 CTRL+, Styler auf das aktuelle Dokument anwenden  
 CTRL+F4  Schließen des aktuellen Dokuments 
 CRL +F5 Debugging der Verlaufsdaten starten/fortsetzen  
 CTRL+T Toolbox öffnen/verstecken 
 CTRL+D Navigator öffnen/ausblenden
 ALT+G  Zur Variablen-/Funktionsdeklaration gehen  
 WINDOWS+T Zum Navigieren von Anwendungen auf der Taskleiste, nur für den Fall, dass ich den Internet-Browser (CHROME) öffnen
 und nach einem Problem suchen möchte 
 CTRL+F  Das Suchfeld "Suchen" öffnen
 CTRL+S  Das aktuelle Dokument speichern 
 CTRL + Directions  Springen von Leerzeichen zu Leerzeichen (von Wort zu Wort) in diese Richtung
 CTR + +   Vorwärts navigieren
 CTRL+ -  Rückwärts navigieren 
 CTRL+SHIFT+U  Großschreiben des ausgewählten Codes (bei einem Wort) 
 CTRL+U  Ausgewählten Code (in Großbuchstaben) in Kleinbuchstaben umwandeln

MetaEditor Einstellungen

Es ist auch wichtig, die besten MetaEditor-Einstellungen zu haben, die das schnellere Schreiben von Code begünstigen. Schauen wir uns einige der Einstellungen an, die ich jedem empfehle, auszuprobieren.

Diese Kästchen sollten angekreuzt werden

  • Einfügen von () und Schließen von ], ', ], ". Dies hilft, Fehler zu vermeiden (unerwartetes Programmende, nicht geschlossenen Klammern), die bei zu vielen Codezeilen schwer zu finden sind.
  • Hervorheben von übereinstimmenden Klammern (Dies erinnert Sie daran, in welcher Funktion oder welchem Block Sie sich befinden).
  • Aktuelle Zeile hervorheben (Es kann verwirrend sein, an die Stelle zu gelangen, an der Sie das letzte Mal kodiert haben; wenn Sie diese Option aktivieren, gelangen Sie schnell dorthin, oder Sie müssen nur den Code scrollen und die aktuelle Zeile wird hervorgehoben).
  • Verlauf der Zwischenablage (um den Verlauf Ihrer Kopier- und Einfügevorgänge zu sehen, können Sie verschiedene Codezeilen kopieren und leicht darauf zugreifen).

Weitere Einstellungen sind die Wahl der richtigen Schriftgröße für Ihre Augen und der Abstand zwischen Ihren Augen und Ihrem PC, so dass Sie keine zu kleine Schriftgröße einstellen müssen, die Sie kaum sehen können.

Sie können mit den Einstellungen spielen, um mehr Einstellungen zu finden, die Sie schneller machen. Gehen Sie zu Extras => Optionen.


09: Lernen Sie zu googeln

Wenn Sie lernen, wie man richtig googelt, sparen Sie viel Zeit und Sie können Ihre Programmiergeschwindigkeit erhöhen. Die Chancen sind hoch, dass Sie beim Programmieren über viele Probleme stolpern und eine sofortige Lösung brauchen, aber zu wissen, wo die Lösungen zu finden sind, ist nicht genug, Sie müssen auch wissen, wie man effektiv nach der Lösung sucht.

Eine Google-Suche reicht aus, um schnell die richtigen Antworten auf Ihre Fragen zu bekommen, oder? FALSCH!

Nehmen wir ein Beispiel dafür, wie ein durchschnittlicher Programmierer, der beim Lesen eines Arrays aus einer Binärdatei hängen geblieben ist und dann Google benutzt, um nach der Lösung zu suchen.

Das erste, was die meisten Leute tun, ist zu Google zu gehen und nach etwas zu suchen wie "how to read an array in a binary file" (wie man ein Array in eine Binärdatei einliest). Hier ist, was sie bekommen:

wie man mit Google nach MQL5 sucht

Hinweis: Die Gesamtzahl der Ergebnisse beträgt mehr als 98 Millionen.

Sehen Sie, das Web ist voll von Müll und zeitraubenden Seiten, die, wenn Sie nicht aufpassen, Ihre Zeit verschwenden und Ihre privaten Daten könnten von Hackern gestohlen werden. Der Suchbegriff ist zu vage, um das gewünschte Ergebnis sofort zu erhalten. Damit wir die gewünschten Ergebnisse erhalten, müssen wir sehr klar und spezifisch sein.

Es gibt zu viele Suchtipps für diejenigen, die tiefer in dieses Thema einsteigen wollen. Ich empfehle, dieses kurze Video anzusehen. Ich werde nur über zwei Tipps sprechen.

01: Spezifische Website für die Suche

Es gibt keinen besseren Ort, um die Lösungen zu MQL5 zu erhalten, als MQL5.com. Wenn Sie eine Google-Suche durchführen, sollten Sie MQL5.com als die Seite berücksichtigen, die Google nach Ihren Antworten durchsuchen soll.

Fügen Sie site:MQL5.com am Ende Ihres Suchbegriffs ein, dann ist das das Ergebnis der Suche:

Suchergebnisse von mql5

Nur 568 Ergebnisse werden zurückgegeben, die diesmal alle von MQL5.com stammen. site:URL befiehlt Google, nur am angegebenen Ort zu suchen.

02: Noch spezifischer

MQL5.com ist immer noch eine vage Ortsangabe zur Suche im Web, wenn Sie sehr genau wissen, was Sie wollen, da es eine umfangreiche Website ist. Es gibt eine Möglichkeit, die ich immer wieder selbst verwenden. Es wird zwar nicht von Google empfohlen, aber es funktioniert, ich habe es immer verwendet. Der Schlüssel hier ist, dass Sie müssen wissen, welcher Teil der Ergebnisse von MQL5 für Sie priorisiert werden soll, zum Beispiel Artikel, Forum, Codebase, etc. Vielleicht bevorzugen Sie Ergebnisse aus:

  •  Artikel, wenn Sie sich eingehend mit einem Thema befassen möchten.
  •  Dem Forum, wenn Sie eine schnelle Lösung suchen. 
  •  Der Codebase, wenn Sie sehen wollen, was andere bereits programmiert haben.

Suchen Sie in diesem Format MQl5 + gefolgt von Abschnitt + dann ein Suchbegriff. Hier ein Beispiel in diesem Fall: 

"MQL5 forum how to read an array in a binary file", hier ist das Ergebnis:

klare aber vage MQL5-Suche

Diese Methode ist zwar spezifisch, aber wir haben Google noch nicht an einem bestimmten Ort verwiesen (nur zu der Website, auf der Sie sich gerade befinden). Am besten wäre es, wenn Sie jetzt site:MQL5.com als endgültigen Suchbegriff hinzufügen "forum how to read an array in a binary file site:MQL5.com". Google wird diesmal 399 Ergebnisse liefern.


Schlussfolgerung

Das reicht für diesen Artikel, ich arbeite noch an weiteren Tipps, um die Programmiergeschwindigkeit zu erhöhen und die Produktivität zu steigern. In den nächsten Artikeln werden weitere Tipps folgen, da es viele davon gibt. Ich empfehle jedem Programmierer, diese Gewohnheiten und Methoden täglich zu praktizieren.

Vielen Dank für die Lektüre, ich würde gerne einige der Tipps von Ihnen im Diskussionsbereich dieses Artikels hören.

Mit freundlichen Grüßen.

Übersetzt aus dem Englischen von MetaQuotes Ltd.
Originalartikel: https://www.mql5.com/en/articles/9752

Kombinatorik und Wahrscheinlichkeitsrechnung für den Handel (Teil I): Die Grundlagen Kombinatorik und Wahrscheinlichkeitsrechnung für den Handel (Teil I): Die Grundlagen
In dieser Artikelserie werden wir versuchen, eine praktische Anwendung der Wahrscheinlichkeitstheorie zur Beschreibung von Handels- und Preisbildungsprozessen zu finden. Im ersten Artikel werden wir uns mit den Grundlagen der Kombinatorik und der Wahrscheinlichkeitstheorie befassen und das erste Beispiel für die Anwendung von Fraktalen im Rahmen der Wahrscheinlichkeitstheorie analysieren.
Besser Programmieren (Teil 03): Geben Sie diese 5 Dinge auf, um ein erfolgreicher MQL5-Programmierer zu werden Besser Programmieren (Teil 03): Geben Sie diese 5 Dinge auf, um ein erfolgreicher MQL5-Programmierer zu werden
Dieser Artikel ist ein Muss für alle, die ihre Programmierkarriere verbessern wollen. Diese Artikelserie zielt darauf ab, Sie zum besten Programmierer zu machen, der Sie sein können, unabhängig davon, wie erfahren Sie sind. Die besprochenen Ideen eignen sich sowohl für MQL5-Programmierneulinge als auch für Profis.
Grafik in der Bibliothek DoEasy (Teil 79): Die Objektklasse "Animationsrahmen" und ihre abgeleiteten Objekte Grafik in der Bibliothek DoEasy (Teil 79): Die Objektklasse "Animationsrahmen" und ihre abgeleiteten Objekte
In diesem Artikel werde ich die Klasse eines einzelnen Animationsrahmens und seiner Nachkommen entwickeln. Die Klasse soll das Zeichnen von Formen unter Beibehaltung und anschließender Wiederherstellung des Hintergrunds unter ihnen ermöglichen.
Muster mit Beispielel (Taiul I): Multiple-Tops Muster mit Beispielel (Taiul I): Multiple-Tops
Dies ist der erste Artikel einer Serie, die sich mit Umkehrmustern im Rahmen des algorithmischen Handels beschäftigt. Wir werden mit der interessantesten Musterfamilie beginnen, die aus den Mustern Doppel-Top (Hochs) und Doppel-Bottom (Tiefs) hervorgegangen ist.