Erreurs, bugs, questions - page 410

 
papaklass:
Vous pouvez suivre les commandes en cours à l'aide de la fonction OrdersTotal(). Comparez sa valeur actuelle avec la précédente. Si vous voulez éviter les ordres multiples en attente, utilisez le drapeau pour fixer un ordre. Si cet indicateur == vrai, cela signifie qu'un ordre a déjà été fixé. Réinitialisez cet indicateur lorsque l'ordre est déclenché, c'est-à-dire lorsque OrdersTotal() change.

Heureusement, je suis passé par ces bases il y a un an. J'ai appris ces bases il y a un an grâce aux articles consacrés aux compétences initiales de MQL5. Le championnat a confirmé que ce système est bon pour la formation, mais pas pour le commerce quotidien. Les articles de Roche mettent les points sur les "i" et les barres sur les "t".

Et il ne s'agit pas de savoir comment vérifier l'état d'une commande. Le fait est que les paramètres commerciaux que j'ai décrits ci-dessus peuvent considérablement simplifier le travail avec les ordres ainsi qu'avec les positions. Du point de vue d'un utilisateur individuel (c'est-à-dire moi), la question"Que dois-je faire ? Inconnu", ainsi que de travailler avec les ordres point par point plutôt qu'à travers le bouquet "symbole - OrdresTotal()".

papaklass:
Tout ce que vous devez savoir, c'est le symbole sur lequel cet événement s'est produit.

Le fait est que si l'on met de côté les paradigmes de formation, il est plus important de connaître le ticket d'ordre, et non le symbole, pour travailler avec des ordres en attente. Pour être plus précis, travailler avec un symbole est acceptable, mais demande beaucoup de travail supplémentaire.

P.S. C'est la première fois que j'entends parler d'"abonnement". C'est une belle variante.

 
papaklass:
Je ne prétends pas être la vérité en premier lieu, mais votre déclaration sur le jardin d'enfants pue l'arrogance.

Ne le prenez pas personnellement. J'ai corrigé cette phrase avant votre message. Vous savez, parfois vous écrivez, vous l'envoyez, - et puis quand vous le lisez, vous corrigez les éventuelles ambiguïtés dans les phrases secondaires.

Sur le sujet. Nous avons des approches exactement opposées du trading : je ne me soucie pas de savoir quand et comment une position s'ouvre/se ferme, car l'EA gère ces moments par lui-même (déplacement du TP, trailing stop, etc.). Il est important pour moi que les ordres en attente couvrent toujours la situation sur le marché. C'est pourquoi j'insiste sur le fait qu'une déclaration telle que "un seul paramètre de symbole est suffisant pour OnTrade()" ne reflète pas toutes les stratégies courantes/typiques.

 
Interesting:

Aux développeurs de

L'effacement constant des informations de compte dans Win 2003 SP2 (en mode terminal) est-il un bug ou a-t-il été conçu pour améliorer la sécurité ?

Plus précisément, si j'utilise alternativement la même copie du programme en mode normal et en mode terminal avec différents comptes, les données du compte disparaissent de temps en temps. Apparemment, si vous travaillez simplement en mode terminal avec des comptes différents, la situation sera similaire (je ne l'ai pas encore vérifié).


Oui, c'est vrai.

Lorsqu'un autre utilisateur de Windows (même sur le même ordinateur) tente d'accéder au terminal, qui a enregistré les mots de passe d'un autre utilisateur de Windows, les mots de passe sont réinitialisés de force. Cette mesure vise à empêcher toute personne de voler des mots de passe.

 
Virty:

Oui, c'est une question simple, et déjà les gourous se disputent. C'est une douleur dans le cul pour que le testeur fonctionne correctement. Afin d'acheter un lot d'EURUSD au prix actuel, vous devez effectuer 3-4 contrôles. Si vous ne le faites pas, le testeur fonctionnera, mais pas correctement et, ce qui est important, silencieusement. Seul un solde négatif ou une autre absurdité en résultera. Et c'est bien si les contrôles sont réussis. Mais si SymbolInfoTick retourne false, nous ne savons pas quoi faire. Devrais-je accrocher le code d'erreur au mur au lieu des prix du championnat ?

