Fehler, Irrtümer, Fragen - Seite 454

 
Interesting:
Es scheint mir, dass Sie jedes Element des Arrays einzeln übersetzen müssen.

Ich möchte Hilfe, keine Tiraden. Lassen Sie mich klarstellen, ich versucht, mit CharArrayToString mit CP_UTF16 zu übersetzen, aber es scheint nicht unterstützt werden. Vielleicht brauche ich eine weitere Code-Seite?

Frage an die Entwickler - in der Hilfe steht, dass die Seiten, die nicht in den Standardkonstanten enthalten sind, manuell hinzugefügt werden können. Werden alle von ihnen unterstützt oder nicht?

 
TheXpert:

Ich möchte Hilfe, keine Tiraden. Lassen Sie mich das klar, ich habe versucht, CharArrayToString von CP_UTF16 zu verwenden, aber ich habe ein Gefühl, es wird nicht unterstützt. Vielleicht brauche ich eine weitere Code-Seite?

Frage an die Entwickler -- in der Hilfe steht, dass die Seiten, die nicht in den Standardkonstanten enthalten sind, manuell hinzugefügt werden können. Werden alle von ihnen unterstützt oder nicht?

Ich habe die Frage missverstanden. Wenn ich die Dokumentation für CP_UTF16 richtig verstanden habe, müssen Sie den erforderlichen numerischen Code angeben (welcher das ist, ist noch nicht klar).

Nun, das ist wahrscheinlich eine Frage für Entwickler.

 
Zusätzlich zu der Frage - https://www.mql5.com/ru/forum/1111/page455#comment_80246 -, auf die ich immer noch gerne eine Antwort hätte, werde ich die Situation präzisieren. Ich habe einen Multicurrency-Indikator, den ich auf MetaQuotes und Alpari teste. Ich benutze es für Alpari, aber mit MetaQuotes gibt es oft BarsCalculated für verschiedene Symbole und insbesondere Fehler 4806 oder nur 0 Bars gezählt. Bitte zeigen Sie mir, wo ich mehr über die Ursachen von 4806 und deren Behebung lesen kann. Ich verwende Metaquotes Code für die Datensynchronisation - CheckLoadHistory Funktion von https://www.mql5.com/ru/docs/series/timeseries_access Seite. Fehler von BarsCalculated treten auf, nachdem diese Funktion auf Null gesetzt wurde (d.h. die Daten für die Berechnung sollten vorhanden sein). Kann man ihr überhaupt trauen oder ist etwas anderes erforderlich? Um auf Nummer sicher zu gehen, möchte ich klarstellen, dass der Indikator Standardbalken für die Berechnung verwendet, und es ist ihre Bereitschaft, die durch den Aufruf von BarsCalculated überprüft wird.
 
marketeer:
Zusätzlich zu der Frage - https://www.mql5.com/ru/forum/1111/page455#comment_80246 -, auf die ich immer noch gerne eine Antwort hätte, werde ich die Situation präzisieren. Ich habe einen Multicurrency-Indikator, den ich auf MetaQuotes und Alpari teste. Ich benutze es für Alpari, aber mit MetaQuotes gibt es oft BarsCalculated für verschiedene Symbole und insbesondere Fehler 4806 oder nur 0 Bars gezählt. Bitte zeigen Sie mir, wo ich mehr über die Ursachen von 4806 und deren Behebung lesen kann. Ich verwende Metaquotes Code für die Datensynchronisation - CheckLoadHistory Funktion von https://www.mql5.com/ru/docs/series/timeseries_access Seite. Fehler von BarsCalculated treten auf, nachdem diese Funktion auf Null gesetzt wurde (d.h. die Daten für die Berechnung sollten vorhanden sein). Kann man ihr überhaupt trauen oder ist etwas anderes erforderlich? Um auf Nummer sicher zu gehen, möchte ich klarstellen, dass der Indikator die Standardmasken für die Berechnung verwendet und deren Bereitschaft durch den Aufruf von BarsCalculated überprüft wird.

Wenn die Antwort nicht von BarsCalculated kommt, werden die Daten nach einem Bruchteil einer Sekunde synchronisiert. Abgefangen im Moment der Synchronisation, BarsCalculate=0.
 
