Est-il possible de distinguer un objet graphique créé manuellement d'un objet créé par un indicateur ou un EA ?
Dans la fonction
OBJPROP_HIDDEN
Barrer le nom d'un objet graphique à partir du menu du terminal "Graphiques" - "Objets" - "Liste des objets". La valeur true permet de masquer un objet inutile de la liste. Par défaut, true est défini pour les objets qui affichent les événements du calendrier, l'historique des transactions, ainsi queceux créés à partir du programme MQL5. Pour voir ces objetsgraphiques et accéder à leurs propriétés, cliquez sur "Tous" dans la fenêtre "Liste des objets".
Все объекты, используемые в техническом анализе, имеют привязку на графиках по координатам цены и времени – трендовая линия, каналы, инструменты Фибоначчи и т.д. Но есть ряд вспомогательных объектов, предназначенных для улучшения интерфейса, которые имеют привязку к видимой всегда части графика (основное окно графика или подокна индикаторов...
Une signification différente et un mécanisme d'exécution différent. 0 - événement dans la file d'attente du "propre" tableau. -1 - événement dans sa propre file d'attente.
Не следует путать между собой ордера из торговой истории и действующие отложенные ордера, которые отображаются на вкладке "Торговля" в панели "Инструменты". Список ордеров, которые были отменены или привели к проведению торговой операции, можно посмотреть в закладке "История" на панели "Инструменты" клиентского терминала. Функция...
Il était nécessaire de savoir à l'intérieur d'un mqh si quelque chose avait été appelé auparavant depuis un autre mqh. Le mqh n'est pas conscient de la présence de l'autre. L'un d'eux peut être dans le coup et l'autre non.
En somme, le problème est inhabituel (pour moi). Je l'ai résolu d'une manière plutôt maladroite.
void f1()
{
SetUserError(0);
}
void f2()
{
if(_LastError == ERR_USER_ERROR_FIRST)Print("f1() была вызвана.");
elsePrint("f1() не была вызвана");
}
voidOnStart()
{
f1();
f2();
}
Je pense que c'est une très mauvaise pratique, mais ça marche.
Il était nécessaire de savoir à l'intérieur d'une mqh si quelque chose avait été appelé auparavant depuis une autre mqh. Le mqh n'est pas conscient de la présence de l'autre. L'un d'eux peut être dans le coup et l'autre non.
En somme, le problème est inhabituel (pour moi). Je l'ai résolu d'une manière plutôt maladroite.
Je pense que c'est une très mauvaise pratique, mais ça marche.
L'utilisation de _LastError présente un problème insoluble : lors de la connexion de bibliothèques tierces, il existe une probabilité non nulle de collision des codes d'erreur des utilisateurs. Comme alternative à la gestion de votre propre lastError. Soit une variable globale, enveloppée dans includeguard dans tous les mqh, soit une variable unique.
Dans MT5 Sleep(0) == Sleep(1). C'est la raison pour laquelle il n'y a pas d'énorme charge CPU lors de l'utilisation de Sleep(0) comme c'est le cas dans MT4.
PS. La fonction Sleep() de MQL5 n'est pas une redirection vers la fonction win api ::Sleep(). Pour être plus exact, si la valeur est inférieure à 100, il s'agit d'une redirection. Mais au-delà de 100, il s'agit d'une boucle dans laquelle se glisse win api, de sorte qu'elle peut être interrompue par IsStopped.
Il y a un point plus subtil. Si les millisecondes <=0, nous ajoutons 1. C'est-à-dire que nous n'appelons jamais ::Sleep(0).
Il a déjà été oublié. Vrai seulement pour MT5. Dans MT4 Sleep(0) peut suspendre le terminal.
La variante typedef perd par un facteur de trois. J'ai refusé de l'utiliser là où c'est crucial. Par exemple, pour TC, le même OrdersTotal est appelé au moins une fois à chaque tick de passage de l'optimiseur.
En mode débogage, la situation est inversée. Il est donc logique d'utiliser le typedef dans MT4 pour l'accélération.
Est-il possible de distinguer un objet graphique créé manuellement d'un objet créé par un indicateur ou un EA ?
Dans la fonction
OBJPROP_HIDDEN
Barrer le nom d'un objet graphique à partir du menu du terminal "Graphiques" - "Objets" - "Liste des objets". La valeur true permet de masquer un objet inutile de la liste. Par défaut, true est défini pour les objets qui affichent les événements du calendrier, l'historique des transactions, ainsi queceux créés à partir du programme MQL5. Pour voir ces objetsgraphiques et accéder à leurs propriétés, cliquez sur "Tous" dans la fenêtre "Liste des objets".
bool
Forum sur le trading, les systèmes de trading automatisés et les tests de stratégies de trading
Bibliothèques : Expert
fxsaber, 2020.10.09 04:55
J'ai mis en évidence un endroit important du code. Sans elle, il n'y a pas d'application du motif jusqu'à la fin du script.
Forum sur le trading, les systèmes de trading automatisé et les tests de stratégies de trading
MT5 et la vitesse en action
Anton, 2020.10.08 11:00
Une signification différente et un mécanisme d'exécution différent. 0 - événement dans la file d'attente du "propre" tableau. -1 - événement dans sa propre file d'attente.
A la fin de la semaine, ma tête n'est déjà pas bonne.
J'ai un ticket d'une position ouverte sur une couverture dans mt5, par exemple 123456.
Je veux calculer un bénéfice après la fermeture de la position, et je ne peux pas le faire.
Je le fais, mais je ne touche qu'une commission...
Comment obtenir le bénéfice d'une position fermée avec un ticket ?
Essayez de mieux sélectionner les transactions en utilisant HistorySelectByPosition().
Il était nécessaire de savoir à l'intérieur d'un mqh si quelque chose avait été appelé auparavant depuis un autre mqh. Le mqh n'est pas conscient de la présence de l'autre. L'un d'eux peut être dans le coup et l'autre non.
En somme, le problème est inhabituel (pour moi). Je l'ai résolu d'une manière plutôt maladroite.
Je pense que c'est une très mauvaise pratique, mais ça marche.
Il était nécessaire de savoir à l'intérieur d'une mqh si quelque chose avait été appelé auparavant depuis une autre mqh. Le mqh n'est pas conscient de la présence de l'autre. L'un d'eux peut être dans le coup et l'autre non.
En somme, le problème est inhabituel (pour moi). Je l'ai résolu d'une manière plutôt maladroite.
Je pense que c'est une très mauvaise pratique, mais ça marche.
Forum sur le trading, les systèmes de trading automatisé et les tests de stratégies de trading
MT5 et la vitesse en action
fxsaber, 2020.10.20 12:28
Total intermédiaire pour une machine à déchargement rapide.
La pertinence des données sur les prix est très ambiguë pour ceux qui négocient en utilisant des barres et des indicateurs.
Les tiques et les culbutes sont difficiles à être en temps réel.
Forum sur le trading, les systèmes de trading automatisés et les tests de stratégies de trading
Particularités de mql5, trucs et astuces
Slava, 2018.09.20 15:40
PS. La fonction Sleep() de MQL5 n'est pas une redirection vers la fonction win api ::Sleep(). Pour être plus exact, si la valeur est inférieure à 100, il s'agit d'une redirection. Mais au-delà de 100, il s'agit d'une boucle dans laquelle se glisse win api, de sorte qu'elle peut être interrompue par IsStopped.
Il y a un point plus subtil. Si les millisecondes <=0, nous ajoutons 1. C'est-à-dire que nous n'appelons jamais ::Sleep(0).
Il a déjà été oublié. Vrai seulement pour MT5. Dans MT4 Sleep(0) peut suspendre le terminal.
Mais j'ai décidé de comparer d'abord les performances, en utilisant un exemple simple.
Le résultat.
La variante typedef perd par un facteur de trois. J'ai refusé de l'utiliser là où c'est crucial. Par exemple, pour TC, le même OrdersTotal est appelé au moins une fois à chaque tick de passage de l'optimiseur.
En mode débogage, la situation est inversée. Il est donc logique d'utiliser le typedef dans MT4 pour l'accélération.