J'ai essayé "equity<0.55*balance" et "free_margin<100". Cela n'a pas fonctionné. Je ne sais pas pourquoi ça n'a pas marché. Je suis vraiment confus par ces marges.

Je l'ai laissé if(AccountInfoDouble(ACCOUNT_MARGIN_LEVEL)<55.0). Cela semble fonctionner.

Les règles du championnat sont écrites en bref, dans le jargon des développeurs, alors qu'elles nécessitent des détails pour les nuls.

Qu'y a-t-il à débattre ? Le niveau de marge = Fonds/Titres*100%, ou en termes de MQL5 :

AccountInfoDouble(ACCOUNT_MARGIN_LEVEL)=AccountInfoDouble(ACCOUNT_EQUITY)/AccountInfoDouble(ACCOUNT_MARGIN)*100=
AccountInfoDouble(ACCOUNT_EQUITY)/(AccountInfoDouble(ACCOUNT_EQUITY)-AccountInfoDouble(ACCOUNT_FREEMARGIN))*100

Ces paramètres sont affichés dans votre terminal dans l'onglet "Trade", vous pouvez les vérifier. En ce qui concerne l'arrêt, consultez une discussion similaire en 2007.

Установка Stop Out - MQL4 форум
  • www.mql5.com
Установка Stop Out - MQL4 форум
 
papaklass:

Vyacheslav, votre réponse est encourageante. Quelqu'un sur le forum a suggéré, à mon avis, une solution acceptable - l'abonnement. Mettez en œuvre cet abonnement de manière similaire à la fonction iCustom() qui a des paramètres obligatoires et non obligatoires. Lors de l'initialisation de l'EA, chaque trader doit s'abonner aux événements dont il a besoin. Pas pour le nombre total d'événements, mais seulement pour ceux qui sont essentiels à leur métier. Cette approche (abonnement) facilitera grandement le développement des EA multidevises et réduira réellement le code. Faites une expérience avec au moins deux fonctions OnTrade() et OnTick(). Faites le minimum - un symbole. Vous pouvez ensuite augmenter le nombre d'événements (paramètres). La pratique est le critère de la vérité. Tant que vous n'aurez pas essayé, vous ne comprendrez pas les difficultés qui peuvent se présenter.

PS L'analogie avec la fonction GetLastError(), qui renvoie la valeur de la variable système LastError, est probablement plus appropriée que l'analogie avec la fonction iCustom(). Saisissez la variable système TradeEvent et, lorsque OnTrade() se déclenche, imprimez la valeur de cette variable.

C'est la première fois que j'entends parler d'abonnement, mais c'est une très bonne idée comme base d'une idée (comme l'abonnement aux événements des dompteurs ou la profondeur de marché).

De plus, l'idée d'une constante basée sur le type _Error est assez intéressante.

À mon avis, le symbole devrait être transféré nécessairement, en principe, nous pouvons commencer à aller dans cette direction maintenant, de sorte qu'avant le championnat d'introduire au moins une certaine innovation dans ce domaine.

Yedelkin:

Le fait est que, si l'on met de côté les paradigmes de formation, il est plus important de connaître le ticket d'ordre plutôt que le symbole lorsqu'on traite des ordres en suspens. Pour être exact, travailler avec un symbole est acceptable mais cela représente beaucoup de travail supplémentaire.

Dans un premier temps, nous ne devons mettre en œuvre que le symbole, puis nous aurons le temps de réfléchir à ce qu'il faut faire et comment le faire passer en plus. Il serait bien de traiter OnTrade() et OnTick() de la même manière.

