Einzelnen Beitrag anzeigen
  #1 (permalink)  
Alt 15.06.20
LQK LQK ist offline
Mitglied
 
Registriert seit: Nov 2019
Beiträge: 76
LQK befindet sich auf einem aufstrebenden Ast
Standard Die Funktion Start()

Hallo,

MA-EA hat mir in einem anderen Zusammenhang empfohlen, die Funktion Start() ans Ende eines EA zu setzen, da Start() dann anscheinend den EA kontinuierlich mit Ticks füttert, was man gut zu zum Testen des EA verwenden kann.

Ich hatte für mein Problem, Danke noch mal Euch allen, mehrere Lösungsvorschläge bekommen und nachdem eine funktioniert hat, bin ich der Sache mit Start() dann nicht mehr weiter nachgegangen.

Jedoch hatte ich damals ein kleinen Test-EAmit Start() erstellt, welches ich gerade zufällig noch mal probiert habe. Mir sind dabei ein paar, meines Erachtens, bemerkenswerte Dinge aufgefallen, was für mich Anlass zur Öffnung des jetzigen Threads ist. Im anderen Thread wollte ich diese Debatte nicht führen, da es OT wird und der Thread dann nicht mehr so gut als Nachschlagewerk dienen kann.

---

Es ist so, dass der Charakter der Funktion Start() für mich nach wie vor verblüffend ist.

Zunächst habe ich gerade beim Aufräumen dieses von mir erstellte Test-EA gefunden und gestartet. Der Compiler hat dann gemeckert, dass bei Start geschweifte Klammern zu viel seien (im unten gepostetn Quellcode rot markiert). Nachdem ich diese rot geschweiften Klammern gelöscht habe, ließ sich der EA sich ohne Fehler compilieren. Nach dem Ausführen hat der EA dann kontinuierlich Ticks "verarbeitet" (?), erkenntlich daran, dass unregelmäßig, normalerweise jedoch spätestens alle paar Sekunden, die Meldung "Danke Start() erscheine ich auf dem Bildschirm" auf dem Bildschirm ausgegeben wurde.

Dass das funktioniert, ist es erforderlich, dass der Anwender in ein Konto, zumindest ein Demo-Konto, eingeloggt ist. Dass der EA bei mir plötzlich funktioniert hat ist reiner Zufall, da ich vor einigen Tagen nun doch noch zu Testzwecken extra ein Demo-Konto angelegt habe, in das ich beim Testen zufällig eingeloggt war. Testweises Ausloggen aus dem Demokonto zeigte, dass der EA dann nicht mehr funktioniert.


---


Wenn ich nun "int" auch noch weglösche, dass im obig geposteten Quellcode nur noch "Start" steht, funktioniert der EA nicht mehr.

Das finde ich verwunderlich, aus diesem Grund:

int oder ein anderer Datentyp gibt ja normalerweise den Rückgabewert einer vom Anwender selbst auszuprogrammierenden Funktion an. Wenn es so ist, dass die Funktion Start() vom Programmierer selbst zu implementieren ist, hätte der Compiler allerdings nicht die {} in Zusammenhang mit Start() monieren dürfen.

Der compiler hat aber die {} im Zusammenhang mit Start() moniert. Also ist die Funktion Start() offenbar nicht vom Anwender selbst zu implementieren. Wenn die Funktion Start() allerdings nicht vom Anwender selbst zu implementieren ist, sondern bereits von MQL zur Verfügung gestellt wird, verstehe ich nicht, warum die Angabe int in Zusammenhang mit Start() offenbar zwingend erforderlich ist.

Habe gerade mal noch spaßeshalber in bei Start den Rückgabetyp int nacheinander durch void, bool und double ersetzt. Die verblüffende Erkenntnis ist, dass der EA mit jedem dieser Rückgabetypen einwandfrei funktioniert.

---

Mir ist somit, insgesamt betrachtet, nicht klar um was es sich bei Start() handelt. Um eine Funktion, klar. Offenbar scheint diese aber unter verschiedenen Gesichtspunkten eine Sonderstellung unter den von MQL angebotenen Funktionen zu haben.



Eine andere Sache ist, dass ich weder in der Hilfe, noch in der Referenz einen Eintrag für Start() finde. Einen kleine Erklärung zu Start habe ich in unten stehendem Link gefunden. Finde die Erklärung allerdings nicht sehr hilfreich, da wird nur wortreich geschildert, wann und unter welchen Umständen Start() gestartet wird.


Hier der Link:
https://book.mql4.com/programm/special


Ach ja, hier noch der Quellcode des von mir oben stehend beschriebenem Test-EA:

Code:
int OnInit()
  {

   

   return(INIT_SUCCEEDED);
  }


void OnTick()
  {
//---
  
  Print("Danke Start() erscheine ich auf dem Bildschirm");
  
   
  }
//+------------------------------------------------------------------+



int Start();

{
}


---


Würde mich freuen, wenn jemand von Euch was zu Start()weiß.




Besten Dank und Grüße,
LQK