Erreurs, bugs, questions - page 650

 
Rosh:
Écrivez au Service Desk avec tous les détails (joignez un expert si nécessaire). Ce sera plus rapide.
Ok. Je vais le faire aujourd'hui, c'est sûr. Mais je vais tout de même vous poser quelques questions dans l'intérêt du développement général. :)
mql5:
Vous utilisez peut-être une grande quantité de variables de fonctions locales, par exemple des tableaux.
Dans la prochaine version, pour les terminaux 32 bits, vous pourrez contrôler la taille de la pile avec la propriété du compilateur correspondante #property stacksize

Est-ce un problème lié aux terminaux 32 bits uniquement ? J'ai x64. Comment dois-je comprendre "...la taille importante des variables de fonctions locales, par exemple les tableaux..." ? "Quelle taille doit-elle avoir pour que la pile soit débordée à la fin ?
 
tol64:
Ce problème ne concerne-t-il que les terminaux 32 bits ? J'ai x64. Comment comprendre "...grande taille des variables de fonctions locales, par exemple les tableaux...". "Quelle doit être la taille de la pile pour qu'elle finisse par déborder ?
Non, ce n'est pas seulement le problème d'un terminal 32 bits. Mais la solution pour le terminal 32 bits est prête pour l'instant, alors que dans le 64 bits elle est encore limitée par une pile de 256Kb.
Mais si le programmeur ne spécifie pas manuellement la taille de pile nécessaire à l'aide d'une propriété, l'EX5 dans le terminal fonctionnera avec la taille de pile par défaut (256 Ko).

A propos de la grande taille.
Chaque déclaration de variable à l'intérieur d'une fonction (à l'exception des variables statiques) alloue de l'espace sur la pile, et l'allocation d'espace sur la pile pour les variables locales se produit à chaque appel.

Par conséquent, si une fonction possède 64Kb de variables locales, l'espace de la pile est suffisant pour 3 appels, et le débordement de la pile se produit à 4 appels (car une partie de la pile est utilisée pour les besoins internes du terminal). Par conséquent, s'il est nécessaire d'avoir de grandes données locales, il est préférable d'utiliser la mémoire dynamique : lorsque vous entrez dans la fonction, la mémoire pour les besoins locaux est allouée dans le système (new, ArrayResize) et lorsque vous quittez la fonction, la mémoire est supprimée (delete, ArrayFree).
 

Bonjour !

Je ne comprends pas ce problème.

filehandle=FileOpen("My\\Symbols.txt",FILE_READ|FILE_TXT|FILE_ANSI);

Cela fonctionne bien dans le débogage, le fichier est lisible dans MT5\MQL5\File\.

Lors de l'exécution dans le testeur, il indique "Symbols.txt file could not be opened, error 5004" et Handel -1

Je l'ai également placé dans le dossier MT5\tester\agent000\MQL5\File, mais il ne le voit plus et tue le fichier à cet endroit).

En même temps, la description dit :

"Le fichier est ouvert dans le dossier du terminal client dans le sous-dossier MQL5\files (ou dossier_agent_testing\MQL5\files en cas de test)".

"La fonction recherche un fichier dans le dossier local (MQL5\Files ou MQL5\Tester\Files en cas de test)."

Je n'ai pas le dossier "MQL5\Tester\Files" comme indiqué dans l'aide ?

Qu'est-ce que je fais mal et comment puis-je surmonter ce problème ?

Je vous remercie de votre réponse.

 

Essayez d'utiliser #property tester_file:

#property tester_file "My\\Symbols.txt"
 
Rosh:

Essayez d'utiliser #property tester_file:

Ugh-uh-x Il semblait aider dans le MT5\tester\agent000\MQL5\File mis à nouveau, puis il fonctionne avec la propriété.

Merci !

 
Fia:

J'ai réessayé le testeur avec Handle -1 et l'erreur 5004.

Je ne sais pas ce que cela pourrait être d'autre, il est évident qu'il ne peut pas trouver le fichier, mais il peut tout voir lors du débogage.

Copiez le fichier dans MQL5\Tester\Files ( créez un dossier au préalable).
Документация по MQL5: Файловые операции / FolderCreate
Документация по MQL5: Файловые операции / FolderCreate
  • www.mql5.com
Файловые операции / FolderCreate - Документация по MQL5
 
uncleVic:
Copiez le fichier dans MQL5\Tester\Files ( créez un dossier au préalable).

J'ai essayé, créé de tels dossiers manuellement, mis mon fichier (avec sous-dossier, désactivé #property tester_file), il ne le trouve en aucun cas dans le testeur.

Et si vous connectez #property tester_file, cela fonctionne étrangement.

Cependant, de temps en temps, il fait planter un dossier et un fichier dans MT5\tester\agent000\MQL5\File, probablement en raison du fait que si vous désactivez #property tester_file, il fait tout planter à cet endroit.

Oui, maintenant j'ai découvert que si je change le code (n'importe où) dans le fichier mq5 (à partir duquel le txt est appelé), puis que je le compile et que je le passe au testeur, il craque tout dans le fichier MT5\tester\agent000\MQL5\File.

