Caractéristiques du langage mql5, subtilités et techniques - page 18
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
Et puis-je demander pourquoi statique?
Parce que sorti de son contexte - voir le message original.
une caractéristique non documentée de la fonction OnInit(), cette fonction peut être exécutée dans n'importe quelle partie du programme. Code de test.
Résultat
...
caractéristique non documentée de la fonction OnInit(), cette fonction peut être exécutée dans n'importe quelle partie du programme. Code de test.
Toutes les On-fonctions sont des fonctions normales et peuvent donc être appelées quand vous le souhaitez. OnCalculate ou OnTradeTransaction.
Toutes les On-fonctions sont des fonctions normales, et par conséquent, elles peuvent être appelées quand vous le souhaitez. Soit OnCalculate, soit OnTradeTransaction.
Mais ce n'est pas écrit dans la documentation
OnInit
La fonction OnInit() est le gestionnaire de l'événement OnInit. Il peut être de typevoid ouint, et n'a pas de paramètres:
voidOnInit() ;
L'événement Init est généré immédiatement après le chargement d'un Expert Advisor ou d'un indicateur, cet événement n'est pas généré pour les scripts. La fonction OnInit() est utilisée pour l'initialisation. Si OnInit() a une valeur de retour int, le code de retour non nul signifie que l'initialisation n'a pas réussi, et il génère l'événementDeinit avec le code de raison de désinitialisationREASON_INITFAILED.
Afin d'optimiser les paramètres d'entrée d'un expert, il est recommandé d'utiliser les valeurs de l'énumérationENUM_INIT_RETCODE comme codes de retour. Ces valeurs sont utilisées pour contrôler le déroulement de l'optimisation, notamment la sélection des agents detest les plus appropriés. Pendant l'initialisation d'un Expert Advisor, avant le début des tests, vous pouvez demander des informations sur la configuration et les ressources d'un agent (le nombre de cœurs, la quantité de mémoire libre, etc.) en utilisant la fonctionTerminalInfoInteger(). Sur la base des informations obtenues, vous pouvez soit autoriser l'utilisation de cet agent de test, soit refuser de l'utiliser pendant l'optimisation de ce conseiller expert.
ENUM_INIT_RETCODE
Identifiant
Description
INIT_SUCCEEDED
Une fois l'initialisation réussie, le test du conseiller expert peut être poursuivi.
Ce code a la même signification que zéro - l'initialisation du conseiller expert dans le testeur a réussi.
INIT_FAILED
L'initialisation a échoué, les tests sont inutiles en raison d'erreurs irrécupérables. Par exemple, vous n'avez pas réussi à créer un indicateur qui est nécessaire pour le travail du conseiller expert.
Le retour de cette valeur a la même signification que le retour d'une valeur différente de zéro - l'initialisation du conseiller expert dans le testeur a échoué.
INIT_PARAMETERS_INCORRECT
Conçu pour indiquer au programmeur un jeu incorrect de paramètres d'entrée. La chaîne de résultats contenant ce code de retour sera mise en évidence en rouge dans le tableau d'optimisation générale.
Le test de cet ensemble de paramètres du conseiller expert ne sera pas exécuté et l'agent est libre de recevoir une nouvelle tâche.
À la réception de cette valeur, le testeur de stratégie est assuré de ne pas transmettre cette tâche à d'autres agents pour une exécution répétée.
INIT_AGENT_NOT_SUITABLE
Pas d'erreur pendant l'initialisation, mais pour une raison quelconque, l'agent donné ne convient pas pour les tests. Par exemple, une mémoire vive insuffisante, la prise en charge d'OpenCL, etc.
Après le retour de ce code, l'agent ne recevra pas de tâches jusqu'à la fin de cetteoptimisation.
La fonction OnInit() de type void signifie toujours une initialisation réussie.
Mais ce n'est pas écrit dans la documentation
OnInit
Lafonction OnInit() est le gestionnaire de l'événement OnInit. Il peut être de typevoid ouint, et n'a pas de paramètres:
voidOnInit() ;
L'événement Init est généré immédiatement après le chargement d'un conseiller expert ou d'un indicateur.
Il est dit que c'est une fonction.
Avant OnInit et après OnDeinit il y a des appels de constructeurs/destructeurs d'objets globaux (imprécision dans l'aide). C'est pourquoi, par exemple dans les indicateurs, vous pouvez déclarer des tampons d'indicateurs sans OnInit. Les rudiments sont les suivants.
Si le tableau est plus petit, seule une partie des couleurs est transférée. Si le tableau est plus grand, il est rogné.
Pour les tableaux de largeur et de style, le principe est le même.
Dans OrderSendSync, la fonction surchargée (voir ci-dessus) HistoryDealSelect est appelée.
Comment puis-je déterminer l'heure d'ouverture de la dernière position et l'heure de fermeture de la dernière position ?
Et de manière générale, j'aimerais connaître les principes généraux et les algorithmes permettant d'obtenir des informations sur les positions ouvertes/fermées sur mql5.
Qu'est-ce qui doit être pris en compte, quelles sont les spécificités du moment ?
Comment puis-je déterminer l'heure d'ouverture de la dernière position et l'heure de fermeture de la dernière position ?
En général, j'aimerais connaître les principes généraux et les algorithmes permettant d'obtenir des informations sur les positions ouvertes/fermées dans mql5.
Que faut-il prendre en considération, quelles sont les particularités du moment ?
Tout cela est déterminé en sélectionnant l'historique des ordres et des transactions, puis en lisant les propriétés des ordres.
IDENTIFICATEUR DE POSITION
L'identifiant du poste est un numéro unique, qui est attribué à chaque poste nouvellement ouvert et ne change pas pendant toute sa durée de vie. Il correspond au ticket de l'ordre avec lequel la position a été ouverte.
L'identifiant de la position est spécifié dans chaque ordre (ORDER_POSITION_ID) et dans chaque transaction (DEAL_POSITION_ID) qui l'a ouvert, modifié ou fermé. Utilisez cette propriété pour rechercher les ordres et les transactions liés à la position.
Lorsqu'une position est inversée en mode compensation (une seule opération d'entrée/sortie), l'identifiant POSITION_IDENTIFIER de la position n'est pas modifié. Cependant, POSITION_TICKET est changé en ticket d'ordre qui a entraîné l'annulation. En mode couverture, il n'y a pas d'inversion de position.
long
Et en utilisant les propriétés de l'énumération ENUM_DEAL_ENTRY
DEAL_ENTRY_IN
Entrée sur le marché
DEAL_ENTRY_OUT
Sortie du marché
DEAL_ENTRY_INOUT
Demi-tour
DEAL_ENTRY_OUT_BY
Fermer le comptoir