Fehler, Irrtümer, Fragen - Seite 2573

 

Oh ja, dann müssen Sie sich keine Sorgen über eine Überlastung der Festplatte machen.
Was mich überrascht, ist die Verwendung globaler Variablen des Terminals (wenn es darum geht) für die Speicherung großer Datenmengen.
Das ist eine unheimliche Krücke, nicht wahr?

Okay, die Variablen selbst, aber da sind ja noch ihre Stringnamen, die auch gespeichert werden müssen und trotzdem jedes Mal eine Stringsuche für den Zugriff auf diese Variable durchführen, ganz zu schweigen von dem einzigen Typ double, der gespeichert werden kann. Sicher, Sie können die Gewerkschaft nutzen, aber die Nutzung ist nicht kostenlos.

Es ist viel korrekter, das Speichern unabhängig über die Ressourcen eines beliebigen Datenarrays mit automatischer Speicherung auf der Festplatte oder beim Auftreten eines Deinit-Ereignisses zu implementieren

 
Nikolai Semko:

Variablen selbst sind in Ordnung, aber es gibt Stringnamen, die auch gespeichert werden müssen und trotzdem jedes Mal eine Stringsuche für den Zugriff auf diese Variable durchführen, ganz zu schweigen von dem einzigen Typ double, der gespeichert werden kann. Es ist klar, dass wir die Gewerkschaft nutzen können, aber ihre Nutzung ist auch nicht kostenlos.

Ich hatte die Idee und den Wunsch, globale Variablen zu verwenden, aber ich beschloss, sie auf die alte Weise auf der Festplatte zu speichern, vor allem jetzt, wo ich anfing, Code richtig zu schreiben - Daten werden in Strukturen gespeichert, und man kann Strukturen mit einem Klick auf die Festplatte ausgeben - FileWriteStruct().



so, die globalen Variablen "müssen genau umgekehrt verwendet werden" - Daten sollten in den globalen Variablennamen gespeichert werden. und die Prüfsumme in doppelt mit Base64 - alles ist bereit in CryptEncode(), und idealerweise sollte es Base85 ( Ascii85 ) oder irgendwo gesehen Quellcode auf der githab Base128 sein

und wenn ich mich nicht irre, ist der Name der globalen Variablen im Terminal 256 Zeichen lang? die Effizienz von Base64 beträgt etwas mehr als 60% (Größe), andere Codierungsmethoden haben eine höhere Effizienz - Sie können 160-180 Bytes in einer globalen Variablen speichern

Sie müssen zwar die Daten anhand des Präfixes bestimmen, aber im Allgemeinen wird es funktionieren - zumal globale Variablen nur selten verwendet werden - alle Namen sind im Wesentlichen frei

 
Igor Makanu:

Ich hatte die Idee und den Wunsch, globale Variablen zu verwenden, aber ich beschloss, sie auf der alten Weise auf der Festplatte zu speichern, vor allem jetzt, wo ich begonnen habe, Codes so korrekt wie möglich zu schreiben - ich speichere Daten in Strukturen, und ich kann Strukturen mit einem Klick auf die Festplatte ausgeben - FileWriteStruct().



so, die globalen Variablen "müssen genau umgekehrt verwendet werden" - Daten sollten in den globalen Variablennamen gespeichert werden. und die Prüfsumme in doppelt mit Base64 - alles ist bereit in CryptEncode(), und idealerweise sollte es Base85 ( Ascii85 ) oder irgendwo gesehen Quellcode auf der githab Base128 sein

und wenn ich mich nicht irre, ist der globale Variablenname im Terminal 256 Zeichen lang? die Effizienz von Base64 liegt bei etwas über 60% (Größe), andere Kodierungsmethoden haben eine höhere Effizienz - so können Sie 160-180 Bytes in einer globalen Variablen speichern

Sie müssen zwar die Daten anhand des Präfixes bestimmen, aber im Allgemeinen wird es funktionieren - zumal globale Variablen selten verwendet werden - alle Namen sind im Wesentlichen frei

Um jedoch an eine Variable zu gelangen, müssen Sie die Prüfsummen durchgehen, bis Sie die richtige finden. Was ist, wenn es viele Variablen gibt?
Oder Sie können eine Folge von Variablen verfolgen und ihnen Indizes zuweisen. Aber das ist absolut nutzlos, denn es ist einfacher, eine Klasse zum Speichern von Daten zu schreiben
 
Nikolai Semko:
es ist einfacher, eine Klasse zum Speichern von Daten zu schreiben

Die Klasse ist übersichtlich gestaltet und enthält Beispiele. Die Entwickler werden neue Funktionen einführen, die es ermöglichen, Daten bereits ohne das Schreiben von Wrappern um Ressourcen zu übertragen.

Globale Variablen werden für Flaggen verwendet. Es ist auch praktisch, ihre Werte immer zu sehen - F3.

 
fxsaber:

Die Klasse ist übersichtlich gestaltet und enthält Beispiele. Die Entwickler werden neue Funktionen einführen, die es ermöglichen, Daten bereits ohne das Schreiben von Wrappern um Ressourcen zu übertragen.

Globale Variablen werden für Flaggen verwendet. Es ist auch praktisch, ihre Werte immer zu sehen - F3.

Ja, das habe ich. Deshalb war ich auch überrascht.
Für die Wertkontrolle stimme ich zu, dann gerechtfertigt.
 
Georgiy Merts:

Ich habe festgestellt, dass in meinem visuellen Testmodus SymbolInfoTick() einen Wert zurückgibt, aber die Close[0]-Zeitreihe einen anderen Wert hat.

Ist es mein Fehler? Mache ich etwas falsch?

Es scheint, dass es die gleichen Werte sein sollten:

Normalerweise beträgt der Unterschied 1-2 Punkte, aber bei starken Bewegungen kann er auch größer sein.

Geht es nur mir so?

Wenn sich herausstellt, dass SymbolInfoTick() einen anderen Wert als Close[0] liefert, gehe ich davon aus, dass der korrekte Wert Close[0] ist, und belasse eine Spanne, wie sie von SymbolInfoTick() zurückgegeben wurde.

Aber es ist interessant zu verstehen, welcher Preis richtig ist, welcher Preis von DC "gesucht" wird - SymbolInfoTick() oder Close[0].

Wie lautet die Baunummer?

Build 2155 sollte inzwischen behoben sein - dieser Fehler wurde letzte Woche behoben

 
Slava:

Wie lautet die Baunummer?

Build 2155 sollte inzwischen behoben sein - der Fehler wurde letzte Woche behoben.

Ja, ja. Und ich habe 2085.

Verstanden, ich aktualisiere.

P.S. Ja, die Werte sind jetzt dieselben.
 
Slava:

Wie lautet die Baunummer?

Build 2155 sollte inzwischen behoben sein - dieser Fehler wurde letzte Woche behoben

Wissen Sie etwas darüber?
https://www.mql5.com/ru/forum/1111/page2571#comment_13285021
 
Aleksei Beliakov:
Wissen Sie etwas darüber?
https://www.mql5.com/ru/forum/1111/page2571#comment_13285021

Sie haben keine Details angegeben, um zu reproduzieren

 
Slava:

Sie haben keine Angaben zur Reproduktion gemacht

Banal, wenn Sie die Ergebnisse dieser Funktionen in ontick drucken, ist es für die Zeit 1970.01.01 für den Preis 0
Früher war es Bar- oder Preiszeit.
Jetzt ist es also so.
iHigh(NULL,PERIOD_W1,0) в журнале будет 0
iTime(NULL,PERIOD_W1,0) в журнале будет 1970.01.01