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
Merci !
Oui, sur le premier point, je suis clairement confus. Expliquez ce qui ne va pas dans la description, pour qu'une copie soit renvoyée ?
Et pour ce qui est de la concaténation, dans votre cas, vous auriez dû écrire quelque chose comme
Pour clarifier. Il est dit"Renvoie une copie de la chaîne avec une valeur modifiée du caractère à la position spécifiée. "Le prototype de la fonction est boolStringSetCharacter(...). Évidemment, vous ne pouvez pas mettre une chaîne de caractères dans un bool. Si un booléen est effectivement renvoyé, c'est apparemment un signe de réussite ou d'erreur. Normalement, les autres pages de documentation ont une section séparée sur la valeur renvoyée, mais cette page n'en a pas.Il faut l'ajouter, et dans la description textuelle formuler une phrase concernant la sémantique de la fonction, et non la valeur de retour.
En ce qui concerne la concaténation, si ce que vous avez écrit est correct, la description de la fonction StringConcatenate devrait également être modifiée. Ladescription indique que le paramètre string_var est une chaîne [in][out] qui sera générée à la suite de la concaténation. Vous indiquez que ce paramètre est seulement [out].
Malheureusement, le problème est que le terminal ne publie que les ordres de fermeture de positions avec commentaires dans l'onglet "Résultats".
La commande correspondante n'est pas ajoutée à la liste de HistoryDealsTotal().
Dans la liste générale des ordres HistoryOrdersTotal(), l'ordre est également absent, même si vous sélectionnez une période avec une certaine redondance.
Je peux vous assurer que les commandes et les transactions, dans le cas d'une clôture par "fin de test", sont présentes dans l'historique. Mon multidevise calcule le bénéfice réalisé sur chaque symbole. Les transactions fermées dans le testeur par "fin du test" sont corrigées dans la désinitialisation pour refléter ces transactions. Le bénéfice total pour tous les symboles coïncide avec les données du rapport de test. Voici le code ;
Chers collègues, y a-t-il un moyen de faire fonctionner SymbolInfoSessionTrade dans le testeur de stratégie ?
Une entrée triviale ne fonctionne pas :
Une dernière question, si possible. J'aimerais comprendre la signification du nouvel opérateur. Quelle est l'idée derrière tout ça ? Pourquoi ne pas créer l'objet de la manière habituelle ? Après tout, après la fin du bloc, l'accès à l'objet déclaré par new sera perdu, alors pourquoi en avons-nous besoin ?
P.S. Honnêtement, je ne l'ai pas trouvé dans la documentation :)
Une dernière question, si possible. J'aimerais comprendre la signification du nouvel opérateur. Quelle est l'idée derrière tout ça ? Pourquoi ne pas créer l'objet de la manière habituelle ? Après tout, après la fin du bloc, l'accès à l'objet déclaré par new sera perdu, alors pourquoi en avons-nous besoin ?
P.S. Honnêtement, je n'ai pas pu le trouver dans la documentation :)
Merci ! J'ai compris. Il est nécessaire et suffisant d'utiliserTimeTradeServer() au lieu de TimeCurrent().
À la fin de la semaine de négociation, il n'y a pas de nouvelles cotations et c'est pourquoi TimeCurrent() n'est pas mis à jour pendant un long moment.
Lors de la désinitialisation de l'Expert Advisor, TimeCurrent() indique l'heure 23:00 ; TimeTradeServer() indique l'heure 23:59, ce qui coïncide avec la fin du test.
Merci ! J'ai compris. Il est nécessaire et suffisant d'utiliserTimeTradeServer() au lieu de TimeCurrent().
À la fin de la semaine de négociation, il n'y a pas de nouvelles cotations et, par conséquent, TimeCurrent() n'est pas mis à jour pendant une longue période.
Une dernière question, si possible. J'aimerais comprendre la signification du nouvel opérateur. Quelle est l'idée derrière tout ça ? Pourquoi ne pas créer l'objet de la manière habituelle ? Après tout, à la fin du bloc, l'accès à l'objet déclaré via new sera perdu, alors pourquoi en avons-nous besoin ?
P.S honnêtement je n'ai pas pu le trouver dans la documentation :)
Ne créez pas d'objets dynamiques - n'utilisez pas maintenant et tout ce qui est associé à ces objets (bien qu'ensuite vous ne puissiez pas faire grand chose).
Vous voulez comprendre non pas le sens de maintenant, mais le sens de travailler avec des objets dynamiques...
Initialisation et désinitialisation des objets placés dynamiquement
Les pointeurs vers des objets sontun cas particulier, car la déclaration d'un pointeur ne nécessite pas l'initialisation de l'objet en question. Les objets placés dynamiquement ne sont initialisés qu'au moment de la création d'une instance d'une classe par l'opérateur new. L 'initialisation d'un objet implique un appel du constructeur de la classe correspondante. S'il n'y a pas de constructeur correspondant dans une classe, ses membres de type simple ne seront pas initialisés automatiquement ; les membres de type chaîne de caractères, tableau dynamique et objet complexe seront initialisés automatiquement.
Les pointeurs peuvent être déclarés localement ou globalement, et peuvent être initialisés avec une valeur NULL vide ou avec un pointeur du même type ou d' un type engendré . Sinew estappelé sur un pointeur déclaré au niveau local , l'instruction deletede ce pointeur doit être exécutée avant de quitter le niveau local également. Sinon, le pointeur sera perdu et l'objet ne pourra pas être supprimé explicitement.
Tous les objets créés par l'expression pointer_objet=new_ClassName doivent ensuite être détruits avec l'opérateur delete(pointer_objet).Si, pour une raison quelconque, cette variable n'a pas été détruite par l'opérateur de suppression, un message à ce sujet apparaîtra dans le Journal des experts. Vous pouvez déclarer plusieurs variables et leur attribuer à toutes des pointeurs vers le même objet.
Si l'objet créé dynamiquement a un constructeur, ce constructeur sera appelé lorsque l'opérateur newsera exécuté . Si l'objet a un destructeur, celui-ci sera appelé lorsque l'opérateur desuppression sera exécuté.
Ainsi, les objets placés dynamiquement sont créés uniquement lorsqu'ils sont créés à l'aide de l'opérateur new, et il est garanti qu' ils seront supprimés soit par l'opérateur delete , soit automatiquement par le système d'exécution de MQL5 au moment du déchargement du programme.L'ordre de déclaration des pointeurs des objets créés dynamiquement n'affecte pas l'ordre de leur initialisation. L'ordre d'initialisation et de désinitialisation est entièrement contrôlé par le programmeur.