Fehler, Irrtümer, Fragen - Seite 1174

 

Ich habe gestern bei der Arbeit die Computer von Windows XP/32 auf Win7/64 umgestellt. Davor handelte ich normal auf MT4 bei der Arbeit, aktualisierte Codes aus dem Speicher und zurück in den Speicher. Jetzt kann ich mein mt4 auf 7 benutzen, mein Proxy-Konto ist neu, Community-Login und Passwort sind auch neu. Das Problem ist, dass ich die Codes nicht mit MetaEditor 4 synchronisieren kann. In meinem Profil habe ich"Speicher verbinden" aktiviert.

Heute änderte ich das Passwort in der Community, installierte ein zweites MT4 in einem anderen Ordner, fügte einen Proxy hinzu, neues Login und Passwort, der Handel läuft, ich sehe alle MQ-Dienste, aber keine Synchronisation mit dem Speicher, kann mich nicht verbinden. Bitte geben Sie Hinweise, wo das Problem sonst noch liegen könnte.


 
paladin800:

Ich habe gestern bei der Arbeit die Computer von Windows XP/32 auf Win7/64 umgestellt. Davor handelte ich normal auf MT4 bei der Arbeit, aktualisierte Codes aus dem Speicher und zurück in den Speicher. Jetzt kann ich mein mt4 auf 7 verwenden, mein Proxy-Konto ist neu, Community-Konto und Passwort sind auch neu. Das Problem ist, dass ich die Codes nicht mit MetaEditor 4 synchronisieren kann. In meinem Profil habe ich"Speicher verbinden" aktiviert.

Heute änderte ich das Passwort in der Community, installierte ein zweites MT4 in einem anderen Ordner, fügte einen Proxy hinzu, neues Login und Passwort, der Handel läuft, ich sehe alle MQ-Dienste, aber keine Synchronisation mit dem Speicher, kann mich nicht verbinden. Bitte geben Sie Hinweise, wo das Problem sonst noch liegen könnte.


Installieren Sie mein MT4-Terminal mit Administratorrechten neu und führen Sie MT4-Terminal mit Administratorrechten aus. MT4 in Vista/8/8.1 sieht auf diese Weise sowohl den Speicher als auch den Ordner mit Ihren Codes und speichert alle Chart-Einstellungen.
 
barabashkakvn:
Installieren Sie MT4 Terminal mit Administratorrechten neu und starten Sie MT4 Terminal mit Administratorrechten. MT4 in Vista/8/8.1 mit dieser Methode sieht sowohl den Speicher als auch den Ordner mit Ihren Codes und speichert alle Chart-Einstellungen.
Ich verstehe. Ich bin auf Forex arbeiten hier leise bei der Arbeit, Admin (hoffentlich) nicht wissen, so mit Admin-Rechten wird nicht dauern. Das Problem ist nicht kritisch, ich werde über Flash-Laufwerk arbeiten. Danke für die Klarstellung.
 
paladin800:
Ich verstehe. Ich arbeite hier heimlich an Forex, der Admin weiß es (hoffentlich) nicht, kann also die Adminrechte nicht behalten. Das Problem ist nicht kritisch, ich werde über Flash-Laufwerk arbeiten. Ich danke Ihnen für die Klarstellung.
Sie können auch einen VPS mieten. Dann können Sie sich über eine Remote-Desktop-Verbindung anmelden und haben keine Probleme mit Administratorrechten.
 
Kompilierfehler, Build 969
template<typename T>
T plus( T a, T b )      { return ( a + b ); }

template<typename T>
int f( T& array[], int i )
{
        return ( plus( ::ArraySize( array ), i ) );
}

void OnStart()
{
        int a[ 2 ];
        int b = 1;
        Print( f( a, b ));
}

Sie entsteht, weil in dem neuen Gebäude

template<typename T>
void g( T& array[] ) { Print( typename( ::ArraySize( array ))); }
void OnStart()
{
        int a[ 2 ];
        g( a ); //Результат: uint
}
uint ArraySize(...);
в то время как раньше было
 int ArraySize(...);
Wen störe ich hier?
int ArraySize(...);

Warum sollten Sie es ändern, wenn die Hilfe stumm ist und sich solche Änderungen auf die Berechnungen auswirken könnten, ohne dass es jemand merkt?

 
A100:
Kompilierungsfehler, Build 969Denn im neuen Build und wer hat sich daran gestört?

Warum sollte man sie ändern, wenn die Hilfe stumm ist und sich solche Änderungen auf die Berechnungen auswirken könnten?! und niemand würde es merken

Hilfe hinkt einfach immer ein bisschen hinterher. Natürlich ist uint für die Array-Größe sinnvoller, weil die Größe sowieso nicht negativ sein kann // und ulong wäre noch besser :)
 
