Fehler, Irrtümer, Fragen - Seite 2533

 
Georgiy Merts:

In Ihrem Fall sollten Sie eher eine while()-Schleife als eine for()-Schleife organisieren.

Prüfen Sie, ob es ein Anzeichen für das Ende des Blinkens gibt.

Aber das mit dem "Blinken mit variabler Frequenz" ist etwas seltsam... Ich erkenne keine Fehler im Flug, die Anzeige sollte recht häufig blinken.

Zugegeben, ich bezweifle, dass es klug ist, grafische Objekte zu erstellen und zu löschen, anstatt sie unsichtbar zu machen, aber anscheinend kann man ein Objekt nicht unsichtbar machen... Es bleibt also nur das Löschen.

Danke für die Antwort, jetzt funktioniert es. Aber das Blinzeln ist genauso chaotisch, und es wurde aufgezeichnet, wie es geschieht. Und ich habe das Löschen durch das Ändern der LABEL-Farbe in Schwarz ersetzt.



int i = 1;
   while(i > 0)  //true?
   {      
      if(!ObjectCreate(0,"Blink",OBJ_LABEL,0,0,0))
   {
      Print("Not Create! Error - ",GetLastError());
   }
   ObjectSetInteger(0,"Blink",OBJPROP_XDISTANCE,50+i);
   ObjectSetInteger(0,"Blink",OBJPROP_YDISTANCE,50);
   ObjectSetInteger(0,"Blink",OBJPROP_CORNER,CORNER_RIGHT_UPPER);
   ObjectSetString(0,"Blink",OBJPROP_TEXT,"Test");
   ObjectSetString(0,"Blink",OBJPROP_FONT,"Arial");
   ObjectSetInteger(0,"Blink",OBJPROP_FONTSIZE,18);
   ObjectSetDouble(0,"Blink",OBJPROP_ANGLE,0);
   ObjectSetInteger(0,"Blink",OBJPROP_ANCHOR,ANCHOR_RIGHT_UPPER);
   ObjectSetInteger(0,"Blink",OBJPROP_COLOR,Red);
   ObjectSetInteger(0,"Blink",OBJPROP_BACK,false);
   ObjectSetInteger(0,"Blink",OBJPROP_SELECTABLE,true);
   ObjectSetInteger(0,"Blink",OBJPROP_SELECTED,false);
   ObjectSetInteger(0,"Blink",OBJPROP_HIDDEN,true);
   ObjectSetInteger(0,"Blink",OBJPROP_ZORDER,0);
   
   Sleep(200);
   
   ObjectSetInteger(0,"Blink",OBJPROP_COLOR,Black);
   
   Sleep(200);
   } 
 
Влад:

Danke für die Antwort, es funktioniert jetzt. Aber das Blinzeln ist genauso chaotisch, es wird aufgezeichnet, wie es passiert. Und ich habe das Löschen durch das Ändern der LABEL-Farbe in Schwarz ersetzt.


Sie sehen, dass es auf die Zecke ankommt. Dieser Code sollte in OnTimer() ausgeführt werden, nicht in OnTick().

Und Sie müssen sie nicht schwarz einfärben - Objekte haben eine Sichtbarkeitseigenschaft(OBJPROP_TIMEFRAMES) - Sie müssen nur ihre Sichtbarkeit verwalten.

Die Werte für die Zeitspannen, in denen das Objekt sichtbar sein muss, werden durch eine Reihe von Flags festgelegt. In Ihrem Fall müssen Sie 0(OBJ_NO_PERIODS) einstellen - das Objekt ist nirgends sichtbar, und OBJ_ALL_PERIODS - überall sichtbar. Und vergessen Sie nicht, das Diagramm mit ChartRedraw() zu aktualisieren, nachdem sich der Eigenschaftswert geändert hat.

Документация по MQL5: Константы, перечисления и структуры / Константы объектов / Видимость объектов
Документация по MQL5: Константы, перечисления и структуры / Константы объектов / Видимость объектов
  • www.mql5.com
Комбинация флагов видимости объекта определяет таймфреймы графика, на которых объект отображаем. Для установки/получения значения свойства OBJPROP_TIMEFRAMES можно использовать функции ObjectSetInteger()/ObjectGetInteger...
 
Влад:

Danke für die Antwort, es funktioniert jetzt. Aber das Blinzeln ist genauso chaotisch, es wird aufgezeichnet, wie es passiert. Und ich habe die Löschung ersetzt, indem ich die Farbe von LABEL auf schwarz geändert habe.

Ich glaube nicht, dass Sie noch viel zu verlieren haben, versuchen Sie es mit meinem Skript-Code, es funktioniert, es ist kürzer

#property copyright "IgorM"
#property link      "https://www.mql5.com/ru/users/igorm"
#property version   "1.00"
#property strict

#include <ChartObjects\ChartObjectsTxtControls.mqh>
CChartObjectLabel Label;
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   Label.Create(0,"tst",0,0,50);
   Label.Description("Hello word!");
   Label.FontSize(14);
   bool show=true;
   while(!IsStopped())
     {
      color col=show ? clrRed : clrNONE;
      Label.Color(col);
      show=!show;
      ChartRedraw();
      Sleep(1000);
     }
  }
//+------------------------------------------------------------------+

es befindet sich im Skriptordner!

 
Igor Makanu:

Ich glaube nicht, dass Sie noch viel zu verlieren haben, versuchen Sie es mit meinem Skript-Code, es funktioniert, es ist kürzer

Es ist im Ordner "Schrift"!

Igor, ich verstehe, es ist in MQL5 geschrieben und ich habe Metatrader 4 leider.

 
Влад:

Igor, ich verstehe, es ist in MQL5 geschrieben, und ich habe Metatrader 4 leider.

dies ist MQL4... könnte es bereits versucht haben ))))

 
Oh, Mann, das ist richtig.) Ich entschuldige mich für die Unverschämtheit, aber ist es möglich, einen Indikator anstelle eines Skripts zu verwenden? Ich habe den Kern der Indikatorvorlage kopiert, und es ist alles in Ordnung, wenn ich die TFs wechsle. Ich habe es in die Indikatorvorlage kopiert und es lässt sich gut kompilieren, aber wenn ich es in das Diagramm einfüge, hängt sich das Terminal auf.
 
Bitte beraten Sie, wenn Sie wissen, wie man eine Vorwärts-Optimierung Ergebnis in einem MQL5 Expert Advisor unter Test zu erhalten? Diese Frage wurde in diesem Thema gestellt. Vielleicht wird sie hier beantwortet.
 
Влад:
Oh, Mann, das ist richtig.) Ich entschuldige mich für die Unverschämtheit, aber ist es möglich, einen Indikator anstelle eines Skripts zu verwenden? Ich habe den Kern der Indikatorvorlage kopiert, und es ist alles in Ordnung, wenn ich die TFs wechsle. Ich habe es in die Indikatorvorlage kopiert und es lässt sich gut kompilieren, aber wenn ich es in das Diagramm einfüge, hängt sich das Terminal auf.
Dateien:
Blink.mq4  3 kb
 
Igor Makanu:

Herzlichen Dank! )

 

Für Website-Administratoren:

Ich konnte nicht finden, wo, ich schreibe hier.

Ich muss die Angaben zum Verkäufer im Profil ändern.

Wie kann man das machen?

Ich habe schon vor langer Zeit eine Nachricht im Verkäuferbereich geschrieben, aber es gibt keine Antwort.

Vielleicht gibt es einen anderen Weg?