Swan:
Wenn die Aktualisierung nicht von Sami stammt, werden die Daten nach einer lächerlichen Zeitspanne synchronisiert. Synchronisiert gefangen, BarsCalculate=0.

Vielen Dank für die Informationen, obwohl ich "selbst" sagen kann, dass ich mit einem solchen Verhalten nicht sehr glücklich bin - es stellt eine erhebliche Unsicherheit in der Funktionsfähigkeit der Software dar. Ich habe z.B. schon vor mehr als einer Stunde einen Indikator aufgehängt, in dem ich ein paar neue Ticker angezeigt habe - in der Marktübersicht sind sie - wenn der Verweis auf die oben genannten Funktionen das Herunterladen und Zählen ausgelöst haben sollte, dann müsste alles längst fertig sein, aber das ist nicht so. Zumindest wäre es wünschenswert, im Systemjournal jedes Niesen des Terminals über das Hochladen und andere "unterirdische" Aktionen zu sehen, sonst ist nicht klar, aus welchem Grund es "heruntergefahren" ist - der letzte Eintrag im "Expert" mit dem 4806-Fehler, aber im System - sagt, dass das Terminal nicht mehr synchron ist. In Anbetracht der Tatsache, dass es am Wochenende keine Zecken gibt, habe ich die Einstellungen mehrmals geändert, aber immer noch keine Daten.

Ich habe zum Beispiel RTS-9.11 genommen, aber die oben erwähnte Refresh-Funktion von MetaQuotes liefert regelmäßig Load failed.

 
Eine andere Frage. In fourth könnte man multidimensional array func(int array[][]) als Funktionsargument schreiben. In der fünften erzeugt der Compiler einen Fehler mit einem ungültigen Indexwert - er verlangt die Angabe der Dimensionalität. Ich schrieb func(int &array[][3]) - kein Fehler, aber es ist keine Lösung. Wie schreibt man dann Funktionen? Definitionsgemäß besteht ihr Sinn darin, ein abstraktes Codefragment zuzuweisen, das auf verschiedene Daten, verschiedene Arrays, anwendbar ist.
 
marketeer:
Eine andere Frage. In Quaternary könnte man multidimensional array func(int array[][]) als Funktionsargument schreiben. In der fünften erzeugt der Compiler einen Fehler mit einem ungültigen Indexwert - er verlangt die Angabe der Dimension. Ich schrieb func(int &array[][3]) - kein Fehler, aber es ist keine Lösung. Wie schreibt man dann Funktionen? Ihr Sinn besteht definitionsgemäß darin, ein abstraktes Codefragment zuzuweisen, das auf verschiedene Daten, verschiedene Arrays anwendbar ist.

Das ist meine Aufgabe:

class cArray2
  {
   double            _Data[];
   int               _ColumnsCount;
   int               _RowsCount;
   ...
   ...
  }

Ich übergebe Objekte dieser Klasse als Argumente.

Mit anderen Worten, ich verwende ein eindimensionales Array als Datenspeicher beliebiger Dimension, wobei ich die "mehrdimensionalen" Indizes selbst in "eindimensionale" Indizes (und zurück) umrechne.

Es funktioniert mit einer recht akzeptablen Geschwindigkeit.

Sie können die Meta-Zitate verstehen. Wenn Sie die Einschränkung "nur eine Dimension ist undefiniert" nicht einführen, können Sie zur Kompilierzeit keinen Hochgeschwindigkeitscode für den Zugriff auf ein Array-Element erzeugen.

 
marketeer:

Vielen Dank für die Information, obwohl ich "selbst" sagen kann, dass ich mit einem solchen Verhalten nicht sehr glücklich bin - es stellt eine erhebliche Unsicherheit in der Funktionsfähigkeit der Software dar. Ich habe z.B. schon vor mehr als einer Stunde einen Indikator aufgehängt, in dem ich ein paar neue Ticker angezeigt habe - in der Marktübersicht sind sie - wenn der Verweis auf die oben genannten Funktionen das Herunterladen und Zählen ausgelöst haben sollte, dann müsste alles längst fertig sein, aber das ist nicht so. Zumindest wäre es wünschenswert, im Systemjournal jedes Niesen des Terminals über das Hochladen und andere "unterirdische" Aktionen zu sehen, sonst ist nicht klar, aus welchem Grund es "heruntergefahren" ist - der letzte Eintrag im "Expert" mit dem 4806-Fehler, aber im System - sagt, dass das Terminal nicht mehr synchron ist. In Anbetracht der Tatsache, dass es am Wochenende keine Zecken gibt, habe ich die Einstellungen mehrmals geändert, aber immer noch keine Daten.

