Fehler, Irrtümer, Fragen - Seite 3127

 

Ah, funktioniert dieses Thema im Debugger nicht mehr?
Schade :(( Es war sehr nützlich für meine Arbeit


 
Nikolai Semko #:

Ja, Sie haben wahrscheinlich Recht. Dies ist wahrscheinlich der Fall.
Und um Ressourcen zu sparen, wäre es gut, die Fensteraktivität zu überwachen und keine Bitmap zu erzeugen, wenn das Fenster nicht aktiv ist.

Es lohnt sich, nachzuprüfen, statt Vermutungen anzustellen.

Was wir herausgefunden haben:

  • Ressource wird beim Fensterwechsel nicht gelöscht
  • beim Umschalten von Fenstern tritt das Ereignis CHARTEVENT_CHART_CHANGE auf, weil das Fenster auf die Größe des vorherigen "nicht alle Fenster" geändert wird, d.h. als ob das Fenster in diesen Modus umgeschaltet wurde
  • Es ist sinnvoll, die Fensteraktivität zu überwachen (ChartGetInteger(0, CHART_BRING_TO_TOP)) und die Bitmap-Generierung (Füllen der Leinwand) zu deaktivieren, um CPU-Ressourcen zu sparen, wenn das Fenster inaktiv ist.


Im Testindikator wird der Zähler in der Kanvas-Ressource gespeichert.

Dateien:
 
Nikolai Semko #:

Was man herausgefunden hat:

  • Ressource wird beim Fensterwechsel nicht gelöscht
  • das Ereignis CHARTEVENT_CHART_CHANGE tritt beim Fensterwechsel auf, da das Fenster auf die Größe des vorherigen "nicht alle Fenster" angepasst wird, d.h. so, als ob das Fenster in diesen Modus geschaltet wurde:
  • Es ist sinnvoll, die Fensteraktivität zu überwachen (ChartGetInteger(0, CHART_BRING_TO_TOP)) und die Bitmap-Generierung (Füllen der Leinwand) zu deaktivieren, um CPU-Ressourcen zu sparen, wenn das Fenster inaktiv ist.

Im Testindikator wird der Zähler in der Kanvas-Ressource gespeichert.

Das ist also Ihr offensichtlicher Fehler - die Verwendung derselben Ressource auf vielen Charts in vielen Indikatoren.
Ihre Indikatoren (oder EA) funktionieren nicht, wenn das Fenster nicht aktiv ist - d.h. der Benutzer kann nicht mehrere Kopien gleichzeitig auf verschiedenen Charts verwenden.
 
Taras Slobodyanik #:

Ihr Fehler ist also offensichtlich - Sie verwenden dieselbe Ressource in vielen Charts in vielen Indikatoren.
Ihre Indikatoren (oder EA) funktionieren nicht, wenn das Fenster nicht aktiv ist - d.h. der Benutzer kann nicht mehrere Kopien von ihnen gleichzeitig in verschiedenen Charts verwenden.
Was ist das für ein Unsinn, Taras?
Ich weiß nicht einmal, wie ich darauf antworten soll.
Rechnen Sie nach.
Was hat das mit der Leistung der Indikatoren und der grafischen Ausgabe zu tun? Jeder Indikator oder EA hat seine eigenen grafischen Ressourcen.
Schauen Sie sich die CCanvas-Klasse an, wie der Ressourcenname gebildet wird.
 
Nikolai Semko #:
Was hat das mit der Leistung der Indikatoren und der grafischen Ausgabe zu tun? Jeder Indikator oder EA hat seine eigenen grafischen Ressourcen.
Schauen Sie sich die CCanvas-Klasse an, wie der Ressourcenname gebildet wird.

Und wenn die Ressourcen gleich sind, werden sie für alle Kopien neu gezeichnet.

Ich habe Ihren Code im Fenstermodus und auf derselben Karte geprüft - die Größe ist dieselbe.
Im "erweiterten" Modus ändert sich zwar die Größe, aber das ist ein alter Fehler, der schon einige Jahre alt ist.

Was haben die Funktionsweise des Indikators und die grafische Ausgabe damit zu tun?

Ich meine, wenn das Fenster inaktiv ist und Sie empfehlen, die Leinwand nicht zu aktualisieren, bedeutet dies, dass

ps. und folglich - Paneele werden nicht funktionieren, dank Ihrer Beratung :)

d.h. visuell im Fenstermodus werden die Indikatoren (und EA) nicht aktualisiert.

ps. jedoch, wenn die Überprüfung nur in OnChartEvent, sollte es funktionieren, ich muss überprüfen.

 
Taras Slobodyanik #:

Wenn die Ressourcen gleich sind, werden sie für alle Kopien neu gezeichnet.

sie sind nicht dasselbe

Wenn das Fenster inaktiv ist, empfiehlt es sich, die Leinwand nicht zu aktualisieren - das bedeutet, dass

d.h. visuell im Fenstermodus werden die Indikatoren (und EA) nicht aktualisiert.

ja, war falsch mit CHART_BRING_TO_TOP
sollte die Option fxsaber verwenden

 
Nikolai Semko #:

Was man herausgefunden hat:

  • Ressource wird beim Fensterwechsel nicht gelöscht
  • das Ereignis CHARTEVENT_CHART_CHANGE tritt beim Fensterwechsel auf, da das Fenster auf die Größe des vorherigen "nicht alle Fenster" angepasst wird, d.h. als ob das Fenster in diesen Modus übergehen würde:
  • Es ist sinnvoll, die Fensteraktivität zu überwachen (ChartGetInteger(0, CHART_BRING_TO_TOP)) und die Bitmap-Generierung (Füllen der Leinwand) zu deaktivieren, um CPU-Ressourcen zu sparen, wenn das Fenster inaktiv ist.


Im Testindikator wird der Zähler in der Kanvas-Ressource gespeichert.

Perfekt. Jetzt können Sie genau sagen, wie die Dinge funktionieren, statt nur zu raten. Nützlich für jeden, der mit CCanvas arbeitet.

 
Nikolai Semko #:

Ah, funktioniert dieses Thema im Debugger nicht mehr?
Schade :((( Es war sehr nützlich für meine Arbeit


Welche Version haben Sie, Beta oder Release?

 
Mihail Matkovskij #:

Welche Version haben Sie, Beta oder Release?

 
Nikolai Semko #:

Sie sind wahrscheinlich in der Beta-Phase. Ich dachte, diese Funktion wäre in der Beta-Version verschwunden. Aber ich habe meine eigene Version (Build 3091, Release-Version) überprüft und sie funktioniert auch nicht.