Questions des débutants MQL5 MT5 MetaTrader 5 - page 743

 

Bonjour à tous ! Question sur MQL5.

Je voudrais insérer des commentaires dans la fonction de fermeture d'une position dans un ticket.

Jusqu'à présent, j'ai utilisé la classe CTrade, mais elle n'offre pas cette possibilité.

Donc, je dois utiliser OrderSend, non ?

Ici je ne comprends pas : https://www.mql5.com/ru/docs/constants/tradingconstants/enum_trade_request_actions#trade_action_deal dans l'exemple la fonction OnStart est écrite. Ou puis-je tout écrire dans une fonction personnalisée et l'appeler quand c'est nécessaire ?

Est-il nécessaire d'ajouter quelque chose à OnInit ?

Et n'y aura-t-il pas des conflits si j'écris la clôture via OrderSend et que je laisse l'ouverture et les modifications sur la base de la classe CTrade ?

Merci !

Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Типы торговых операций
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Типы торговых операций
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Типы торговых операций - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Artyom Trishkin:

En gros, lisez attentivement ce que je vous ai écrit et supprimez la boucle infinie de votre code.

Êtes-vous sûr que mettre le conseiller expert dans une boucle infinie est la bonne solution ?

Tout d'abord, il ne s'agit pas d'une solution, mais d'un exemple pour démontrer l'essence de ce dont je parle.

Deuxièmement, ce n'est pas une boucle infinie, elle se terminera correctement et en toute sécurité lorsque le programme se terminera.

Et troisièmement, vous m'écrivez pour résoudre un problème totalement différent, pour lequel je peux penser à un million de façons.

Vous considérez donc que ma boucle est une pierre d'achoppement dans ma situation ? Vraiment ?

Bref, j'ai compris. J'ai fait un mauvais voyage dans ce fil...

Mais merci quand même !

 
Marat Sultanov:

Tout d'abord, il ne s'agit pas d'une solution, mais d'un exemple pour montrer l'essence de ce dont je parle.

Deuxièmement, ce n'est pas une boucle infinie, elle se terminera correctement et en toute sécurité lorsque le programme se terminera.

Et troisièmement, vous m'écrivez pour résoudre une chose complètement différente, pour laquelle je peux penser à un million de façons.

Vous considérez donc que ma boucle est une pierre d'achoppement dans ma situation ? Vraiment ?

Bref, j'ai compris. J'ai fait un mauvais voyage dans ce fil...

Mais merci quand même !

A la fin du programme, oui, il sera interrompu.

Faites alors des calculs très lourds, et essayez de les interrompre lorsque la fenêtre des paramètres est appelée.

J'ai regardé comment votre code fonctionne - il ne répond pas à un changement de variable dans les paramètres - il est empêché par une boucle infinie, qui ne peut être interrompue qu'en supprimant l'EA, et elle ne recommencera pas - vous l'avez supprimé du graphique...

Essayez de suivre les calculs lourds à l'aide d'un chronomètre. Bien que je ne sois pas sûr que le timer soit appelé au moment du calcul.

Mais dans tous les cas, la mise en boucle pour émuler un long calcul n'est pas une bonne solution.

 
Bonjour. Pourriez-vous me dire comment définir un tableau dans les paramètres d'entrée d'une fonction ?
double test[];


double Test(.....)
{

}
 
Fresto:
Bonjour. Pouvez-vous me dire comment définir un tableau dans les paramètres d'entrée d'une fonction ?

Passer un tableau à une fonction ?

Ça donne quelque chose comme ça :

//+------------------------------------------------------------------+
double test[];
ArrayResize(test,2);
ArrayInitialize(test,256);

Print(Test(test));
//+------------------------------------------------------------------+
double Test(double &array[])
{
   if(ArraySize(array)==0) return(WRONG_VALUE);
   array[0]+=array[1];
   return(array[0]);
}
//+------------------------------------------------------------------+

Eh bien... variations sur le thème ...

 
Artyom Trishkin:

Lorsque vous terminez le programme, oui, il le fera.

Ensuite, faites des calculs très lourds et essayez de les interrompre lorsque la fenêtre des paramètres est appelée.

J'ai regardé comment votre code fonctionne - il ne réagit pas aux changements de variables dans les paramètres - il n'est pas autorisé à le faire par la boucle infinie, qui ne peut être interrompue que par la suppression de l'EA, et elle ne recommencera pas - vous l'avez supprimé du graphique...

Essayez de suivre un calcul lourd avec un chronomètre. Je ne suis pas sûr que le timer soit appelé au moment du calcul.

Mais dans tous les cas, la mise en boucle pour émuler un long calcul n'est pas une bonne solution.

Merci !

Compris. Mais malheureusement, il y a un besoin raisonnable.

Mais dans tous les cas, la mise en boucle pour émuler un long calcul n'est pas une bonne solution.

Il existe des situations dans lesquelles il est nécessaire d'écrire dans un gros fichier ou de lire à partir d'un gros fichier, ou tout cela à la fois. Si vous faites preuve d'imagination, vous pouvez obtenir beaucoup de folies, et la douleur est au carré lorsque vous la mettez en œuvre :)

Je trouve étrange que la possibilité de tracer une interruption avec _StopFlag existe, mais qu'il n'y ait pas de changement des paramètres d'entrée :(

 
Bonjour, question : est-il possible de modifier l'angle d'affichage du commentaire sur le graphique?????.
 
Dmitry Melnichenko:
Bonjour, j'ai une question. Est-il possible de modifier l'angle du commentaire sur le graphique?????.

Non.

À moins de créer vous-même une étiquette graphique OBJ_LABEL et de modifier sa propriété

OBJPROP_ANGLE


en utilisant la fonction :ObjectSetDouble
 
Les gars, de l'aide pour l'indicateur
Dossiers :
llassiff.mq5  17 kb
 
Rafael Sahibgareev:
Les gars, aidez-moi à comprendre l'indicateur
Il y a un morceau de code là-dedans que je ne comprends pas. Vous devez le corriger vous-même.
Dossiers :
llassiff.mq5  18 kb
Raison: