Zum Inhalt springen
View in the app

A better way to browse. Learn more.

#T/N/X/T

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

int start() Tickchronologie

Geschrieben

Guten Abend,

 

jeden Tick wird int start() aufgerufen ok. Wie läuft das dann genau mit der Tickchronologie im weitern Verlauf? Gibts da irgendwo im Netz eine Erklärung wann was abgerufen/durchlaufen wird? Beispiel und Frage: Geht man davon aus, dass die Bedingung xyz immer erfüllt ist: Nach wieviel Ticks wäre underberg=true? Erst beim zweiten Tick oder nicht? wie läuft das? Vielleicht kann jmd Licht in meine dunkle MQL-Lampe bringen?

 

 

 

bool rahmschnitzel = false;
bool jaegerschnitzel = false;
bool underberg = false;

int init()

int start()
    {
          if (xyz)
              {    
        schwarzbier();   
        whiskey();   
             }
         if ((rahmschnitzel) && (jaegerschnitzel))
        magenbitter();
    }

void schwarzbier()
       {      
        if (xyz)
        rahmschnitzel = true;
    }

void whiskey()
       {      
        if (xyz)
        jaegerschnitzel = true;
    }

magenbitter()
       {      
        if (xyz)
        underberg = true;
    }

int deinit()

 

 

 

 

Netten Gruß

 

Forex 1+

Bearbeitet von whipsaw

Featured Replies

Geschrieben

Ich würde dir gerne helfen, kann aber kein mql.

Aber dein Code ist cool, könnte von mir sein.

Geschrieben

Nach wieviel Ticks wäre underberg=true?

 

Nach dem ersten Tick, da sofort alles auf true gesetzt wird, da alle Bedingungen bereits im ersten Durchlauf erfüllt sind. Bin mir also nicht ganz sicher, worauf du hinaus willst.

 

Vielleicht möchtest du auf static hinaus?

Geschrieben

Wenn du schon sagst, dass xyz in dem Fall true ist, dann wird unterberg beim ersten Tick schon true.

Du musst das so vorstellen: bei jedem Tick wird start() aufgerufen und es wird jede Anweisung in der start() nacheinander abgearbeitet.

Die globale Variablen : rahmschnitzel, jaegerschnitzel werden ihren Zustand auf true wechseln

nach dem die Unterfunktionen aufgerufen wurden

if (xyz){  schwarzbier();   whiskey(); }die nächste Programmzeile setzt dann underber auf true if ((rahmschnitzel) && (jaegerschnitzel)) magenbitter();
Geschrieben

Damit du selbst jede Zeile in deinem Programmcode verstehst würde ich dir empfehlen jede Zeile oder zumindest die Stellen im Programm wo du unsicher bist mit Print() ins Journal auszugeben. Das kostet sicherlch mehr Zeit weil du überall Print() reinschreiben muss, erspart aber dann ungemein die Fehlersuche und du weisst exakt was genau im Programm passiert.

 

So könnte es zum Beispiel aussehen:

 

1.png

 

und die Ausgabe im Journal:

 

2.png

 

ProgrammCall.mq4

Geschrieben
  • Autor

Super erklärt vielen Dank ! Also die Reihenfolge der Anweisungen in start() geben den Ton an und dessen Unterfunktionen richten sich nur danach egal in welcher Reihenfolge diese dann wären -> das war genau der Punkt den ich nicht kapiert hatte. Das mit dem Print() ist ne richtig perfekte Sache, werd ich ab jetzt einsetzen.

 

Danke und Gruß

 

Forex1+

Bearbeitet von Forex1+

Geschrieben
  • Autor

Noch eine kleine Offtopic-Frage (oder lieber ein neuen Tread? Hab immer Hemmung wegen jedem Kram ein neuen Thread zu öffnen)

 

include Dateien sind doch Einführungen von Dateien, die Definitionen für einzelne Funktionen beinhalten wenn ich das richtig verstanden hab. Ich hab mich aber schon immer gefragt für was die dann speziell da sind zB folgenden include Dateien wann wofür man sie genau braucht und wann nicht?

 

 

#include <stdlib.mqh>  

#include <WinUser32.mqh>

 

 

Gruß

Geschrieben

Also die Reihenfolge der Anweisungen in start() geben den Ton an und dessen Unterfunktionen richten sich nur danach egal in welcher Reihenfolge diese dann wären -> das war genau der Punkt den ich nicht kapiert hatte

 

Die Reihenfolge der Funktonen im Programmcode kann absolut belibig sein. Die start() kann auch am Ende des Programms stehen.

Der eigentliche "Einspringpunkt" bei der Programmausführung bei jedem Tick ist nur die Funktion start(). Zur besseren Programmcodelesbarkeit werden die von MT4 gesteuerten Funktionen init(), deinit() und start() am Anfang des Programms geschrieben. Die start() würde ich nur zum Organisieren des Programmflusses nehmen, also nur als Struktur mit den Aufrufen von Unterfunktionen.

Geschrieben

include Dateien sind doch Einführungen von Dateien, die Definitionen für einzelne Funktionen beinhalten wenn ich das richtig verstanden hab. Ich hab mich aber schon immer gefragt für was die dann speziell da sind zB folgenden include Dateien wann wofür man sie genau braucht und wann nicht?

 

Die include-Dateien nimmt man meistens dazu um einen Grossteil des Programmcodes auszulagern.

Das macht nur Sinn wenn du die Funktionen in der include-Datei auch in anderen Programmen verwenden möchtest.

So ist die Wartung des Programmcodes zum Beispiel zentralisiert.

Das ist also so zusagen deine eigene Funktionsbibliothek, die du in anderen Programmen verwenden möchtest.

Es gibt 2 Anwendungsbeispiele für include-Dateien :

- Deklaration der Funktionen für eine kompilierte Funktionsibliothek ( mit Erweiterung *.ex4 oder *.dll) , z.B aus dem Unterordner ../experts/library

- Definition der Funktionen

In deinem Fall ist es die 2.te Variante, hier wird lediglich der gesamte Inhalt der include-Datei zu dem eigentlichen Programm eingefügt.

So hast du alle deine eigene Funktionen parat mit nur einer #include Anweisung.

Geschrieben
  • Autor

Danke das macht es schon klarer. Wie kann ich denn herausfinden ob ich stdlib.mqh und WinUser32.mqh überhaupt in einem EA benötigt werden (Bei mir im Code vorhanden von einer uralten fremden Codegrundstruktur mit der ich irgendwann mal begonnen habe). Kann man irgendwo schauen welche Funktionen dadurch definiert werden? Wahrscheinlich benötige ich das gar nicht im Code... gossip.gif

Geschrieben

In diesen Dateien stehen eigentlich die Funktionsdeklarationen, wenn diese Funktionen im Programm nicht abgefragt werden, dann brauchst du diese include-Dateien nicht. Du kannst die include-Anweisungen auch einfach auskommentieren, dann bekommst du vom Kompiler die Fehlermeldung falls eine Funktion doch gebraucht wird.

Geschrieben
  • Autor

Alles klar logisch. Danke für die Hilfe der Thread hat mir sehr geholfen

 

Gruß

Bearbeitet von Forex1+

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

Account

Navigation

Suche

Suche

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.