Fehler, Irrtümer, Fragen - Seite 2940

 
Slava Botalov:

Schade, wir müssen auf einen anderen umsteigen. Haben Sie einen Vorschlag?

Alle Vorschläge sind bei Google zu finden. Jegliche Diskussion über Dritte ist hier untersagt.

 
Vladimir Karputov:

Alle Vorschläge sind bei Google zu finden. Jegliche Diskussion über Dritte ist hier untersagt.

Ich hab's. DANKE, dass Sie mir bei meiner Frage geholfen haben

 
x572intraday:

Das ist nicht der Punkt. Die Frage ist, wo kann es nützlich sein, insbesondere für Händler, nicht für Programmierer? Ich habe solche Zahlen im Terminal nicht gesehen, weder in der Preisskala, noch im Fenster für die Auftragserteilung, alles ist überall gleich (irgendwo fünfstellig, irgendwo anders).

Es geht nicht um die Frage, wo sie nützlich sein kann. Es geht darum, zu wissen, wie Zahlen in Computern dargestellt werden, zu wissen, dass es für Computer keine Zahl 0,72352 gibt, sondern nur 0,7235200000000001, die auf 5 Stellen gedruckt werden kann, und dafür gibt es eine Funktion DoubleToString.
 

Daten können nicht kopiert werden:

MqlRates mql_rates[];
bar_kol = Bars("EURUSD", _Period);
copy_rates = CopyRates("EURUSD", _Period, bar_kol, 100, mql_rates);

bar_kol wird zu 6105 und copy_rates zu -1 (Fehler), wenn versucht wird, Daten von 6105 Balken auf +100 Balken zu kopieren.

Das Protokoll zeigt Folgendes an:

EURUSD: Geschichte synchronisiert von 2007.01.02 bis 2020.06.30

EURUSD,H1: History Cache für 74955 Balken zugeordnet und enthält 6105 Balken von 2008.01.02 10:00 bis 2008.12.31 17:00

EURUSD,H1: Geschichte beginnt mit 2008.01.02 10:00

Die Historie wird mit 74955 Balken zwischengespeichert, das Jahr 2008 enthält jedoch die gleichen 6105 Balken. D.h. maximal Kopien von Sperren für ein Jahr. Es ist nicht möglich, mehr als 6105 Takte zu kopieren. Die maximale Anzahl der Balken im Fenster beträgt 100000, die gesamte Historie ist im Diagramm sichtbar, man kann durch sie blättern, alle Balken sind vorhanden und alles wird geladen. Buchstäblich, das Array mql_rates wird nicht kopiert.

 

Debugging, nicht echte Daten. Wenn Sie in einer Zeile hängen bleiben und wiederholt F11 oder F10 drücken, wird das Debugging nicht fortgesetzt. Der Zeiger bleibt auf einer Zeile stehen und der Bildschirm blinkt nur.

Build 2715. Win10, 20H2 build 19042.746.


dies ist der Stand der Erinnerung

 
Ilyas:

Wie groß ist die Gefahr, dass ZeroMemory in dieser Situation einen Fehler verursacht?

struct A
{
private:
  int i;
};

void OnStart()
{
  A a[1];
  
  ZeroMemory(a); // not allowed for objects with protected members or inheritance
}
 
Aleksey Mavrin:

Debugging, nicht echte Daten. Wenn Sie in einer Zeile hängen bleiben und wiederholt F11 oder F10 drücken, wird das Debugging nicht fortgesetzt. Der Zeiger bleibt auf einer Zeile stehen und der Bildschirm blinkt nur.

Build 2715. Win10, 20H2 build 19042.746.


dies ist der Zustand des Speichers

Bitte aktualisieren Sie auf die neueste Beta 2747.

Wir ändern eine Menge Dinge im Debugger.

 
fxsaber:

Wie groß ist die Gefahr, dass ZeroMemory in dieser Situation einen Fehler verursacht?

private/protected und const (in den meisten Fällen) sind nur für Programmierer gedacht, der Compiler hilft nur, die dem Code auferlegten Beschränkungen einzuhalten

Ein klassisches Beispiel:
Sie verwenden die Bibliothek eines anderen, unter der Haube befindet sich umfangreicher Code mit Verknüpfungen, die bei unbefugten Änderungen zu Fehlern führen würden. Daher versteckt der Ersteller der Bibliothek einen Teil des Objekts im privaten Bereich, um ungeplante Änderungen zu verhindern.

 
Ilyas:

private/protected und const sind (größtenteils) nur für Programmierer gedacht, der Compiler hilft nur dabei, die dem Code auferlegten Beschränkungen einzuhalten.

Ein klassisches Beispiel:
Sie verwenden die Bibliothek eines anderen, unter der Haube befindet sich umfangreicher Code mit Verknüpfungen, die bei unbefugten Änderungen zu Fehlern führen würden. Daher versteckt der Ersteller der Bibliothek einen Teil des Objekts im privaten Bereich, um ungeplante Änderungen zu verhindern.

Verstanden, danke für die ausführliche Erklärung!

 

Es scheint, dass das Feld real_volume in der Struktur MqlRates, obwohl es vom Typ long ist, nicht in der Lage ist, Werte im Bereich aller Long-Werte zu speichern (laut Dokumentation - 0x7FFFFFFFFFFFFFFFFF). Zum Beispiel wird 0x4000000000000000A8 in das Feld 0xA8 geschrieben. Ich spreche von benutzerdefinierten Charakteren.

Ist der tatsächliche Bereich der gültigen Werte irgendwo angegeben? Im Grunde genommen gibt es keinen Grund dafür, dass es nicht wie ein normales langes Stück funktioniert - es sieht nach einem Fehler aus.

PS. für tick_volume wahrscheinlich das gleiche Problem