Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 6. - page 1125

 
Evgeniy Oshurkevich:
Je l'ai déjà eu, et sur ce merci, avant toute commande j'ai prescrit la fonction de gestion des erreurs partout, mais maintenant je suis coincé dans une boucle et comment freiner l'EA, s'il y aura des erreurs juste à cause de mon erreur, et où exactement prescrire. Par exemple, j'ai essayé d'ouvrir une commande, mais une erreur s'est produite, comment la récupérer ? Par exemple, OrderSend(....) ; a effectué une transaction, comment puis-je obtenir des informations sur la réussite de la transaction ?

Pouvez-vous ouvrir l'aide de la fonction et voir ce qu'elle renvoie ? Et _LastError ?

Plus précisément, OrderSend renvoie un ticket de commande ou -1. Devinez dans quel cas ce sera -1 par vous-même ;)

 
Vitalie Postolache:

Pouvez-vous ouvrir l'aide de la fonction et voir ce qu'elle renvoie ? Et _LastError ?

Plus précisément, OrderSend renvoie un ticket de commande ou -1. Devinez dans quel cas ce sera -1 vous-même ;)

Cela fait 10 minutes que je lis à ce sujet :)
 
Evgeniy Oshurkevich:
Cela fait 10 minutes que je lis à ce sujet :)
Voici un exemple tout à fait approprié
 
Vitaly Muzichenko:
Voici un exemple tout à fait approprié

Et j'ai déjà commencé à travailler sur mes codes d'erreur, merci :) Et j'ai presque terminé mon évaluation environnementale sur la façon de la ralentir).

Dans cet exemple, je ne trouve pas la valeur de"Slippage", elle est dans l'OrderSend, elle n'est peut-être pas si importante ou obligatoire, je me demande!

 
Evgeniy Oshurkevich:

Et j'ai déjà commencé à travailler sur mes codes d'erreur, merci :) Et j'ai presque terminé mon évaluation environnementale sur la façon de la ralentir).

Dans cet exemple, je ne trouve pas la valeur de"Slippage", elle se trouve dans OrderSend, elle n'est peut-être pas si importante ou obligatoire, je me demande!

Et ceci pour attraper le code 135 ou 129 et augmenter la valeur du glissement pour la prochaine tentative. Ou, si l'augmentation de la glissade ne semble pas attrayante, comptez simplement un certain nombre de secondes jusqu'à la prochaine tentative. Gardez également un œil sur l'écart, si l'écart est augmenté à ce moment-là, attendez qu'il diminue et réessayez. Aussi, il est souhaitable de ne pas utiliser Sleep(), il simplifie certes le codage et n'apporte pas beaucoup de mal, lors de l'hibernation pour une demi-seconde ou une seconde, mais si le Conseiller Expert est un Pipsier rapide, pour lequel chaque milliseconde est importante, ou une pause en dizaines de secondes est nécessaire, il est préférable de ne pas utiliser sleep, pendant le sommeil le Conseiller Expert est paralysé et ne peut pas seulement trader, mais aussi surveiller l'environnement de trading ou effectuer d'autres calculs, ne répond pas aux actions de l'utilisateur, etc.

Vous pouvez fixer l'heure actuelle, décompter le nombre de secondes (ou de millisecondes) nécessaires, puis agir.

 
Evgeniy Oshurkevich:

Et j'ai déjà commencé à travailler sur mes codes d'erreur, merci :) Et j'ai presque terminé mon conseiller expert sur la façon de le ralentir).

Dans cet exemple, je ne trouve pas la valeur de"Slippage", elle se trouve dans OrderSend, elle n'est peut-être pas si importante ou obligatoire, je me demande!

Aujourd'hui, leslippage n'est plus aussi pertinent qu'il l'était, il est généralement utilisé sur les comptes avec un spread fixe, mais il reste quelques comptes de ce type dans la nature et 5 à 7 personnes négocient dessus. Si le spread est flottant, il n'y a pas deSlippage, il est préférable de surveiller le spread, et s'il est trop large, alors s'abstenir d'entrer, mais encore une fois, tout dépend de la stratégie, de l'importance d'un grand spread.
 
Vitaly Muzichenko:
Aujourd'hui, leslippage n'est plus aussi important qu'il l'était et il est généralement utilisé sur des comptes avec un spread fixe, mais il n'y a que quelques comptes de ce type et seulement 5 à 7 personnes y travaillent. Si le spread est flottant, il n'y a pas deSlippage, il est préférable de surveiller le spread lui-même, et s'il est trop large, alors s'abstenir d'entrer, mais encore une fois, tout dépend de la stratégie, de l'importance d'un grand spread.

Des conneries...

