Souhaits pour le MQL5 - page 59

 
diakin >> :

Quel genre d'événements, par exemple ?

Par exemple, à partir de la pratique, la fermeture d'un poste. J'avais une telle tâche - savoir quand une position était fermée afin de modifier d'autres ordres en tenant compte des fonds libérés. Je devais surveiller l'état du compte en permanence. J'ai essayé de suivre les commandes à partir de l'historique mais c'était impossible de les tester, tout prend beaucoup de temps.

Le seul événement qui peut être traité maintenant est un tick.

 
Gupm писал(а) >>

Par exemple, de la pratique, la fermeture d'une position. J'avais une telle tâche - savoir quand une position était fermée afin de modifier d'autres ordres en tenant compte des fonds libérés. Je devais surveiller l'état du compte en permanence. J'ai essayé de suivre les commandes à partir de l'historique mais c'était impossible de les tester, tout prend beaucoup de temps.

Le seul événement qui peut être géré maintenant est un tic.

Mais de toute façon, start() est lancé à chaque tick. Vous pouvez y effectuer n'importe quelle vérification, pour savoir si un événement s'est produit ou non.

 
diakin писал(а) >>

Donc, de toute façon, start() est exécuté à chaque tick. Vous pouvez y faire n'importe quel type de vérification, pour savoir si un événement s'est produit ou non.

Oui, c'est vrai, je le fais maintenant, mais ce sera merveilleux lorsque la commande sera un objet, qui aura, par exemple, un événement de fermeture, auquel vous liez votre gestionnaire et tout, cette partie du code est absolument séparée, déboguée, etc.

 
Gupm писал(а) >>

Oui, c'est vrai, c'est ce que je fais actuellement, mais ce sera merveilleux lorsque la commande sera un objet qui aura, par exemple, un événement de fermeture, auquel vous liez votre gestionnaire et c'est tout, cette partie du code est complètement séparée, déboguée, etc.

Je pense que cela pourrait être facile à faire dans MQL5.

;)

int OrderSend( string symbol, int cmd, double volume, double price, int slippage, double stoploss, double takeprofit, string comment=NULL, 
int magic=0, datetime expiration=0, color arrow_color=CLR_NONE, 
func OnClose) 

Le dernier paramètre est le nom de la fonction à appeler lors de la clôture de l'ordre. Le compilateur reconnaîtra de toute façon les fonctions dans le texte, et il les reconnaîtra dans les paramètres.

Et les événements sont gérés en interne, puisque le message concernant la clôture de l'ordre (ou l'erreur) est imprimé dans le journal.

Mais nous pouvons nous attendre à d'autres événements, qui devraient également être décrits dans des paramètres, au moins avec des valeurs vides, comme OnCloseEmpty, OnOpenEmpty , etc.

En général, il serait bon d'ajouter une liste de modèles pour les fonctions fréquemment appelées, dans laquelle le modèle de fonction avec tous les paramètres requis serait inséré dans le texte.

Maintenant, nous devons aller dans l'aide, copier la description de la fonction et modifier les paramètres.

 

Je voudrais faire une demande pour MQL5.

Désolé, si je me répète, je n'ai pas lu tous les messages précédents...

J'aimerais que les boucles dans new mql soient marquées d'une manière ou d'une autre, par exemple, comme ceci :

 
Duke3D писал(а) >>

...

J'aimerais que les boucles dans le nouveau mql soient mises en évidence d'une manière ou d'une autre, par exemple comme ceci :

Faites au moins un bouton de formatage de texte avec une indentation automatique pour les accolades.

Maintenant, si une tranche est manquée, il est très difficile de trouver où cela s'est passé.

Et ajoutez également la numérotation des lignes. Ce n'est pas une chose courante en C. C'est plus pratique que de chercher le numéro de ligne dans la barre d'état.

 
diakin >> :

Je pense que c'est facile à faire dans MQL5.

int OrderSend( string symbol, int cmd, double volume, double price, int slippage, double stoploss, double takeprofit, string comment=NULL, 
int magic=0, datetime expiration=0, color arrow_color=CLR_NONE, 
func OnClose) 

;)

Le dernier paramètre est le nom de la fonction à appeler lors de la clôture de l'ordre. Le compilateur reconnaît les fonctions dans le texte de toute façon, et il les reconnaîtra dans les paramètres.

Et les événements sont gérés en interne, puisque le message concernant la clôture de l'ordre (ou l'erreur) est imprimé dans le journal.

Mais nous pouvons nous attendre à d'autres événements, qui devraient également être décrits dans des paramètres, au moins avec des valeurs vides, comme OnCloseEmpty, OnOpenEmpty , etc.

En général, il serait bon d'ajouter une liste de modèles pour les fonctions fréquemment appelées, dans laquelle le modèle de fonction avec tous les paramètres requis serait inséré dans le texte.

Maintenant, je dois aller dans l'aide, copier la description de la fonction et modifier les paramètres.

Pourquoi seulement onClose ? Qu'en est-il de onModify, onOpen ?

Peut-être que si c'est un objet, ça devrait être quelque chose comme ça :


TOrder order = new  TOrder(symbol, cmd,  volume, price, slippage, stoploss, takeprofit, comment);
order.addEventListener( "open", myOpenHandler);
order.addEventListener( "close", myCloseHandler);
order.addEventListener( "modify", myModifyHandler);
order.send();

Ы ?

 
TedBeer писал(а) >>

Pourquoi seulement onClose ? Qu'en est-il de onModify, onOpen ?

Peut-être que si la commande est un objet, il devrait y avoir quelque chose comme ça :

Ы ?

C'est difficile à dire.

int ticket=OrderSend(parameters) ; // la fonction habituelle de MQL4

order(ticket).addEvent ("open", myOpenHandler) ;

Ou plus compact

Order(ticket).OnOpen=myOpenHandler ;

où Order(handle) est quelque chose de standard, un objet ou une structure par lequel vous pouvez accéder aux propriétés de l'objet donné handle.

double MyVolume=Order(ticket).Volume ;


Un grand nombre d'événements personnalisés ne peuvent pas être ajoutés. Ou pouvons-nous le faire ?

Order(ticket).addEvent ("MyCustomEvent", MyCustomEventHandler) ;

Où est décrit "MyCustomEvent" dans ce cas ? (s'il ne s'agit PAS d'une combinaison d'événements et de conditions préalables standard).

Bien que d'après ce que j'ai compris, MQL5 a déjà été écrit, donc c'est un souhait pour le futur ;))))

 
diakin >> :

C'est difficile à dire.

int ticket=OrderSend(parameters) ; // fonction habituelle de MQL4

Order(ticket).addEvent ("open", myOpenHandler) ;

Ou plus compact

Order(ticket).OnOpen=myOpenHandler ;

où Order(handle) est quelque chose de standard, un objet ou une structure par lequel vous pouvez accéder aux propriétés de l'objet donné handle.

double MyVolume=Order(ticket).Volume ;


Un grand nombre d'événements personnalisés ne peuvent pas être ajoutés. Ou pouvons-nous le faire ?

Order(ticket).addEvent ("MyCustomEvent", MyCustomEventHandler) ;

Où est décrit "MyCustomEvent" dans ce cas ? (s'il ne s'agit PAS d'une combinaison d'événements et de conditions préalables standard).

Bien que, d'après ce que j'ai compris, MQL5 est déjà écrit, donc c'est un souhait pour l'avenir ;))).

Eh bien, vous avez un méli-mélo d'approche fonctionnelle et de POO. Idéologiquement, ce devrait être l'un ou l'autre. Même si les fonctions habituelles sont préservées pour des raisons de rétrocompatibilité, la POO doit également être mise en œuvre, sinon pourquoi une modernisation aussi profonde appelée MQL5 ?

Malheureusement, toutes nos discussions s'apparentent à la lecture des feuilles de thé. Ils ne sont d'aucune utilité, puisque nous ne voyons aucune volonté de la part de methaquotes, non seulement de donner la version bêta, mais aussi de publier les spécifications du langage qu'ils ont implémenté. Vous pourriez alors raisonnablement demander à ce qu'on fasse quelque chose avec le langage avant de le commercialiser en tant que produit.

Raison: