Thema: Trendbar
Einzelnen Beitrag anzeigen
  #5 (permalink)  
Alt 30.07.21
Benutzerbild von Indikator-Trading
Indikator-Trading Indikator-Trading ist offline
Premium Mitglied
 
Registriert seit: May 2020
Ort: Bielefeld
Beiträge: 345
Indikator-Trading befindet sich auf einem aufstrebenden Ast
Standard

Hallo Marcel,

ich sehe da ein Problem mit der Funktion, welche unter "int start()" die erste, zweite und fünfte Reihe "anmachen soll"

Vereinfacht geschrieben machst du ja folgendes:
if(Bedingung1)
//AnweisungA
if(Bedingung2)
//AnweisungB
else
//AnweisungC

Bei deiner Implementierung kann Bedingung1 nicht zeitgleich mit Bedingung2 erfüllt sein.
Ist Bedingung1 erfüllt, wird "AnweisungA" durchgeführt. Bedinung2 ist nicht erfüllt, somit wird also auch "AnweisungC" durchgeführt, welche wiederum in deinem Code nicht mit der Durchführung von "AnweisungA" im Einklang ist.

Oh, das habe ich jetzt etwas verkompliziert erklärt, aber ich hoffe du hast verstanden worauf ich hinauswollte.

Wenn du ein else vor die zweite If-Abfrage setzt wird der Code das machen, was du zumindest laut deinen Kommentaren damit vorzuhaben scheinst.

Code:
   for(int x=0;x<9;x++)
   {
      if((iMA(Symbol(),period[x],5,0,0,0,0)-Ask) < 0)
         ObjectSetText("signal"+x+"0",CharToStr(110),20,"Wingdings",YellowGreen);
      else if((iMA(Symbol(),period[x],5,0,0,0,0)-Ask) > 0)
         ObjectSetText("signal"+x+"0",CharToStr(110),20,"Wingdings",Tomato);
     // Sonst, wenn es keine Signale gibt, dann färben wir die Quadraten in die graue Farbe   
      else
      ObjectSetText("signal"+x+"1",CharToStr(110),20,"Wingdings",DarkGray);  
   }
Zwei weitere Punkte fallen mir noch auf:
1)
für die erste Reihe setzt du die Farbe Grau für ein anderes Objekt, da ("signal" + x + "0") nicht ("signal" + x + "1") ist. Dort wirst du wohl noch die "1" gegen eine "0" austauschen müssen, oder anderes rum.

2)
In allen anderen Reihen setzt du jeweils ebenfallst nur die Zeile "1", auch wenn du in den Kommentaren von "Reihen" sprichst.

Hier ein korrigiertes Beispiel für die sechste Reihe:

Code:
    for(x=0;x<9;x++)
   {
 
      if((iMA(Symbol(),period[x],200,0,0,0,0)-Ask)<0)
         ObjectSetText("signal"+x+"5",CharToStr(110),20,"Wingdings",YellowGreen);  
      
      if((iMA(Symbol(),period[x],200,0,0,0,0)-Ask)>0)
         ObjectSetText("signal"+x+"5",CharToStr(110),20,"Wingdings",Tomato);       
   }
Mit freundlichen Grüßen
Timo