Einzelnen Beitrag anzeigen
  #12 (permalink)  
Alt 02.02.19
traderdoc traderdoc ist offline
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.733
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Indexreiter Beitrag anzeigen
Programmierer haben eben auch ihre Weltanschauung. Für mich ist Übersichtlichkeit immer wichtiger als Zeilenersparnis. Deshalb setze ich auch immer die öffnende Klammer genau unter das i vom if.
Solche und/oder-Monster vermeide ich wenn es geht. Geht es aber nicht, so würde ich dieses Beispiel der Übersicht halber so codieren:

PHP-Code:
   
   
if (Hour() == 8  &&  Minute() >58  &&  [B]!OpenAbstandAN[/B]
      || [
B]Open[0] > Open[OpenAbstand][/B]  &&  OpenAbstandAN
      
|| Bid iMA(NULL0MAPeriode0MODE_SMAPRICE_CLOSE1)  &&  MovingAvarageControl
      
|| HandelszeitAN  &&  Hour() < StartStunde
      
|| HandelszeitAN  &&  Hour() > EndStunde)
   {
      
//...
   

Mir erscheint das übersichtlicher und pflegeleichter, da Zufügen oder Herausnehmen einer Bedingung nur immer eine Code-Zeile betreffen.
Ja, das Wort Weltanschauung trifft es schon ganz gut, denn viele Wege führen nach Rom.
So kann man es auch schreiben, wobei ich darauf aufmerksam machen möchte, dass die ODER-Verknüpfungen direkt mit dem vorherigen Ausdruck in Beziehung stehen, d.h. in gewisser Weise hängen:

Hour() == 8 && Minute() > 58 && OpenAbstandAN == false || Open[0] > Open[OpenAbstand]

miteinander zusammen, denn es muss entweder OpenAbstandAN == false oder Open[0] > Open[OpenAbstand] true sein. Also sollten diese Abfagen von der Logik her auch in einer Zeile stehen. d.h. man hätte also konsequenterweise auch noch schreiben können:
Code:
if (Hour() == 8 && Minute() > 58) {
   if (OpenAbstandAN == false || Open[0] > Open[OpenAbstand]) {
      ...
Ebenso wie

OpenAbstandAN || Bid > iMA(NULL, 0, MAPeriode, 0, MODE_SMA, PRICE_CLOSE, 1)

in eine Zeile gehören usw.

Und ob der TE den Code von der boolschen Logik überhaupt so meinte, ist noch eine ganz andere Frage.
Würde nämlich vor Open[0] > Open[OpenAbstand] eine öffnende runde Klammer ( und z.B. nach OpenAbstandAN eine anschließende runde Klammer ) stehen, dann wäre die boolsche Logik eine ganz andere:

Code:
if (... && OpenAbstandAN == false || (Open[0] > Open[OpenAbstand] &&  OpenAbstandAN)  ...
"@Adlerauge - Auf die Idee, alle schließenden Klammern in eine Zeile zu setzen, bin ich auch noch nicht gekommen."
Ne, auf diese Idee wäre ich aus Gründen der Optikverletzung auch nie gekommen!

traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.