Eine weitere unlogische Sache ist, dass
template<typename T>
void g( T& array[] )
{
        Print( typename( ::ArrayResize( array, 3 )));
}

void OnStart()
{
        int a[ 2 ];
        g( a ); //Результат: int
}

Es stellt sich heraus, dass ArraySize geändert wurde, aber ArrayResize nicht - geändert? Worin besteht der grundlegende Unterschied?

Der Unterschied ist der folgende

Возвращаемое значение

При успешном выполнении функция возвращает количество всех элементов, содержащихся в массиве после изменения размера;
в противном случае возвращает -1 и массив не меняет размеры.

Es stellt sich heraus, dass man den Rückgabetyp in ArrayResize nicht ändern kann (wegen '-1'). Nun, wenn Sie ArrayResize Typ nicht ändern können, warum sollten Sie ArraySize Typ ändern?

 

Dies ist die Situation. Ich muss Expert Advisor auf EURNZD für ein paar Jahre laufen. Ich habe bereits den gesamten Verlauf für das Symbol gelöscht und es erneut geladen - das Ergebnis ist dasselbe:

HistoryCenter: 5240 bars imported in 'EURNZD60'

Wir haben erst September 2013. Das Terminal erlaubt es nicht, die Karte zurückzuspulen. Wenn ich das History Center öffne und auf Download klicke, erhalte ich die Meldung "Es gibt keine neuen Daten für das Symbol EURNZD". Es ist mir egal, ob es falsch geschrieben ist, aber wie kann ich Zitate bekommen? Hat mein Broker wirklich keine Vorgeschichte? Ich weiß nicht, ich habe noch nie Probleme mit anderen Symbolen gehabt.

P.S. Das war's, die Frage ist vom Tisch. Nachdem ich EURNZD aufgegeben und GBPAUD heruntergeladen habe, hat dieses Wunderwerk der Technik plötzlich neue Daten für EURNZD gesehen. Wer sich in einer ähnlichen Situation befindet, sollte den "Tanz mit dem Tamburin" und die Notwendigkeit, das Terminal immer wieder auf verschiedene Weise zu reizen, nicht vergessen. ;-)

P.P.S. Nun ist das Gleiche wieder mit dem AUDNZD passiert. Ich musste dummerweise ein paar Mal hintereinander auf Download klicken, bis die Daten plötzlich angezeigt wurden.

 
MetaDriver:
Die Hilfe verzögert sich immer ein wenig. Natürlich ist uint für die Array-Größe schlauer, da die Größe sowieso nicht negativ sein kann // und ulong wäre noch besser :)

template<typename T>
void g( T& str ) { Print( typename( ::StringLen( str ))); }
void OnStart()
{
        string str = "ABC";
        g( str ); //Результат: int
}

Die Länge von Zeichenketten kann auch nicht negativ sein, aber es ist sinnvoller, int zu verwenden, um Länge/Größe zu bezeichnen - aus dem einfachen Grund, dass Funktionen (Suchen, Berechnen usw.) im Allgemeinen Länge/Größe oder -1 im Falle eines Fehlers zurückgeben, was die Fehlerbehandlung sehr erleichtert.

 
A100:
Kompilierungsfehler, Build 969
...
Warum sollten Sie sie ändern, wenn die Hilfe stumm ist und sich solche Änderungen auf die Berechnungen auswirken können? und niemand wird es überhaupt bemerken

Was ArraySize betrifft, habe ich neulich ein ähnliches Problem auf MQL4 angesprochen: https://www.mql5.com/ru/forum/152471. Soweit ich das verstanden habe, sollte in MQL5 alles gleich sein.

Vielleicht wurde meine Nachricht dort berücksichtigt :) Was dieses Problem betrifft, so hat der Service Desk geantwortet, dass der Grund ein fehlerhafter Betrieb des Optimierers war und dass sie den Typ in neuen Builds auf uint ändern werden. Eigentlich ist es jetzt uint, nur undokumentiert :) Sie werden es auch für ArrayResize auf uint ändern, aber ich habe ihnen geraten, es auf ulong zu ändern, da sie sonst wieder auf dieses Problem zurückkommen müssen, weil 32-Bit-Werte fehlen, wenn sie große Mengen speichern.

Was den Wert -1 im Fehlerfall betrifft, so sollte es damit kein Problem geben, denn: (int)-1 = (uint)-1 = 0xFFFFFFFFFF = UINT_MAX, d.h. die Bit-Darstellung ist die gleiche, aber die Vergleichsoperation ergibt ein anderes Ergebnis, z.B. wenn es im Code so war

if (ArrayResize(...) < 0) ...

wird sie falsch.

Grund der Beschwerde: