Erreurs, bugs, questions - page 440

 
Renat:
Veuillez calculer le résultat de votre valeur négative et le mettre en corrélation avec les 32 bits de l'int, puis lisez l'article sur le dépassement arithmétique et trouvez vos 17 jours.

Bienvenue dans le monde de la programmation réelle.

Je n'ai pas posé la question "d'où viennent ces 17 jours ? Je répète : j'ai trouvé une situation que je n'ai pas comprise dans le testeur, je me la suis expliquée et j'ai reçu une explication selon laquelle (1) la fonction Sleep() fonctionne aussi avec des valeurs négatives et produit un délai non nul, (2) le travail de la fonction Sleep() est émulé dans le testeur. Si les développeurs le trouvent acceptable, que puis-je leur rendre ? Il n'est pas nécessaire de calculer exactement 17 jours.

Документация по MQL5: Общие функции / Sleep
Документация по MQL5: Общие функции / Sleep
  • www.mql5.com
Общие функции / Sleep - Документация по MQL5
 
stringo:
Que suggérez-vous ? Mettre fin au programme en cas d'urgence ?
Il est difficile de faire des suggestions sans connaître le fonctionnement du système. Mon but est de sonder la question et ensuite c'est à vous de jouer. Cette fois, il s'est avéré que la question s'inscrit pleinement dans l'idéologie actuelle du terminal. Alors, j'en saurai plus.
 
uncleVic:

Oui. Nous n'avons pas vu l'éléphant.

J'ai un fort soupçon sur cette ligne :


et dans ce cas :

Je ne pense pas que le compilateur doive manquer cela. Vous avez quoi ? Pas même un avertissement ? Si ce n'est pas le cas, adressez une demande au Service Desk. Ok ?


demande#154746

Comment obtenir le numéro de séquence de l'élément ayant la valeur maximale/minimale dans le tableau s1.open ?

 
Yedelkin:

Dans ce cas, il me suffirait d'avoir une instruction dans la section "Sleep function" ... (2) "Sleep() function is fully supported by the tester".

Nous avons mis en évidence les principales questions relatives aux tests dans un article distinct, "Principes fondamentaux des tests dans MetaTrader 5". Nous avons tenté ici d'expliquer la plupart des nuances de l'utilisation des différentes fonctions du testeur. Nous avons également expliqué les fonctions Sleep() :

Fonction Sleep() dans le testeur

La fonction Sleep() vous permet de suspendre pendant un certain temps l'exécution d'un programme mql5 dans un Expert Advisor ou dans un script, lorsque vous travaillez sur un graphique. Cela peut être nécessaire lorsque vous demandez des données qui ne sont pas prêtes au moment de la demande et que vous devez attendre qu'elles le soient. Un exemple détaillé de l'utilisation de la fonction Sleep() se trouve dans la section Organisation de l'accès aux données.

Dans le testeur, les appels de Sleep() ne retardent pas le processus de test. En appelant Sleep(), les ticks générés sont "joués" dans le délai spécifié, ce qui peut déclencher des ordres en attente, des stops, etc. Après l'appel de Sleep(), le temps simulé dans le testeur est augmenté de l'intervalle spécifié dans le paramètre de la fonction Sleep.

Si, à la suite de l'exécution de Sleep(), le temps actuel dans le testeur dépasse la fin de la période de test, une erreur "boucle infinie dans Sleep" sera reçue. Si une telle erreur se produit, les résultats des tests ne sont pas abandonnés, tous les calculs sont effectués (nombre de transactions, drawdown, etc.) et les résultats sont transmis au terminal.

La fonction Sleep() ne fonctionnera pas dans OnDeinit() car après son appel, le temps de test est garanti au-delà de l'intervalle de test.



Figure 7. Schéma d'utilisation de la fonction Sleep() dans le testeur de terminal MetaTrader 5.

 
Rosh:

Nous avons spécifiquement couvert les principales questions relatives aux tests dans notre article séparé, Fundamentals of Testing in MetaTrader 5. Nous avons tenté ici d'expliquer la plupart des nuances de l'utilisation des différentes fonctions du testeur. Nous avons également expliqué la fonction Sleep() :

Je suis désolé, c'est vraiment ma faute. Je ne l'ai pas testé depuis 9 mois et j'ai raté l'article.

Il serait bien de mentionner les articles clés dans les sections correspondantes du Guide de référence (j'ai déjà suggéré quelque chose de similaire l'année dernière mais aujourd'hui est une bonne occasion de le faire à nouveau). Nous utilisons tous la F1 en premier lieu, après tout.

 
C'est-à-dire que vous n'avez pas fait ce que j'ai demandé.

Plusieurs personnes ici essaient de vous faire remarquer votre simple erreur de dépassement arithmétique.
 
Renat:
C'est-à-dire que tu n'as pas fait ce que j'ai demandé.

Plusieurs personnes ici essaient de vous signaler votre simple erreur de dépassement arithmétique.

==============================================================

Vous avez demandé :

Renat:
Auriez-vous l'amabilité de calculer le résultat de votre valeur négative, de le corréler avec 32 bits de int, puis de lire sur le débordement arithmétique et de trouver vos 17 jours....

J'ai répondu : Oui, je n'ai pas posé la question "d'où viennent exactement les 17 jours ?". :) etc.

Je réponds à votre question actuelle. Ce que vous avez demandé, je ne l'ai pas fait. Parce que c'est moi qui l'ai fait hier (j'avais des données initiales légèrement différentes, mais l'essentiel de ce que j'ai compris). Si quelqu'un avait compilé ce script, j'aurais reçu pas moins de deux avertissements. Débordement/coupure - j'ai moi-même été confronté à ce problème hier.

Les questions étaient de savoir pourquoi (1) la fonction fonctionne avec des valeurs négatives de l'argument et (2) donne un retard dans le testeur pour de tels arguments. Pourtant, vous soulignez à nouveau une "erreur de programmeur" avec un dépassement du type int. - C'est-à-dire que vous rejetez mon échantillon de test uniquement parce que "overflowed value" a été spécifié lors de la sélection de l'argument de la fonction Sleep(). Mais le point n'est pas dans la "valeur débordante". C'est juste une touche supplémentaire à l'échantillon de test. Il semble que les participants à la discussion l'aient compris. Au final, vous pouvez insérer "valeur non débordante" dans l'exemple du test - toutes choses étant égales par ailleurs, l'essence de la question restera la même (la question elle-même a déjà été traitée).

En tout cas, merci pour le tuyau. Car si le compilateur ne vous avait pas averti, votre conseil aurait probablement été utile et vous aurait fait réfléchir à deux fois.

 

Quelles sont les limites de son utilisation ? W =(long)ChartGetInteger(Chart_ID[i],CHART_WIDTH_IN_PIXELS,0) ;
H =(long)ChartGetInteger(Chart_ID[i],CHART_HEIGHT_IN_PIXELS,0) ;
W_B =(long)ChartGetInteger(Chart_ID[i],CHART_WIDTH_IN_BARS,0) ;

En appelant la fonction à partir de void OnInit(), tout est correct, mais à partir de void OnTick(), les données sont incorrectes, en particulier CHART_WIDTH_IN_BARS donne le nombre de barres visibles, alors que je comprends qu'elle devrait donner le nombre de barres adaptées au graphique sans décalage.

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Свойства графиков
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Свойства графиков
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы графиков / Свойства графиков - Документация по MQL5
 
Virty:

Désolé pour la question primitive.

La requête commerciale n'est pas en cours d'exécution. Erreur 10014 - mauvais volume dans la demande.

Comment puis-je comprendre/calculer à l'intérieur de l'EA quel est le volume de lot maximum et minimum que je peux acheter en ce moment ?

La fonction OrderCheck ne convient pas, car elle ne fait que vérifier et ne dit pas combien de lots peuvent être achetés.

Regardez l'énumération ENUM_SYMBOL_INFO_DOUBLE et la fonction correspondante. C'est ce que vous voulez dire ?
 
Yedelkin:
Voir l'énumération ENUM_SYMBOL_INFO_DOUBLE et la fonction correspondante. C'est ce que vous voulez dire ?
Oui. Merci. SYMBOL_VOLUME_MAX l'a trouvé moi-même, et vous m'avez aidé.
Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте
Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте
  • www.mql5.com
Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте - Документация по MQL5