Erreurs, bugs, questions - page 1174

 
paladin800:

J'ai changé d'ordinateur au travail hier, passant de Windows XP/32 à Win7/64. Avant cela, je négociais normalement sur MT4 au travail, en mettant à jour les codes depuis le stockage et en les renvoyant au stockage. Maintenant je peux utiliser mon mt4 sur 7, mon compte proxy est nouveau, le login et le mot de passe de la communauté sont nouveaux aussi. Le problème est que je ne peux pas synchroniser les codes avec MetaEditor 4. Dans mon profil, j'ai coché la case"Connecter le stockage".

Aujourd'hui, j'ai changé le mot de passe dans la communauté, j'ai installé un second MT4 dans un dossier différent, j'ai ajouté un proxy, un nouveau login et un nouveau mot de passe, les échanges se font, je vois tous les services MQ, mais pas de synchronisation avec le stockage, je ne peux pas me connecter. Veuillez indiquer où le problème pourrait se situer.


Réinstaller mon terminal MT4 avec des droits d'administrateur et exécuter le terminal MT4 avec des droits d'administrateur. MT4 dans Vista/8/8.1 voit de cette façon à la fois le stockage et le dossier avec vos codes et enregistre tous les paramètres des graphiques.
 
barabashkakvn:
Réinstallez le terminal MT4 avec des droits d'administrateur et exécutez le terminal MT4 avec des droits d'administrateur. MT4 dans Vista/8/8.1 avec cette méthode voit à la fois le stockage et le dossier avec vos codes et enregistre tous les paramètres du graphique.
Je vois. Je travaille sur le forex ici tranquillement au travail, l'administrateur (espérons-le) ne sait pas, donc avec les droits d'administrateur ne durera pas. Le problème n'est pas critique, je vais travailler via une clé USB. Merci pour cette précision.
 
paladin800:
Je vois. Je travaille sur le forex ici en cachette, l'administrateur (avec un peu de chance) n'est pas au courant, il ne pourra donc pas conserver ses droits d'administrateur. Le problème n'est pas critique, je vais travailler via une clé USB. Merci pour cette précision.
Vous pouvez également louer un VPS. Vous pouvez alors vous connecter par le biais d'une connexion de bureau à distance et sans problème de droits d'administration.
 
erreur de compilation, 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 ));
}

Le problème se pose parce que dans les nouvelles constructions

template<typename T>
void g( T& array[] ) { Print( typename( ::ArraySize( array ))); }
void OnStart()
{
        int a[ 2 ];
        g( a ); //Результат: uint
}
uint ArraySize(...);
в то время как раньше было
 int ArraySize(...);
Qui est-ce que j'interromps ?
int ArraySize(...);

Pourquoi le changer si l'aide était silencieuse et que de tels changements pouvaient affecter les calculs ? ! Et personne ne le remarquerait.

 
A100:
Erreur de compilation, build 969Parce que dans le nouveau build et qui a été dérangé par cela ?

Pourquoi le changer alors que l'aide est silencieuse et que de tels changements pourraient affecter les calculs ?! et que personne ne s'en rendrait compte

L'aide est toujours un peu en retard. Bien sûr, uint pour la taille du tableau est plus raisonnable, car la taille ne peut pas être négative de toute façon // et ulong serait encore mieux :)
 
Une autre chose illogique est que
template<typename T>
void g( T& array[] )
{
        Print( typename( ::ArrayResize( array, 3 )));
}

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

Il s'avère que ArraySize a été modifié, mais que ArrayResize n'a pas - changé ? Quelle est la différence fondamentale ?

La différence est la suivante

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

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

Il s'avère que vous ne pouvez pas modifier le type de retour dans ArrayResize (à cause de '-1'). Si vous ne pouvez pas changer le type ArrayResize, pourquoi changer le type ArraySize ?

 

Voici la situation. J'ai besoin de faire fonctionner un conseiller expert sur l'EURNZD pendant quelques années. J'ai déjà supprimé tout l'historique du symbole, je l'ai rechargé et le résultat est le même :

HistoryCenter: 5240 bars imported in 'EURNZD60'

Nous ne sommes qu'en septembre 2013. Le terminal ne permet pas de rembobiner la carte. Lorsque j'ouvre le centre d'historique et que je clique sur Télécharger, j'obtiens le message "Il n'y a pas de nouvelles données pour un symbole EURNZD". Je me fiche que ce soit mal écrit, mais comment obtenir des devis ? Mon courtier n'a-t-il vraiment pas d'historique ? Je ne sais pas, je n'ai jamais rencontré de problèmes avec d'autres symboles.

P.S. C'est tout, la question est supprimée. Après avoir abandonné l'EURNZD et téléchargé le GBPAUD, ce miracle de la technologie a soudainement vu de nouvelles données pour l'EURNZD. Si vous vous trouvez dans une situation similaire, n'oubliez pas la "danse du tambourin" et la nécessité de taquiner constamment le terminal de différentes manières. ;-)

P.P.S. Maintenant, la même chose est arrivée à l'AUDNZD à nouveau. J'ai dû bêtement cliquer sur Télécharger plusieurs fois de suite jusqu'à ce que les données apparaissent soudainement.

 
MetaDriver:
L'aide est toujours un peu retardée. bien sûr, uint pour la taille du tableau est plus intelligent, puisque la taille ne peut pas être négative de toute façon // et ulong serait encore mieux :)

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

Lalongueur d'une chaîne de caractères ne peut pas non plus être négative, mais il est plus logique d'utiliser int pour désigner la longueur/taille - pour une raison simple : les fonctions (recherche, calcul, etc.) renvoient généralement la longueur/taille, ou -1 en cas d'échec, ce qui facilite grandement la gestion des erreurs.

 
A100:
Erreur de compilation, build 969
...
Pourquoi le changer alors que l'aide est silencieuse et que de tels changements peuvent affecter les calculs ? Et personne ne le remarquera.

En ce qui concerne ArraySize, j'ai soulevé un problème similaire sur MQL4 l'autre jour : https://www.mql5.com/ru/forum/152471. D'après ce que je comprends, tout devrait être identique dans MQL5.

Peut-être que mon message a été pris en compte :) Concernant ce problème, le Service Desk a répondu que la raison était un fonctionnement incorrect de l'optimiseur et qu'ils changeraient le type en uint dans les nouvelles versions. En fait c'est uint maintenant, juste non documenté :) Et d'ailleurs, ils vont le changer en uint pour ArrayResize aussi. Je leur ai conseillé de le changer en ulong, sinon ils devront revenir sur ce problème dans un futur proche à cause du manque de valeurs 32 bits lors du stockage de gros volumes.

Quant à la valeur -1 en cas d'erreur, elle ne devrait pas poser de problème car : (int)-1 = (uint)-1 = 0xFFFFFFFFFF = UINT_MAX, c'est-à-dire que la représentation binaire est la même, mais l'opération de comparaison donnera un résultat différent, c'est-à-dire que si le code était le suivant

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

il deviendra incorrect.

 
A100:

Les fonctions de ...................... (search, calculate, etc.) renvoient généralement la longueur/taille, ou -1 en cas d'échec, ce qui facilite grandement la gestion des erreurs.

mais pas au point de sacrifier la moitié de la gamme de valeurs.