Einzelnen Beitrag anzeigen
  #4 (permalink)  
Alt 21.05.20
AVT AVT ist offline
Elite Mitglied
 
Registriert seit: Mar 2018
Ort: Hamburg
Beiträge: 612
AVT befindet sich auf einem aufstrebenden Ast
Standard

Wenn Du im Editor den Cursor auf OnInit setzt und dann auf F1 drückst, öffnet sich die Hilfe zu OnInit, alle Blau geschriebenen sind Links auf die Du klicken kannst, um weiter zu sehen, was es noch alles zu sagen gibt - so kommst Du von 100 auf 1000.

1. OnInit: wird IMMER und nur beim ersten Start ausgeführt
-. steht im Code ne Prüfung, z.B. ob genug Bars für Berechnungen da sind, kann man das Programm gleich beenden, wenn die Bars nicht reichen (wie willst Du einen Durchnschnitt von 100 ausrechnen, wenn Du nur 30 hast??) - also return(INIT_FAILED).
Init kann aus unterschiedlichen Gründen scheitern - auf dem Weg durch die ganzen Codezeilen. Gibt ein Benutzer z.B. negative Zahlen ein, ist das ne falsche Angabe (und eben nicht einfach nur "Tschüß, das wars").
-. Und wenn Init scheitert, dann wird dieser Code an DeInit weitergereicht, damit die reason von DeInit auch angeben kann "Benutzer hat Sch... eingegeben". DeInit kann auch aus anderen Gründen erfolgen, aber wenn's schon am Programmstart scheitert, dann muß das natürlich festgehalten werden.
-. Gibt es Fehler hier und wir müssen abbrechen, dann kann man z.B. in DeInit ausschließen, daß bestimmte Teile gemacht werden, bevor wir uns ganz verabschieden. Ich habe z.B. mein TradingPanel, das auf Wunsch die Einstellungen speichert (sind die aber so falsch, daß Init scheitern würde, dann macht es keinen Sinn, die Fehler auch noch zu speichern - denn beim nächsten Start holt sich das Panel die gespeicherten Werte wenn es welche gibt; und nur wenn nix gespeichert wurde, nimmt es die Benutzerangaben).

2. OnTimer: führt den dadrin stehenden Code nach der im Interval festgelegten Zeit aus. Es gibt ja Sachen, die müssen nicht bei jedem TickTack gemacht werden, es reicht ja vielleicht aus, wenn so was nur alle 10 Minuten gemacht wird. Und das schreibt man dann halt in die OnTimer Funktion rein.

3. OnEvent: wartet auf ein bestimmtes Ereignis, z.B. Mausklick oder ne Taste wurde gedrückt. Je nachdem was passiert ist (wenn es denn passierte) wird dann ein bestimmter Code ausgeführt.

Das alles sind Funktionen, in denen genau das passiert, was Du an Code reinschreibst. Steht nix in OnTimer drin, wird auch nix ausgeführt, steht da drin
Print("Es ist jetzt ",TimeToStr(TimeCurrent(),TIME_MINUTES));
dann kriegst Du im ExpertenTab des Terminals ne Zeitansage für Deine Serverzeit.

AVT