Erreurs, bugs, questions - page 202

 
Interesting:

Maintenant, contrairement à MT4, la période ne signifie pas le nombre de secondes dans une période.

Lisez plus attentivement, j'ai écrit sur _Period, pas sur PeriodSeconds. Et n'encombrez pas la page avec vos erreurs de perception, s'il vous plaît.
 
ANG3110:
Il n'a jamais montré le nombre de secondes, même dans MT4 cher... Mais les minutes dans MT4 il a montré clairement. Que montre _Period sur le graphique H1 alors ? Cela me semble être un bug sérieux.
ANG3110:
Lisez attentivement, j'ai écrit sur _Period, pas sur PeriodSeconds. Et n'encombrez pas la page avec vos erreurs de perception, s'il vous plaît.
Déjà corrigé. Le point général est qu'en utilisant PeriodSeconds nous obtenons exactement les secondes d'une période, et ensuite vous pouvez en faire ce que vous voulez...

Ainsi, H1 = 16385 n'est pas un non-sens, c'est la représentation numérique de H1 dans ENUM_TIMEFRAMES.


Lire l'aide de Period-u

Période

Renvoie la valeur de l'intervalle de temps du graphique actuel.

ENUM_TIMEFRAMESPériode() ;

Valeur retournée

Contenu de la variable _Period , contenant la valeur de l'horizon temporel du graphique actuel. Lavaleur peut être l'une des valeurs de l'énumération ENUM_TIMEFRAMES.

PS

Ainsi,il renvoie non pas le nombre de minutes correspondant à la période (comme c'était le cas dans MT4), mais l'élément de l'énumération ENUM_TIMEFRAMES(ou sa représentation numérique, si nécessaire)...

 
Interesting:
Déjà corrigé. L'idée générale est la suivante : en utilisant PeriodSeconds, on obtient exactement les secondes d'une période et on peut ensuite en faire ce que l'on veut...

Ainsi, H1 = 16385 n'est pas un non-sens, mais une représentation numérique de H1 dans ENUM_TIMEFRAMES.

Putain, quel bordel. Auparavant, tout était simple et facile - il suffisait d'écrire Period() et vous obteniez des minutes. Maintenant vous obtenez des identifiants de service dont vous n'avez pas vraiment besoin pour votre travail. Ok, je vais essayer d'obtenir les minutes en secondes.
 

Donc, si je demande _Period sur H1 et que j'obtiens ce ENUM_TIMEFRAMES= 16385, comment puis-je en tirer des minutes ?

Même si, bien sûr, diviser PeriodSeconds()/60 ne vaut rien. Mais quels sont ces identifiants et comment travailler avec eux ?

 
ANG3110:

Donc, si je demande _Period sur H1 et que j'obtiens ce ENUM_TIMEFRAMES= 16385, comment puis-je en tirer des minutes ?

J'utilise cette fonction dans ma bibliothèque de migration depuis 11 mois et elle a bien fonctionné jusqu'à présent.

//Fumction PeriodToMinute
int PeriodToMinute(ENUM_TIMEFRAMES Value)
{
//----------------------------------------------------------------------------//
//Work variables
int Result; //Returned importance
//----------------------------------------------------------------------------//
Result = PeriodSeconds(Value)/60;
//----------------------------------------------------------------------------//
return(Result);
//----------------------------------------------------------------------------//
}

ANG3110:

Bien que, bien sûr, vous devriez diviser PeriodSeconds()/60 par lui-même. Mais encore, quel type d'identifiants sont ces derniers et comment travailler avec eux.

Cette question peut se référer aux bases de la POO. Elle concerne les identificateurs et les énumérateurs. Veuillez vous référer à la référence ou à tout autre bon livre sur la programmation C++ pour plus de détails.

Ceci a déjà été implémenté dans MQL4, mais n'est pas si évident.

Chaque identifiant (qu'il soit écrit dans MQL5 ou créé par l'utilisateur) peut avoir sa propre "représentation numérique".

Pour faire simple (je l'explique du mieux que je peux)...

Vous pouvez penser que c'est pour la compatibilité avec l'environnement externe, par exemple une DLL ou une autre (qui n'a aucune idée de MQL et de ses identifiants).

Ainsi, si vous devez travailler avec un point dans un programme MQL5, il serait raisonnable d'utiliser l'identifiant PERIOD_H1 de l'énumération ENUM_TIMEFRAMES.

Mais si vous avez besoin de dire à l'environnement externe (par exemple DLL) que nous travaillons avec la période H1, il est plus facile de le faire avec la représentation numérique de cet identifiant, dans notre cas c'est 16385.

 
ANG3110:

Donc, si je demande _Period sur H1 et que j'obtiens ce ENUM_TIMEFRAMES= 16385, comment puis-je en tirer des minutes ?

Même si, bien sûr, diviser PeriodSeconds()/60 ne vaut rien. Mais quels sont ces identifiants et comment les utiliser ?

comme ceci

int minute = PeriodSeconds(_Period)/60;
 
Interesting:

J'utilise cette fonction dans ma bibliothèque de migration depuis 11 mois maintenant, et jusqu'à présent, tout s'est bien passé.

Je l'ai. Merci pour la réponse !
 
sergey1294:

comme ceci

Merci à vous aussi !
 

Les développeurs.

1. La chaîne OHLC commence à clignoter dans certaines conditions. Révélé lors du test d'EA sur un ordinateur à un seul cœur (CPU probablement surchargé)...

2. Est-il possible de placer la liste des classes et de leurs fonctionnalités (le stuffing) dans le navigateur, comme cela se fait dans Delphi (car il n'est pas très pratique de travailler avec la liste des procédures et des fonctions d'un module) ?

 
Ashes:

Tentative d'enregistrement du rapport du testeur au format Open XML. Quelques minutes d'attente (Pentium 4, 3.0GHz), l'application ne répondait pas, le processus terminal.exe tournait à plein régime dans le gestionnaire des tâches (environ 50% du CPU) en consommant de la RAM (environ 250Mb), Résultat - rien. MT5 répond seulement, aucune cotation n'arrive (indicateur d'état de connexion avec un cercle gris tournant). Un deuxième essai, c'est la même chose. La fenêtre "Outils" a 2 entrées de journal "MemoryException 107878464 bytes not available", l'heure correspondant à la tentative de recevoir un rapport en OpenXML.
Le fichier HTML a été généré presque instantanément (environ 12 Mo). L'ouverture est longue, mais ce n'est pas la faute de MT5...

Je répète. C'est la même chose, mais avec la construction 358. Seulement ça prend encore plus de temps. Il y a une dépendance à la taille du rapport - un rapport court est traité sans problème.
Raison: