Fehler, Irrtümer, Fragen - Seite 973

 
voix_kas:

...

Was soll ich sagen? Eine Bitmap arbeitet (!) um eine Größenordnung langsamer als 26 normale Etiketten. Ich habe versucht, den Vorgang des Kopierens von Mustern in die Arbeitsleinwand (Array uint 250*410), d.h. den Vorgang auf einer Leinwand, von OnTick() auszuschließen. Der Gewinn ist nur in Echtzeit spürbar. Im Testgerät ist es dass elbe, mit absoluter Produktivitätsverschlechterung. Der ModusCOLOR_FORMAT_ARGB_NORMALIZE wurde verwendet, da die anderen Modi weniger ästhetisch wirken. Um mir selbst zuvorzukommen, sollte ich sagen, dass die Arbeit auf einer Leinwand schwierig ist, weil man die Überlappung früherer Überlagerungen (klare Bereiche) verfolgen muss.

...

Haben Sie Objekte wie OBJ_BITMAP_LABEL im Visualisierungsmodus des Testers angezeigt?
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Типы объектов
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Типы объектов
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы объектов / Типы объектов - Документация по MQL5
 
tol64:

Vielen Dank, das weiß ich. vdv2001 hat irgendein Problem damit:

//---

Ich wollte sehen, wie er es macht, um festzustellen, dass er einen Fehler hat.


Dann ein weiteres Zitat aus der Hilfe

CHART_MOUSE_SCROLL

Scrollen Sie das Diagramm mit der linken Maustaste horizontal. Der vertikale Bildlauf ist auch verfügbar, wenn eine der drei Eigenschaften auf true gesetzt ist: CHART_SCALEFIX, CHART_SCALEFIX_11 oder CHART_SCALE_PT_PER_BAR

bool

 
Ah, ich sehe, was es ist. ))
vdv2001:

Ja, das Objekt ist ausgewählt, aber es kann nicht mit der Maus bewegt werden (wie in Terminal 4).

Oder jetzt bewegen alle Objekte, die von Expert Advisor erstellt werden, müssen durch Ereignisse behandelt werden.

In MT5 muss ich den Mauszeiger genau auf den Ankerpunkt eines ausgewählten Objekts setzen. In MT4 wird dies automatisch durchgeführt. Ich persönlich ziehe es vor, Objekte ohne Auswahl durch Ereignisse zu bewegen. Oben zeigte Rosh die Eigenschaft zum Aktivieren/Deaktivieren des Diagrammblätterns, damit es nicht mit sich bewegenden Objekten kollidiert.
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Свойства объектов
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Свойства объектов
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы объектов / Свойства объектов - Документация по MQL5
 
tol64:
Ah, ich sehe, was es ist. )) In MT5 muss ich den Mauszeiger genau auf dem passenden Punkt positionieren, wenn ein Objekt ausgewählt ist. In MT4 geschieht dies automatisch. Ich persönlich ziehe es vor, Objekte ohne Auswahl durch Ereignisse zu bewegen. Oben zeigte Rosh die Eigenschaft zum Aktivieren/Deaktivieren des Diagrammblätterns, damit es nicht mit sich bewegenden Objekten kollidiert.

Den Graphen auf Maximum vergrößert, die Maus auf den Ankerpunkt des ausgewählten Objekts gesetzt, die linke Maustaste auf den Boden "gedrückt", maximale Kraft aufgewendet und ...

Das Objekt blieb an seinem Platz.

Um diesen Vorgang zu wiederholen, ist es nicht schwer, ein Objekt CChartObjectTrend zu erstellen, seine Eigenschaften einzustellen und zu versuchen, es zu bewegen. Das ist mir nicht gelungen.

CHART_MOUSE_SCROLL Ich habe es ausprobiert und das Diagramm bewegt sich nicht mehr, aber das Objekt hat sich nicht bewegt.

P.S.

Obwohl, wenn die Behandlung der Bewegung eines Objekts durch Ereignisse, ist es richtig (ich weiß, die alte Koordinate) . Das werde ich durch Veranstaltungen tun. Danke, die Frage ist geschlossen.

 
vdv2001:

Erhöht die Grafik auf Maximum, setzen Sie die Maus auf den Ankerpunkt des ausgewählten Objekts "drückte" die linke Maustaste auf den Boden, wandte maximale Anstrengung und ...

Das Objekt blieb an seinem Platz.

Es ist nicht schwer, diesen Vorgang zu wiederholen, ein CChartObjectTrend-Objekt zu erstellen, seine Eigenschaften einzustellen und zu versuchen, es zu verschieben. Bei mir hat es nicht funktioniert.

...

So funktioniert es, wenn überhaupt:

void OnStart()
  {
   double low[];
   datetime time[];
   string name_object="Trend_Test";
//---
   ArraySetAsSeries(low,true);
   ArraySetAsSeries(time,true);
//---
   CopyLow(_Symbol,_Period,0,50,low);
   CopyTime(_Symbol,_Period,0,50,time);
//---
   if(ObjectCreate(0,name_object,OBJ_TREND,0,time[0],low[0],time[49],low[49]))
      ObjectSetInteger(0,name_object,OBJPROP_SELECTABLE,true);
  }
 

Ist es jemandem gelungen, das Kunststück vonvoix_kas zu wiederholen?

voix_kas:
...
Что могу сказать? Один Bitmap работает (!)на порядок медленнее, чем 26 обычных меток. Пробывал исключить из OnTick() операцию копирования шаблона в рабочую канву (массив uint 250*410), т.е. работа на одной канве. Выигрыш чувствуется только в реал-тайме. В тестере всё также - абсолютная просадка по производительности. Использовался режим COLOR_FORMAT_ARGB_NORMALIZE, т.к. остальные дают менее эстетический вид. Забегая вперед, надо сказать, что работать на одной канве сложно, так как придётся отслеживать наложение предыдущих надписей (очищать области).

...


Haben Sie Objekte vom Typ OBJ_BITMAP_LABEL, die im Visualisierungsmodus in Ihrem Prüfgerät angezeigt werden?

//---

Oder ist das ein Tippfehler? )))

 
Für Berechnungen der Bitmap-Leistung ist es ratsam, sich den Code anzusehen. Vielleicht gibt es zusätzliche Umzeichnungsvorgänge.
 
tol64:

So funktioniert es, wenn überhaupt:

Richtig, ich habe herausgefunden, warum ich mich nicht bewegt habe, ich habe die ObjekteigenschaftOBJPROP_TIMEFRAMES gesetzt, wonach sich das Objekt nicht mehr bewegt.

D.h. für das Minutendiagramm habe ich die Eigenschaft

obj.Timeframes(OBJ_PERIOD_M1);

und sich das Objekt nicht mehr bewegt, scheint es sich um eine Störung zu handeln.

Nach dem Umschalten der Diagrammperiode funktioniert alles normal, wie z. B. das Umschalten auf M2 und dann auf M1, und alles ist in Ordnung.

 

voix_kas:

Was soll ich sagen? Eine Bitmap arbeitet (!) um eine Größenordnung langsamer als 26 normale Etiketten. Ich habe versucht, den Vorgang des Kopierens von Mustern in die Arbeitsleinwand (Array uint 250*410), d.h. den Vorgang auf einer Leinwand, von OnTick() auszuschließen. Der Gewinn ist nur in Echtzeit spürbar. Im Testgerät ist es dasselbe, mit absoluter Produktivitätsverschlechterung. Es wurde der ModusCOLOR_FORMAT_ARGB_NORMALIZE verwendet, da die anderen Modi ein weniger ästhetisches Aussehen ergeben. Mit Blick auf die Zukunft sollte ich sagen, dass die Arbeit an einer Leinwand schwierig ist, weil man die Überlagerung früherer Beschriftungen (saubere Bereiche) verfolgen muss.


1. Wie messen Sie die Geschwindigkeit?

2. Können Sie die Quelle beifügen (in einer privaten Nachricht oder auf einer CD)?

 
alexvd:


1. Wie messen Sie die Geschwindigkeit?

2. Können Sie den Quellcode anhängen (in einer privaten Nachricht oder auf einer CD)?

Leider habe ich den Code aus Mangel an Interesse nicht gespeichert.Allgemein gesprochen:

OnInit():

1. Erzeugt eine Bitmap auf dem Diagramm.

2. Es werden zwei Leinwände erstellt(uint 250*410): eine Vorlage und eine Arbeitsleinwand. Auf der Vorlage sind 13 Etiketten mit den Namen der statistischen Parameter angebracht (TextOut).

OnTick():

1. Die Vorlage wird auf die Arbeitsfläche kopiert.

2. Die 13 Beschriftungen mit den entsprechenden Werten der statistischen Parameter werden auf die Arbeitsfläche übertragen (TextOut).

3. Erzeugt eine Ressource.

4. Die Arbeitsleinwand wird aktualisiert.

Ich habe keine besondere Zeitmessung vorgenommen, denn es ist offensichtlich, dass die Geschwindigkeit um eine Größenordnung gesunken ist. Was in der Tester, als auch in Echtzeit (beim Scrollen Graph ist ganz offensichtlich friert / ruckelt).

Ich habe versucht, Punkt 1. aus OnTick() zu entfernen. In Echtzeit wird es erträglich, aber der Tester kriecht kaum. Auch dies kann nicht in Echtzeit erfolgen, da an den Stellen der vorherigen Markierungen auf der Arbeitsfläche keine Reinigung vorgenommen wurde.

Auch hier habe ich den ModusCOLOR_FORMAT_ARGB_NORMALIZE verwendet, weil Beschriftungen(TextOut)ohne Alphakanal unästhetisch aussehen.