Hallo, aber:
- Wir können hier deutsch sprechen :)
- Wenn Code gepostet wird bitte dazu den Code-Knopf aus der Editierzeile [</>] oder Alt+S verwenden.
- Hmm? So ganz kann ich mir Dein Problem nicht vorstellen, aber 2 Hinweise:
Mit dem Debugger kann man alles beim Entstehen kontrollieren (https://www.mql5.com/de/articles/654 // Zur Fehlerbehebung von MQL5-Programmen)
Manche Eigenschaften wie im Vorder- oder Hintergrund können/müssen nach ObjectCreate festgelegt werden, alle Objektfunktionen (MQ5) sind hier: https://www.mql5.com/de/docs/objects - Wenn Du den Kursor auf for stellst und F1 drückst kommst Du direkt zur Dok. dort gibt es auch Beispiel(e) zum Beenden von Schleifen zB. durch break.
- www.mql5.com
Hallo, aber:
- Wir können hier deutsch sprechen :)
- Wenn Code gepostet wird bitte dazu den Code-Knopf aus der Editierzeile [</>] oder Alt+S verwenden.
- Hmm? So ganz kann ich mir Dein Problem nicht vorstellen, aber 2 Hinweise:
Mit dem Debugger kann man alles beim Entstehen kontrollieren (https://www.mql5.com/de/articles/654 // Zur Fehlerbehebung von MQL5-Programmen)
Manche Eigenschaften wie im Vorder- oder Hintergrund können/müssen nach ObjectCreate festgelegt werden, alle Objektfunktionen (MQ5) sind hier: https://www.mql5.com/de/docs/objects - Wenn Du den Kursor auf for stellst und F1 drückst kommst Du direkt zur Dok. dort gibt es auch Beispiel(e) zum Beenden von Schleifen zB. durch break.
1. Gut zu wissen :)
2. Was meinst du mit Code-Knop aus der Editierzeile?
3. Den Debugger benutze ich, es läuft alles einwandfrei. Nur die Unterbrechung der Schleife bereitet mir Kopfschmerzen. Er muss ja aufhören Linien zu setzen, nachdem er es getan hat.
Ich probiere es nochmal zu erklären: Auf dem Chart sind mehrere rote Rechtecke. Jedes Rechteck soll an der Ober- und Unterkante mit jeweils einer Linie versehen werden (dafür ist die schleife).
Er tut das auch, nur endlos. Die Schleife ist in der onTick. Sie geht alle Rechtecke durch und setzt die Linien. Mit Break hatte ich bisher leider keinen Erfolg.
Liebe Grüße :)
1. Gut zu wissen :)
2. Was meinst du mit Code-Knop aus der Editierzeile?
3. Den Debugger benutze ich, es läuft alles einwandfrei. Nur die Unterbrechung der Schleife bereitet mir Kopfschmerzen. Er muss ja aufhören Linien zu setzen, nachdem er es getan hat.
Ich probiere es nochmal zu erklären: Auf dem Chart sind mehrere rote Rechtecke. Jedes Rechteck soll an der Ober- und Unterkante mit jeweils einer Linie versehen werden (dafür ist die schleife).
Er tut das auch, nur endlos. Die Schleife ist in der onTick. Sie geht alle Rechtecke durch und setzt die Linien. Mit Break hatte ich bisher leider keinen Erfolg.
Liebe Grüße :)
OnTick() wird bei jeden neuen Kurs aufgerufen und dann startet dann auch die Schleife wieder?
Dann müsstest Du die Rechtecke kennzeichnen/erkennen, für die es schon Linien gibt und 'auslassen' - könnte es das sein?
OnTick() wird bei jeden neuen Kurs aufgerufen und dann startet dann auch die Schleife wieder?
Dann müsstest Du die Rechtecke kennzeichnen/erkennen, für die es schon Linien gibt und 'auslassen' - könnte es das sein?
ja, bei jedem Tick.
ja genau, das wäre praktisch die Lösung. Komme da nur grad an meine Grenzen und weiß nicht, wie das machbar wäre.
ja, bei jedem Tick.
ja genau, das wäre praktisch die Lösung. Komme da nur grad an meine Grenzen und weiß nicht, wie das machbar wäre.
- Du pflegst eine eigene (globale) Liste mit bereits bearbeiteten Rechtecken.
- Du veränderst den Namens eines bearbeiteten Rechtecks (weiß aber nicht, ob das geht - nie gemacht, nie gedacht).
- Wenn Du ein Rechteck 'findst' schaust Du, ob es bereits Linien-Objekte gibt.
- Du speicherst die Namen der bearbeiteten Rechtecke als globale Variable (https://www.mql5.com/de/docs/globals) und prüfst, ob so eine Variable bereits existiert ....
- www.mql5.com
Entweder:
- Du pflegst eine eigene (globale) Liste mit bereits bearbeiteten Rechtecken.
- Du veränderst den Namens eines bearbeiteten Rechtecks (weiß aber nicht, ob das geht - nie gemacht, nie gedacht).
- Wenn Du ein Rechteck 'findst' schaust Du, ob es bereits Linien-Objekte gibt.
- Du speicherst die Namen der bearbeiteten Rechtecke als globale Variable (https://www.mql5.com/de/docs/globals) und prüfst, ob so eine Variable bereits existiert ....
schwierig. ich brauche noch etwas zeit, um das alles zu verstehen..
Hello everyone, I have a problem. the for loop below runs through all the red rectangles on the chart and places lines on the respective lower and upper anchor point. So I only want one HLINE at the top and bottom per rectangle. unfortunately, he continually superimposes lines on top of each other. He should go through all the rectangles once and mark each one with a line at the top and bottom, nothing more. I'm looking for a way to break the loop.
int obj_index = ObjectsTotal(ChartID())-1;
for (int i = obj_index; i>=0; i--){
string object_name = ObjectName(ChartID(), i);
if ( ObjectGetInteger (ChartID(), object_name, OBJPROP_TYPE) != OBJ_RECTANGLE) continue;
string high_name = "Line-High"+string(i);
string low_name = "Line-Low"+string(i);
if(ObjectGetInteger(ChartID(), object_name,OBJPROP_COLOR)==clrRed){
if(!ObjectCreate(_Symbol,high_name,OBJ_HLINE,0,0,ObjectGetDouble(ChartID(), object_name,OBJPROP_PRICE,1)))PrintFormat("Error object %s not created!",high_name);
else PrintFormat("object %s created successfully", high_name);
if(!ObjectCreate(_Symbol,low_name ,OBJ_HLINE,0,0,ObjectGetDouble(ChartID(), object_name,OBJPROP_PRICE,0)))PrintFormat("Error object %s not created!",low_name);
else PrintFormat("object %s created successfully", low_name);
}
}
Wo ist break? 🤔
nicht da :D ich habe momentan überhaupt keine Ahnung, wann ich die Schleife breaken soll..
theoretisch müsste er alles einmal durchlaufen und dann beenden.
Grundsätzlich das das unterbrechen ja kein Problem.
Danke für deine Antwort
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Hello everyone, I have a problem. the for loop below runs through all the red rectangles on the chart and places lines on the respective lower and upper anchor point. So I only want one HLINE at the top and bottom per rectangle. unfortunately, he continually superimposes lines on top of each other. He should go through all the rectangles once and mark each one with a line at the top and bottom, nothing more. I'm looking for a way to break the loop.
int obj_index = ObjectsTotal(ChartID())-1;
for (int i = obj_index; i>=0; i--){
string object_name = ObjectName(ChartID(), i);
if (ObjectGetInteger(ChartID(), object_name, OBJPROP_TYPE) != OBJ_RECTANGLE) continue;
string high_name = "Line-High"+string(i);
string low_name = "Line-Low"+string(i);
if(ObjectGetInteger(ChartID(), object_name,OBJPROP_COLOR)==clrRed){
if(!ObjectCreate(_Symbol,high_name,OBJ_HLINE,0,0,ObjectGetDouble(ChartID(), object_name,OBJPROP_PRICE,1)))PrintFormat("Error object %s not created!",high_name);
else PrintFormat("object %s created successfully", high_name);
if(!ObjectCreate(_Symbol,low_name ,OBJ_HLINE,0,0,ObjectGetDouble(ChartID(), object_name,OBJPROP_PRICE,0)))PrintFormat("Error object %s not created!",low_name);
else PrintFormat("object %s created successfully", low_name);
}
}