Erreurs, bugs, questions - page 2570
Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
Je n'arrive pas à trouver comment vérifier lePrintFormat.
Note
PrintFormat() n'est pas exécuté dans le testeur de stratégie en mode optimisation.
Des idées ?
Que diriez-vous deStringFormat et de la chaîne résultante dans un fichier ? (pour que chaque passe crée son propre fichier dans le dossier partagé - afin que le testeur ne les écrase pas).
Comment pourrait-il en être autrement ? La mémoire de l'objet chaîne est allouée dans le tas, tandis que l'adresse mémoire à laquelle le texte commence est 0x00.
La mémoire est allouée uniquement pour le nom et la référence, mais pas pour l'objet lui-même, puisqu'il n'existe pas encore. Ce n'est pas le cas avec les types primitifs, la mémoire y est allouée au moment où la variable est créée, même sans initialisation.
Je ne veux pas m'embêter avec la terminologie. Tout le monde se comprend de toute façon.
Tout cela est évident.
Que diriez-vous deStringFormat et de la chaîne résultante dans un fichier ? (créez un fichier différent pour chaque passage dans le dossier partagé - afin que le testeur ne les écrase pas).
bonne option, à tester
ZS : code à nouveau réécrit pour travailler plus rapidement dans l'optimiseur (les résultats étaient de 5h, maintenant 1.5h ! !!)
maintenant je suis tombé sur printf() dans l'aide, et j'ai décidé de vérifier toutes mes impressions, où je dois remplacer.... je l'ai remplacé et l'optimisation est devenue 22h .... j'ai trouvé où j'ai foiré, mais bien sûr j'ai immédiatement pensé que tout était dans printf() ! !!
)))
J'ai essayé de vérifier printf() dans l'optimiseur :
Jusqu'à présent, j'ai obtenu tout de suite ce que j'attendais :
2019.09.20 11:29:16.611 Core 1 passe génétique (0, 607) testée avec l'erreur "critical runtime error 503 in OnTick function (zero divide, module experts\)" à 0:00:00.048
Je m'attendais à ce que s'il est dit"PrintFormat() n'est pas exécuté.", alors il devrait l'obtenir.
bonne option, à tester
SZY : code à nouveau réécrit pour travailler plus rapidement dans l'optimiseur (les résultats étaient de 5h, maintenant 1.5 h !!!)
Maintenant, je suis tombé sur printf() dans l'aide, et j'ai décidé de vérifier toutes mes impressions, où je dois remplacer.... je l'ai remplacé et l'optimisation est devenue 22 heures .... J'ai trouvé où j'ai foiré, mais bien sûr, immédiatement pensé que la cause de tout dans printf() ! !!
)))
J'ai essayé de vérifier printf() dans l'optimiseur :
Jusqu'à présent, j'ai obtenu tout de suite ce que j'attendais :
2019.09.20 11:29:16.611 Core 1 passe génétique (0, 607) testée avec l'erreur "critical runtime error 503 in OnTick function (zero divide, module experts\)" à 0:00:00.048
Je m'attendais à ce que s'il est dit"PrintFormat() n'est pas exécuté.", alors il devrait l'obtenir.
Aha. Et obtenir une valeur différente de la variable xx dans le test unique et dans l'optimisation.
Seul l'appel à la fonction printf n'est pas exécuté.
Aha. Et obtenir une valeur différente de la variable xx dans le test unique et dans l'optimisation.
Seul l'appel de la fonction printf n'est pas exécuté.
Oui, il est clair que l'utilisateur peut aussi le faire de cette façon.
mais comment vérifier printf() ?
HH : bien que, si le développeur a dit que ce n'est pas imprimé, alors nous n'avons pas à le vérifier.
mais comment vérifier printf() ?
Comparer le temps d'une seule passe de l'optimisation et le temps d'une seule passe
Je le reproduirai :
Forum sur le trading, les systèmes de trading automatisé et les tests de stratégies de trading
Bugs, bugs, questions
Alexey Kozitsyn, 2019.09.18 09:34
Quelques questions sur la plateforme :
1. Une fourchette de négociation autorisée sera-t-elle ajoutée pour le VP via MOEX (par exemple EURRUB_TOM) ? Pour l'instant, il n'est pas possible de savoir avec certitude si une limite sera mise en place, car il n'y a pas d'accès à la fourchette (prix maximum et minimum possibles). Veuillez ajouter.
2. Est-il possible d'ajouter au terminal et au méta-éditeur un état de sauvegarde automatique toutes les N minutes ? Très insuffisant, car en cas de déconnexion soudaine, on revient à l'état du début du programme avec perte de tous les changements ! Très stressant !
l'aide est à nouveau incorrecte, je lis: https://www.mql5.com/ru/docs/math/mathmax
Функция возвращает максимальное из двух числовых значений.
Je vois qu'il n'y a pas d'options, fonction de type fmax() double , je cherche où j'ai pu perdre une valeur fractionnaire, après avoir cherché tout et n'importe quoi, je lance le test :
2019.09.20 18:06:34.194 tst (EURUSD,H1) long
2 leaked strings left
Comment peut-on y remédier ?
Le traducteur traduit, deux cordes fuyantes sur la gauche. Mais ce n'est pas clair, à gauche de quoi, la ficelle ?
Le script utilise la bibliothèqueJAson .
Une chaîne Json est reçue de la dll via memcpy_s, dans la dll cette chaîne a le type const wchar_t*.
Dans le paramètre #import de la fonction exportée, déclaré commestring & str, c'est-à-dire par référence, et la chaîne elle-même est déclarée commestring str ;
Puis la chaîne str est désérialisée
Le problème est exactement la désérialisation de la chaîne entrante de memcpy_s.
Puisque si vous créez une chaîne de contrôle json dans le script
le message d'avertissement n'apparaît pas.
Désérialisation d'une chaîne de caractères à partir d'une dll, le message d'avertissement apparaît à nouveau après la fin du script, il reste 2 chaînes de caractères fuitées
J'ai essayé de convertir une chaîne de caractères en tableau de caractères StringToCharArray, et de désérialiser le tableau de caractères.
Mais le problème persiste, et il reste 2 cordes fuyantes.
Quelle peut en être la raison ?