C'est un miracle, mais au moins ça marche - et c'est bien.

 
Fia:

J'ai essayé, créé de tels dossiers manuellement, mis mon fichier (avec sous-dossier, désactivé #property tester_file), il ne le trouve en aucun cas dans le testeur.

Et si vous connectez #property tester_file alors, étrangement, cela fonctionne.

Cependant, de temps en temps, il fait planter un dossier et un fichier dans MT5\tester\agent000\MQL5\File, probablement en raison du fait que si vous désactivez #property tester_file, il fait tout planter à cet endroit.

Oui, maintenant j'ai découvert que si je change le code (n'importe où) dans le fichier mq5 (à partir duquel le txt est appelé), puis que je le compile et que je le passe au testeur, il craque tout dans le fichier MT5\tester\agent000\MQL5\File.

C'est un miracle, mais au moins ça marche, et c'est bien.

Si W7, placez le fichier dans le répertoire Document and Setting/.../MetaQuotes/Common/Files, ou désactivez l'UAC.

PS : vérifiez encore une fois l'orthographe du nom, sur quelle mise en page le nom est écrit (mieux vaut certainement le copier), la disponibilité de l'espace à la fin du nom et ainsi de suite.

 
Urain:

Si W7, placez le fichier dans Document and Setting/.../MetaQuotes/Common/Files, ou désactivez UAC.

PS : vérifiez à nouveau l'orthographe du nom, sur quels layouts le nom est écrit (il est préférable de copier), la présence d'un espace à la fin du nom, etc.

En réalité, j'ai Win7 64bit, mais l'UAC est nul.

C:\Documents and Settings\Tous les utilisateurs\MetaQuotes\Terminal\Common\Files\N J'ai mis mon dossier et mon fichier là, ça n'a pas aidé, il ne trouve pas le fichier dans le testeur.

Oui, je pense que tout est correct avec le nom, à #property tester_file dans le test fonctionne (et sur le débogage fonctionne sur n'importe quel ), mais dans le testeur pas moyen, sauf comme seulement à travers #property tester_file.

Et ensuite avec le problème mentionné ci-dessus de tuer le fichier après avoir modifié et compilé mq5 (j'ai une telle disposition).

 

Vous avez un mensonge flagrant écrit dans votre aide :

CLBufferWrite

Ecrit un tableau dans le tampon OpenCL.

CLBufferWrite(
intbuffer//handle au buffer OpenCL
const void&data[]// tableau de valeurs
uintoffset=0// à partir de quel élément, par défaut, à partir du premier.
voidsize=WHOLE_ARRAY// nombre de valeurs, le tableau entier par défaut
) ;

Paramètres

......

décalage

.....

taille

[in] Nombre de valeurs à écrire. Par défaut, toutes les valeurs du tableau sont écrites dans le tampon OpenCL.

......

Il écrit en fait le nombre d'octets ( !!!), pas du tout les valeurs.

J'ai passé deux nuits à déboguer l'indicateur, jusqu'à ce que je trouve la solution ! Et pourquoi ? - Parce que je croyais en ton écriture...

FIXEZ-LE MAINTENANT ! !! :))

// Je ne l'ai pas compris à temps, car la valeur par défaut ( size=WHOLE_ARRAY) fonctionne correctement.

Raison: