Fehler, Irrtümer, Fragen - Seite 725

 
Snaf: Ich habe den Fehler im ersten Skript selbst gefunden, aber für das zweite Skript habe ich nicht genug Grips.

Bild 630

Dieses Beispiel wurde mit der neuen Version des MQL5-Compilers geschrieben. Wir entschuldigen uns dafür, dass wir dies nicht berücksichtigt haben. Bitte warten Sie noch ein wenig, dann wird alles kompiliert.
 
MetaDriver: Meine Funktion hat eine lange Zeichenkette aus Teilen zusammengesetzt, die von anderen Funktionen zurückgegeben wurden (OpenCL-Programmerstellung). Im Debugger läuft es wie am Schnürchen - der Build stürzt ab und sagt "Acces Violation"... ;)

Ich wollte schon an den Service Desk schreiben, aber dann hat es plötzlich geklappt. :) Ich konnte es nicht mehr reproduzieren (obwohl ich es ehrlich versucht habe), warum sollte ich es also zum Service Desk schicken?

Ja, es gibt ein eindeutiges Problem mit CLProgramCreate(). Ich habe die Stelle im Skript ausfindig gemacht, an der der erste Ausführungsfehler auftrat, und zwar in dieser Funktion. Die Funktion gibt keinen Wert zurück.

Das CL-Programm in Form eines Strings scheint korrekt wiedergegeben zu werden. Das CL-Programm selbst wird jedoch nicht erstellt.

 
Beim Testen von Crosses werden auch andere Kurse genau modelliert, um Gewinne und Margenanforderungen korrekt umzurechnen.

Versuchen Sie, die Visualisierung zu starten, und Sie werden sofort verstehen, wie viele Berechnungen auf der Anzahl der Hintergrundzeichen in Marketwatch basieren.
 
Bitte sagen Sie mir, wie mein Laptop und PC zu verschmelzen, beim Testen von Strategien, Computer arbeiten über einen Router, eine über Kabel, die andere über Wi-Fi, versucht, auf dem Desktop-Computer-Datei mt5 zu erstellen, warf ich auf dem Laptop, fügte hinzu, um den Abschnitt Remote, aber die Namen der Agenten sind die gleichen wie auf einem Laptop
 

aus dem Beitrag https://www.mql5.com/ru/forum/1111/page736#comment_185306

das Problem auf den Punkt gebracht:

- on-Funktion aus CFastFile::ReadInteger-Klasse

Es stellte sich heraus, dass in 630/64 entweder die Strukturzuweisung oder das Lesen von Array in Array schief ging, obwohl die schlimmste Variante die Umwandlung von vorzeichenbehafteten (short/int/char) in vorzeichenlose (ushort/uint/uchar) zu sein scheint.

Irgendwo gibt es zusätzliche Bits oder Offsets. Das Ergebnis ist, dass der Programmierer eine ganz andere Zahl abliest als beabsichtigt. Es wird für Sie einfacher sein, es auszusortieren und in der Funktion zu überprüfen.

Aber es funktioniert stabil mit demselben Code auf 4 Computern (der Code ist groß, ich kann die Darstellung nicht strecken).

 
lazarev-d-m:
Bitte sagen Sie mir, wie mein Laptop und PC zu verschmelzen, beim Testen von Strategien, Computer arbeiten über einen Router, ein über Kabel, das andere über Wi-Fi, versucht, eine Datei mt5 auf einem Desktop-Computer zu erstellen, warf es auf dem Laptop, fügte hinzu, um den Abschnitt Remote, aber die Namen der Agenten sind die gleichen wie auf einem Laptop
Funktioniert das nicht? Kundenterminal / Strategietester / Agenten
 
Yedelkin:
Funktioniert es nicht so? Kundenterminal / Strategietester / Agenten
Ich muss etwas falsch gemacht haben, jetzt habe ich die mt5-Datei wieder erstellt, jetzt sieht der Laptop die PC-Prozessoren, aber nichts geht weiter im Test, was kann das Problem sein, und ist es notwendig, Notebook-Prozessoren zum PC-Tester hinzuzufügen, wenn ich sie nicht auf dem PC verwenden werde?
 

Entwickler, ihr habt mich mit diesem Fehler überzeugt! Wie man so schön sagt: "Ich weine".

Funktionen von CFastFile ( ::ReadInteger)

        uint ReadArray(uchar &dst[], uint dst_start=0, int cnt=WHOLE_ARRAY) { int r=ArrayCopy(dst, m_data, dst_start, m_pos, cnt); if (r>0) m_pos+=r; return(r); }
        ushort ReadShort() { __2 b={0}; __short d={0}; ReadArray(b.v, 0, 2); d=b; return(d.v); }
        uint ReadInteger(int sz=INT_VALUE)
        {
                if (sz==SHORT_VALUE) { ushort s=ReadShort(); return(s); }
                return(ReadInt());
        }


Beim Lesen von SHORT_VALUE gibt er Unsinn zurück.


Gestartet digging um, wickeln meinen Kopf um verschiedene Optionen für das Lesen von einem Array.

Es stellte sich heraus, dass, wenn statt ushort s=ReadShort() der Körper der Funktion ReadShort selbst gesetzt wird, alle Zahlen normal gelesen werden.

Aber dann habe ich eine Variante gefunden, die mich wirklich zum Weinen gebracht hat.

        uint ReadInteger(int sz=INT_VALUE)
        {
                if (sz==SHORT_VALUE) { ushort s=ReadShort(); if (s==426) Print(s); return(s); }
                return(ReadInt());
        }

Das heißt, die Funktion Print wandelt auf magische Weise eine falsche Zahl s in eine richtige um und gibt den richtigen Wert zurück.


Liebe Entwickler, kommen Sie zur Vernunft! Sie machen einen Blödsinn!!!

Wie werden Sie die Verluste auf dem Markt ausgleichen, die sich aus Ihrer eigenen Einstellung zu Ihrem Produkt ergeben?

Schließlich ist der MT5 nur eine riesige Verbraucherressource, die von Drittprogrammierern bedient wird.

Und Sie stellen mit Ihrem fahrlässigen Handeln deren Kompetenz und die Qualität ihrer Programme in Frage!

 
sergeev:

Entwickler, ihr habt mich mit diesem Fehler überzeugt! Wie man so schön sagt: "Ich weine".

Funktionen von CFastFile ( ::ReadInteger)

Moment, das ist doch Ihr Code für die CFastFile-Klasse, oder? Was haben Plattformentwickler damit zu tun?

//+------------------------------------------------------------------+
//|                                                         FastFile |
//|                                            Copyright © 2006-2012 |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2006-2012"
#property version "1.00"
#property library
 
Renat:

Moment, das ist doch Ihr Code für die CFastFile-Klasse, oder? Was haben die Plattformentwickler damit zu tun?



Ja, Renat, das ist mein Code.

In früheren Builds hat es funktioniert. Aber in der aktuellen 630/64 funktioniert es nicht mehr.

Und es funktioniert weiterhin erfolgreich in 630/32.


Der Fehler, den ich gefunden habe, ist ziemlich merkwürdig und, offen gesagt, beängstigend.