Ich habe z.B. RTS-9.11 genommen, aber die Aktualisierungsfunktion von MetaQuotes, die im Link erwähnt wird, liefert regelmäßig Load failed.

Referenz:

Der Zugriff auf Indikator- und Zeitreihendaten erfolgt unabhängig von der Tatsache, dass die angeforderten Daten bereitstehen (der so genannte asynchrone Zugriff ). Dies ist für die Berechnung von benutzerdefinierten Indikatoren von entscheidender Bedeutung, so dass Funktionen wieCopy...() sofort einen Fehler zurückgeben, wenn die angeforderten Daten nicht vorhanden sind.

Am Wochenende gibt es keine Häkchen, der Indikator wird gestartet, und es wirdein Fehler zurückgegeben...

Imho gibt es nur eine Lösung, nämlich einen zusätzlichen Expert Advisor laufen zu lassen, der die gewünschte Historie lädt...

D.h. wenn Daten für den Expert Advisor verfügbar sind, sind sie auch für den Indikator verfügbar. Ich habe es nicht überprüft, die Lösung sieht schief aus.


Ich werde meine Frage wiederholen:

Hilfe:

Die Funktion Sleep() kann nicht vonbenutzerdefinierten Indikatoren aufgerufen werden, da Indikatoren im Schnittstellen-Thread ausgeführt werden und diesen nicht verlangsamen dürfen.

Das können Sie auf keinen Fall, oder wenn Sie wirklich wollen, können Sie es, aber vorsichtig? :)


Es gibt ein Problem beim Zugriff auf die Daten eines anderen Symbols aus dem Indikator.

wenn es keine Zecken gibt)
d.h. es gibt keine Möglichkeit für den Indikator, Daten über das Wochenende abzurufen, nicht seinen TF, nicht sein Symbol...
 
Swan:
d.h. es gibt keine Möglichkeit, dass der Indikator seine Daten am Wochenende erhält, nicht sein TF, nicht sein Symbol...
Meiner Meinung nach sind das alles Fehler. Die Ticks sind Ticks, aber nichts hindert (das Terminal) daran, Daten zu laden und Indizes zu berechnen, wenn keine Ticks vorhanden sind. Noch interessanter ist, dass derselbe Code auf verschiedenen Demoservern unterschiedlich funktioniert. Bei Alpari zum Beispiel werden sowohl Gold als auch Silber nach oben gezogen, und der Index wird neu berechnet. Das Problem scheint also umfassender zu sein als das.
 
MetaDriver:

Metacvots sind verständlich. Solange die Einschränkung "nur eine Dimension ist undefiniert" nicht gilt, kann man zur Kompilierungszeit keinen Hochgeschwindigkeitscode für den Zugriff auf ein Array-Element erzeugen.

Nun, ich kann es nicht verstehen ;-). Vor langer Zeit schlug ich vor, dass die fünfte Version maximal kompatibel mit der vierten Version gemacht werden sollte (insbesondere was die Syntax und die Unterstützung früherer API-Funktionen betrifft). Natürlich könnten neue Funktionen, wie z.B. schnelle Codegenerierung, hinzugefügt werden, aber dies könnte für neue Syntaxkonstrukte (Constraints) getan werden - z.B. mit diesen Parameter-Arrays: wer Geschwindigkeitsoptimierung will - spezifiziere die Dimensionen, und wer alten Code schnell und einfach portieren will - lasse ihn so wie er ist, und zum Teufel damit, dass der Code langsamer wäre. Es wäre ein Kompromiss zwischen Geschwindigkeit und Komfort, oder man könnte Assembler als mql5 anbieten. ;-).