Sur les ECNs très populaires, le slippage sur les nouvelles est gigantesque. Parfois des centaines de pips (5ozn). Ou bien ils continuent à tourmenter les commandes pendant une minute entière, en disant "nouveau prix", "pas de prix", etc.

 
Vitalie Postolache:

Il s'agit d'attraper le code 135 ou 129 et d'augmenter la valeur du glissement pour la prochaine tentative. Ou, si l'augmentation de la glissade ne semble pas attrayante, comptez simplement un certain nombre de secondes jusqu'à la prochaine tentative. Gardez également un œil sur l'écart, si l'écart est augmenté à ce moment-là, attendez qu'il diminue et réessayez. De même, il est souhaitable de ne pas utiliser Sleep(), ceci, bien sûr, simplifie l'écriture du code et ne cause aucun dommage particulier, lors d'une hibernation d'une demi-seconde ou d'une seconde, mais si le Conseiller Expert est un Pipsier rapide, pour lequel chaque milliseconde est importante, ou une pause de dizaines de secondes est nécessaire, il est préférable de ne pas utiliser Sleep, pendant le sommeil le Conseiller Expert est paralysé et ne peut pas seulement trader, mais aussi surveiller l'environnement de trading ou effectuer d'autres calculs, ne répond pas aux actions de l'utilisateur, etc.

Vous pouvez fixer l'heure actuelle, décompter le nombre de secondes (ou de millisecondes), puis agir.

Evgeniy Oshurkevich:

J'ai déjà commencé à chercher les codes d'erreur, merci :) Et j'ai presque terminé comment freiner mon Expert Advisor)

Dans cet exemple, je ne trouve pas la valeur de"Slippage", elle est dans l'OrderSend, elle n'est peut-être pas si importante ou obligatoire, je me demande!

Pendant l'hibernation de la commande de sommeil, l'EA est en effet paralysée. Même dans le cas d'un seul terminal, il est nécessaire d'assurer le travail de vingt threads différents, c'est-à-dire de laisser chacun d'eux occuper du temps CPU. Au moins pour afficher quelque chose sur l'écran, sans parler de la tâche cruciale pour le pipser milliseconde d'accepter les ticks entrants. En réalité, il existe des dizaines d'autres services du système d'exploitation qui veulent également travailler, c'est-à-dire occuper le processeur avec leurs propres besoins. Si la commande Sleep ne le fait pas, le planificateur de threads du système d'exploitation le fera de force, mais en fonction de ses propres considérations sur qui doit avoir le temps. Vous pouvez également compter sur lui et charger le processeur à presque 100% tout le temps avec ce seul conseiller. Mais cela ne conviendra à personne. Si le programmeur ne planifie pas l'allocation des ressources du processeur, dans la plupart des cas, l'approche mise en œuvre dans MQL où le conseiller expert reçoit le CPU à la réception du tick pour un symbole et après le traitement de cette arrivée, le conseiller expert "paralyse" et ne prend pas le CPU jusqu'au prochain tick.

Le paramètre Slippage dans OrderSend (à ne pas confondre avec le slippage réel en cas de mode d'exécution des ordres "Market execution", par le marché) n'a de sens à définir que dans le mode "Instant execution", exécution immédiate, lorsque l'ordre est soit exécuté au prix déclaré, soit rejeté, c'est-à-dire qu'il est rejeté. L'écart maximal autorisé du prix d'exécution par rapport au prix indiqué dans l'ordre peut être défini comme non nul. En mode "Exécution au marché", ce paramètre ne signifie rien, dans ce cas le prix d'exécution est fixé par le centre de traitement, la déviation du prix indiqué dans l'ordre n'est en aucun cas limitée.

 
Vitalie Postolache:

Des conneries...

Sur les ECNs très populaires, le slippage sur les nouvelles est gigantesque. Parfois des centaines de pips (5ozn). Ou bien ils continuent à tourmenter les commandes pendant une minute entière, en disant "nouveau prix", "pas de prix", etc.

Les comptes ECN ne vous aident pasSlippage au moins 100 pips, il exécution sur le marché et ne peut glisser et ne pas donner un prix, et c'est un peu différentes choses, et des erreurs différentes.
 

Есть условие для открытия ордера BUY. Открывается ордер, как сделать переход к SELL условию после закрытия BUY ордера?




if(High[1]-Close[1]>=NormalizeDouble(xbs1*_Point,_Digits))
   {
    int b_tik=OrderSend(_Symbol,OP_BUY,Lots,Ask,Slip,Low[2]-sl,High[1]+ tp,"",Magic,0,clrBlue)==true; //открытие ордера
      
       GlobalVariableSet("B_order",0); // Больше не ищем вход Buy

       //-----?????
       GlobalVariableSet("S_order",1); // Переходим к поиску Sell
       return;
   }