En développant le thème de l'abonnement, il est possible d'organiser l'abonnement aux ticks d'une certaine paire.

 
Yedelkin:

Ne le prenez pas personnellement. J'ai corrigé cette phrase avant votre message. Vous savez, parfois vous écrivez, vous l'envoyez, - et puis quand vous le lisez, vous corrigez les éventuelles ambiguïtés dans les phrases secondaires.

Sur le sujet. Nous avons des approches exactement opposées du trading : je ne me soucie pas de savoir quand et comment une position s'ouvre/se ferme, car l'EA gère ces moments par lui-même (déplacement du TP, trailing stop, etc.). Il est important pour moi que les ordres en attente couvrent toujours la situation sur le marché. C'est pourquoi j'insiste sur le fait qu'une déclaration comme "un seul paramètre de symbole suffit pour OnTrade()" ne reflète pas toutes les stratégies courantes/typiques.

Je suis d'accord, ce n'est pas le cas. Mais néanmoins, nous devons commencer par le symbole, et l'ordre/le ticket de transaction ou autre sera ajouté plus tard.

Renat:

Oui, c'est vrai.

Lorsqu'un autre utilisateur de Windows (même sur le même ordinateur) essaie d'accéder à un terminal dont les mots de passe ont été enregistrés par un autre utilisateur de Windows, les mots de passe sont réinitialisés de force. Cette mesure vise à empêcher toute personne de voler des mots de passe.

Je vois, merci (c'est ce que je pensais, je voulais m'en assurer).
 
Interesting:

Tout d'abord, seul le symbole doit être mis en œuvre, et ensuite il sera temps de réfléchir à ce qu'il faut faire et comment le faire passer en plus.

...C'est le symbole qui doit être lancé, et l'ordre/le ticket de transaction ou autre chose qui y sera ajouté plus tard est une question différente.

En général, les accents sont déjà donnés, je voudrais juste souligner que si vous agissez selon le principe "chacun tire la couverture à soi" (comme "donnez-moi seulement le paramètre symbole" ou "seulement le paramètre billet"), alors vous ne pouvez rien obtenir. C'est pourquoi ma question a été formulée à l'origine en tenant compte d'une configuration minimale de paramètres. Exactement la "configuration minimale", car je m'attendais à ce que les utilisateurs plus avancés aient leurs propres souhaits concernant l'extension/la clarification de leur liste.

Il est donc un peu surprenant que des suggestions visant à limiter à un seul paramètre (paramètre caractère) aient été émises, particulièrement surprenant dans le contexte de la réponse de stringo, qui ne dit rien du tout sur les développeurs ayant des problèmes avec le nombre de paramètres pour OnTrade(). Le problème était qu'"un seul et même ticket peut donner lieu à un amoncellement de messages". Et ils viendront quel que soit le nombre de paramètres saisis pour la fonction.

...L'année dernière, je n'ai pas compris pendant longtemps de quelles "béquilles" les professionnels parlaient périodiquement. Maintenant, sur la base de la discussion du sujet sur les paramètres de OnTrade(), j'ai obtenu une forte association : "béquilles" = = demi-mesures pour résoudre tel ou tel problème. Je pense que la question des paramètres pour OnTrade() sera résolue sans eux. Félicitations, comme on dit, aux développeurs pour leur approche complexe de la résolution des problèmes ! :)

 

Que signifie le message "pump result 0" à la fin du test ?

 
MoneyJinn:

build 466 : Les résultats du test unique diffèrent des résultats de l'optimisation effectuée une minute auparavant.

Quelle en est la raison ? Quels paramètres actualisés le testeur prend-il sur le marché lors du nouveau test ?

Pouvez-vous joindre les résultats ?
 
Ashes:

Que signifie le message "pump result 0" à la fin du test ?

Un message de débogage glissé au hasard. Le numéro après le résultat de la pompe correspond au numéro au démarrage.