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