Fehler, Irrtümer, Fragen - Seite 930

 
kPVT
Danke für den Hinweis.
Bitte teilen Sie Ihre Erfahrungen mit. Konkret:
1. Mechanismus zur Erzeugung eindeutiger Namen. Direkte Aufzählung vorhandener Namen durch Auto-Inkrement?
2. Mechanismus zur Überprüfung der Authentizität von Objekten. D.h. nicht nur prüfen, ob es ein Objekt mit diesem Namen gibt, sondern alle seine Parameter, z.B. Größen, Typen, Text, etc. Im Sinne der Ressourcenschonung. Es ist ziemlich arbeitsintensiv, eine riesige Anzahl von Überprüfungen für jede Eigenschaft eines jeden Objekts bei jedem Tick durchzuführen. Natürlich, wenn es entweder Sperrung des Objekts von allen Änderungen von außen (außer für EA-Ersteller), oder Berechnung von Objekt-Hash zu FAST (in einem "wenn") überprüfen Objekt für die Authentizität.
 

Bitte bestätigen Sie die Reproduktion der Situation, dass die Karte nicht neu gezeichnet werden kann.

Beigefügt ist ein einfacher Experte. Bedingungen:

1. Von 2013.01.07 bis 2013.02.11. Höchstwahrscheinlich nicht betroffen.

2. Prüfung im visuellen Modus.

3. Verringern Sie bei der ersten Fahrt die Geschwindigkeit auf ein Minimum:

4. Beim nächsten Lauf nach der Initialisierung drücken Sie F12 (ein Häkchen erzeugen).

Eine weitere sehr wichtige Voraussetzung ist, dass das Terminal im Offline-Modus läuft. Für ein sauberes Experiment versuchen Sie, den Computer vom Netzwerk zu trennen (trennen Sie alle Netzwerkadapter).

Beachten Sie.

1. Späte Anzeige der Streuwerte im Diagramm.

Funktion ChartRedraw funktioniert nicht richtig oder habe ich etwas falsch gemacht? Wenn Sie das Diagramm mit der Maus verschieben (horizontal verschieben (Zeit)), wird es korrekt neu gezeichnet.

Dateien:
1.mq5  4 kb
 
voix_kas:
kPVT
Danke für den Hinweis.
Bitte teilen Sie Ihre Erfahrungen mit. Konkret:
1. Mechanismus zur Erzeugung eindeutiger Namen. Direkte Aufzählung vorhandener Namen durch Auto-Inkrement?
2. Mechanismus zur Überprüfung der Authentizität von Objekten. D.h. nicht nur prüfen, ob es ein Objekt mit diesem Namen gibt, sondern alle seine Parameter, z.B. Größen, Typen, Text, etc. Im Sinne der Ressourcenschonung. Es ist ziemlich arbeitsintensiv, eine riesige Anzahl von Überprüfungen für jede Eigenschaft eines jeden Objekts bei jedem Tick durchzuführen. Natürlich, wenn es entweder eine Sperre des Objekts gegen Änderungen von außen (außer dem Berater-Ersteller) gäbe, oder eine Berechnung des Objekt-Hashs, um das Objekt FAST auf Echtheit zu prüfen (in einem "wenn").

Ohne den Anspruch, wahr oder optimal zu sein.

1.Sie können die Standardbibliothek verwenden, die eine Zufallszahl + Name für den Objektnamen verwendet, z. B:18467RadioGroupItem0Button, 06334ClientBack. Und Sie müssen die Objekte nicht selbst löschen.

Ich habe mich noch nicht wirklich mit dem Standard-Biblio angefreundet und mache es auf diese Weise, ich hatte noch keine Probleme.

int nOBJ=0;//счетчик однотипных объектов
int OnInit()
  {
   //уникальное имя на основе текущего времени в момент инициализации (в 36 системе для краткости, пример: MI7E9G)
   basedName=ULongTo36Base(TimeLocal());
   leftName="LeftBorder "+basedName;//имя для единичного объекта
   ObjectCreate(0,leftName,OBJ_VLINE,0,time,0);
   for(nOBJ=1;nOBJ<=100;nOBJ++)//создание 100 однотипных объектов
    ObjectCreate(0,(string)nOBJ+basedName,OBJ_TREND,0,time,price);
   return(0);
  }
void OnDeinit(const int reason)
  {
   for(int del=1; del<=nOBJ; del++)
      ObjectDelete(0,(string)del+basedName);
   ObjectDelete(0,leftName);
   return;
  }

Hier wird die Diskretion 1 Sekunde betragen. Wenn Sie mehrere identische Indikatoren aus der Vorlage hinzufügen, wird es zu Kollisionen kommen. In diesem Fall können Sie Indikatorparameter zu basedName hinzufügen, oder vielleicht Millisekunden zu TimeLocal(), Zufallszahl oder etwas anderes. Im Allgemeinen gibt es Varianten.

2. die Authentizität des Objekts - sein eindeutiger Name. Zwei Objekte, auch von verschiedenen Typen mit demselben Namen, können nicht in einem Diagrammfenster sein. Warum sollten Sie alle Eigenschaften des Objekts überprüfen? Erklären Sie das.

Möchten Sie die manuelle Änderung der Objekteigenschaften überprüfen? Es gibt das EreignisCHARTEVENT_OBJECT_CHANGE.

Um ein versehentliches Löschen zu verhindern, müssen Sie beim Zugriff auf ein Objekt dessen Existenz prüfen und es gegebenenfalls wiederherstellen (es gibt übrigens ein Ereignis zum Löschen von Objekten - ich verwende es nicht).


Wenn Sie dennoch Comment verwenden möchten, um formatierte Informationen auszugeben, können Sie z. B. die gewünschte Länge der Zeichenkette angeben und in Kenntnis dieser Länge die Beschreibung und den Parameterwert (die ihre Länge definieren) an den richtigen Stellen einfügen.

Документация по MQL5: Основы языка / Функции / Функции обработки событий
Документация по MQL5: Основы языка / Функции / Функции обработки событий
  • www.mql5.com
Основы языка / Функции / Функции обработки событий - Документация по MQL5
 
voix_kas:
kPVT
Danke für den Hinweis.
Bitte teilen Sie Ihre Erfahrungen mit. Konkret:
1. Mechanismus zur Erzeugung eindeutiger Namen. Direkte Aufzählung vorhandener Namen durch Auto-Inkrement?
2. Mechanismus zur Überprüfung der Authentizität von Objekten. D.h. nicht nur prüfen, ob es ein Objekt mit diesem Namen gibt, sondern alle seine Parameter, z.B. Größen, Typen, Text, etc. Im Sinne der Ressourcenschonung. Es ist ziemlich arbeitsintensiv, eine riesige Anzahl von Überprüfungen für jede Eigenschaft eines jeden Objekts bei jedem Tick durchzuführen. Natürlich, wenn es entweder Sperrung des Objekts von allen Änderungen von außen (außer Ersteller EA), oder Berechnung des Objekts Hash zu FAST (in einem "wenn") überprüfen Objekt für die Authentizität.
Vielleicht hilft das: Betrachten Sie den Markt durch vorgefertigte Klassen
 

kPVT

Danke für den Hinweis. Ich werde versuchen, CHARTEVENT_OBJECT_CHANGE zu verwenden, um es zu kontrollieren.

Dima_S

Ich danke Ihnen. Aber ich sehe nicht die Notwendigkeit, Standardklassen zu verwenden.

Bitte testen Sie die ChartRedraw-Funktion anhand eines einfachen, vorgefertigten Expert Advisors in meinem vorherigen Beitrag. Leider kommt sie aus irgendeinem Grund einen Tick zu spät. D.h. im Beispiel wird der Wert des Spreads für den vorherigen Tick angezeigt, während die Verarbeitung und Ausgabe zum aktuellen Tick erfolgt.

 
voix_kas:

kPVT

Danke für den Hinweis. Ich werde versuchen, CHARTEVENT_OBJECT_CHANGE zu verwenden, um es zu kontrollieren.

Dima_S

Ich danke Ihnen. Aber ich sehe nicht die Notwendigkeit, Standardklassen zu verwenden.

Bitte testen Sie die ChartRedraw-Funktion anhand eines einfachen, vorgefertigten Expert Advisors in meinem vorherigen Beitrag. Leider kommt sie aus irgendeinem Grund einen Tick zu spät. D.h. im Beispiel wird der Wert des Spreads für den vorherigen Tick angezeigt, während die Verarbeitung und Ausgabe zum aktuellen Tick erfolgt.

Bitte sehr. Wenn Sie den Artikel gelesen hätten, hätten Sie die Antworten auf die beiden Fragen gefunden))
 

Große Programme können nicht vom Markt heruntergeladen und installiert werden. Bitte seien Sie vorsichtig. Der Grund dafür ist unbekannt.

Es kann einige Einschränkungen geben. Es gibt keine offiziellen Informationen über sie.

 

Können Sie mir einen Tipp geben?

1. ein Indikator, der aus Ressourcen aufgerufen wird, keine Eingabeparameter erhalten kann?
2. Wenn nicht, gibt es eine Möglichkeit und wie kann man dies (mit Krücken) umgehen?
 

Es ist dasselbe wie bei iCustom().

handle=iCustom(_Symbol,_Period,"::Indicators\\Examples\\ZigZag.EX5",12,5,3);
 
Karlson:

Es ist dasselbe wie bei iCustom().

Genau, das kann sie. Ich habe einen Fehler im Code gemacht.

Ich danke Ihnen.