Souhaits pour MT5 - page 55

 
-Alexey-:

Si nous parlons de polyvalence, il est souhaitable de pouvoir modifier le volume d'une position non seulement par incréments, mais aussi par lots. C'est-à-dire à peu près comme ceci :

1) Ouvrir une position avec un certain lot : PositionOpen(...,lot,....) ; /cette fonction est sans ambiguïté et ne change pas, elle reste telle quelle/

2) Modifier le volume de la position, par exemple l'augmenter :

a) PositionIncrease(..., 2, mode_lot_change,....) - augmentation du volume de la position de 2 lots ; /pour le cas où il est pratique de le changer en lots.

b) PositionIncrease(..., 2, mode_multiply_change,....) - augmente le volume de la position de 2 fois ; /pour le cas où il est pratique de la changer en fois/


CTrade dispose d'un ensemble de méthodes, selon l'aide :"Opérations avec des positions". Les voici : ouverture de position, fermeture de position, changement de SL ou TP d'une position. Nous vous proposons de le compléter. Inverser une position signifie exécuter une transaction opposée avec un volume plus important que la transaction actuelle, de sorte que la direction de la position ouverte soit inversée. Réduire une position, c'est réduire le volume de la position ouverte. Augmenter, c'est le contraire.

Я за то чтобы в библиотеку включались универсальные вещи, которые устраивают всех (чтобы потом не пришлось переопределять функционал стандартных классов).

Oui, c'est un point très important.
La méthode PositionOpen() est une méthode universelle de la classe CTrade, qui permet non seulement d'ouvrir une position, mais aussi d'augmenter (diminuer) le volume de la position existante ou de l'inverser. Il suffit de l'appeler avec le type d'ordre approprié dans le sens de la position pour ajouter, dans le sens opposé pour couper, ou doubler le volume dans le sens opposé pour retourner.
 
Valmars:
PositionOpen() est une méthode universelle de la classe CTrade qui permet non seulement d'ouvrir une position mais aussi d'augmenter (diminuer) son volume ou de l'inverser. Il suffit de l'appeler avec le type d'ordre approprié dans le sens de la position pour ajouter, dans le sens opposé pour couper, ou doubler le volume dans le sens opposé pour retourner.

Je veux dire la même chose. Il devrait peut-être y avoir une fonctionnalité spécialisée pour le rognage ou le retournement, mais évidemment pas dans CTrade (si nous parlons d'une bibliothèque standard).

Si la question portait sur l'un des cours "experts", cela ne me dérangerait pas.

 

1. S'il vous plaît, retournez l'effet de levier 1:500 (de préférence 1:200), j'attends un tel cadeau de votre part depuis quelques semaines.

2. J'ai une autre question : si mon compte est de 1:500 et que l'effet de levier maximal disponible dans le testeur est de 1:100, quels paramètres le testeur prendra-t-il en compte ?

JE LE VEUX VRAIMENT !

 
Valmars:
PositionOpen() est une méthode universelle de la classe CTrade qui vous permet non seulement d'ouvrir une position, mais aussi d'augmenter (diminuer) la taille de la position existante ou de l'inverser. Il suffit de l'appeler avec le type d'ordre approprié dans le sens de la position pour ajouter, dans le sens opposé pour réduire le volume requis, ou doubler le volume dans le sens opposé pour retourner.

Voyons ce qu'il faut faire pour inverser une position, par exemple pour que son volume soit doublé.

1) Déterminez s'il y a un poste à pourvoir.

2) Déterminez la direction de la position ouverte.

3) Déterminez le volume de la position ouverte.

4) Déterminez combien d'argent est nécessaire pour ouvrir la position opposée avec un volume 3 fois supérieur (ou fermez d'abord la même position, puis ouvrez une position double).

5) Déterminer si les fonds nécessaires sont disponibles.

6) Déterminer le multiple minimal d'un lot.

7) Déterminez le volume multiple le plus proche du volume nécessaire.

8) Vérifiez à nouveau si les fonds sont suffisants.

9) Retirez SL et TP de la position existante en utilisant PositionModify.

10) Définir le glissement autorisé.

11) Ouvrez la position opposée.

12) Déterminez le prix d'ouverture résultant de l'inversion.

13) Définissez les nouveaux SL et TP en utilisant PositionModify.


En écrivant ceci, j'ai fait quelques erreurs.


Il s'agit d'un morceau de code que des dizaines de milliers de personnes doivent réécrire avec des erreurs. Pourquoi, quand on peut le faire une fois dans une bibliothèque ?

Il s'agit d'un code que tout le monde ne serait pas en mesure d'oritiser correctement comme une nouvelle méthode d'une classe dérivée. Pourquoi, si les développeurs peuvent le faire correctement ?

C'est une chose gênante. Pourquoi écrire un tas de code quand on peut utiliser une fonction prête à l'emploi PositionReverse et une chaîne de caractères ?

Je veux dire la même chose. Vous pouvez avoir besoin d'écrire une fonctionnalité spécialisée de rognage ou de retournement, mais évidemment pas dans CTrade (si nous parlons de la bibliothèque standard).

Et où, qu'elle doit être accessible à un utilisateur moyen et être présente dans l'aide ? Pourquoi pas dans CTrade (en supposant que ces méthodes ne posent pas de problèmes) ?

Après tout, vous pouvez ouvrir une transaction sans PositionOpen. Pourquoi avoir introduit cette méthode dans Ctrade ? Je pense que ce wrapper a été introduit par commodité, car il prend en compte de nombreuses choses qui ne sont pas évidentes pour un utilisateur débutant.

 
-Alexey-:

Voyons ce qu'il faut faire pour inverser une position, par exemple pour que son volume soit doublé.

1) Déterminez s'il y a un poste à pourvoir.


3) Déterminez le volume de la position ouverte.

4) Déterminez combien d'argent est nécessaire pour ouvrir la position opposée avec un volume 3 fois supérieur (ou fermez d'abord la même position, puis ouvrez une position double).

5) Déterminer si les fonds nécessaires sont disponibles.

6) Déterminer le multiple minimal d'un lot.

7) Déterminez le volume multiple le plus proche du volume nécessaire.

8) Vérifiez à nouveau si les fonds sont suffisants.

9) Retirez SL et TP de la position existante en utilisant PositionModify.

10) Définir le glissement autorisé.

11) Ouvrez la position opposée.

12) Déterminez le prix d'ouverture résultant de l'inversion.

13) Définissez les nouveaux SL et TP en utilisant PositionModify.


En écrivant ceci, j'ai fait quelques erreurs.


Il s'agit d'un morceau de code que des dizaines de milliers de personnes doivent réécrire avec des erreurs. Pourquoi, quand on peut le faire une fois dans une bibliothèque ?

Il s'agit d'un code que tout le monde ne peut pas oritiser correctement sous la forme d'une nouvelle méthode d'une classe dérivée. Pourquoi, si les développeurs peuvent le faire correctement ?

C'est une chose gênante. Pourquoi écrire un tas de code quand vous pouvez utiliser une fonction PositionReverse toute prête et une seule ligne ?

Et où, pour qu'elle puisse être accessible à un utilisateur commun et être présente dans l'aide ? Pourquoi pas dans STrade (en supposant que ces méthodes ne posent pas de problèmes) ?

Après tout, vous pouvez ouvrir une transaction sans PositionOpen. Pourquoi avoir introduit cette méthode dans Ctrade ? Je pense que ce wrapper a été introduit par commodité, car il prend en compte de nombreuses choses qui ne sont pas évidentes pour un utilisateur débutant.

Vous avez raison sur de nombreux points. Pour ouvrir une position avec PositionOpen(...), vous devez également spécifier le volume, le prix d'ouverture, le SL et le TP et vérifier que tous ces paramètres sont suffisants, et vous devez les obtenir au préalable et vérifier leur validité, si vous ne voulez pas obtenir une erreur lors de l'ouverture de la position ?
C'est la même chose pour le renversement. Eh bien, vous spécifiez "Inverser une position pour tel ou tel symbole" et c'est tout, et vous l'avez inversé de 100 points à 4 chiffres
supérieur ou inférieur. Vous pouvez ne pas être heureux à ce sujet.
Mais examinons vos arguments un par un.
1) Déterminez s'il y a un poste à pourvoir.

Je pense que cela devra encore être fait avant de décider de revenir sur une position.

2) Déterminer la direction d'une position ouverte.

Je pense que c'est également obligatoire si vous décidez de faire un flip. En tout cas, c'est élémentaire, une fois que le poste a été choisi.

3) Déterminez le volume de la position ouverte.

Similaire au point 2.

4) Déterminez combien d'argent il vous faut pour ouvrir la position opposée avec un volume 3 fois supérieur (ou fermer la même position en premier et ouvrir un double).

Vérifiez que les fonds sont suffisants avant d'envoyer une demande.

5) Déterminer si les fonds nécessaires sont disponibles.

A combiner avec le point 4.

6) Déterminer le multiple minimal du lot

Bien sûr.

7) Déterminer le volume qui est le plus proche de la multiplicité nécessaire.

Vous ouvrez des postes, n'est-ce pas ? Par conséquent, vous disposez déjà de cette fonctionnalité. Tout ce que vous avez à faire est d'appeler la fonction.

8) Vérifiez à nouveau si les fonds sont suffisants.

La méthode standard.

9) Retirez SL et TP de la position existante en utilisant PositionModify.

Vous n'en avez pas besoin.

10) Définissez un glissement admissible.

Bien sûr. La plus petite est une entrée plus précise, mais plus de requêtes.

11) Ouvrir une position opposée.

C'est ici que nous appliquons PositionOpen.

12) Déterminez le prix d'ouverture résultant de l'inversion.

Il est également assez élémentaire. Nous devons seulement re-sélectionner le poste.

13) Définissez de nouveaux SL et TP en utilisant PositionModify.

Si vous ne l'avez pas calculé et fixé immédiatement, vous pouvez le faire maintenant.

Si vous avez fait une erreur quelque part ou si vous avez oublié quelque chose, les développeurs s'en sont occupés. La validité des paramètres de la demande est d'abord vérifiée à l'aide de la fonction OrderCheck(m_request,m_check_result) et, en cas d'erreur, la demande ne sera pas envoyée au serveur avec un message correspondant dans le journal.

Mais comment voulez-vous que la méthode standard décide de tout à votre place : l'écart, le prix, le volume et les stops ?

 
Comment voulez-vous que la méthode standard gère tout : l'écart, le prix de retournement, le volume et les stops ? <br / translate="no">.
La méthode standard avec écart fait exactement la même chose (décide pour moi) - elle est spécifiée dans la classe par défaut. C'est-à-dire que c'est un paramètre optionnel, et il n'est pas présent dans PositionOpen. Si nécessaire, il est modifié à l'aide d'une méthode spéciale, STrade.deviation...., mais - en cas de besoin, pas toujours spécifié. C'est pratique. Il en va de même pour certains autres paramètres définis par défaut dans CTrade.

Le prix du rouleau, bien sûr, est fixé par la stratégie ou l'utilisateur. Cependant, une fois le prix modifié, il faut le vérifier car il y a un slippage et un spread. C'est pourquoi le stop ou le profit calculé à l'avance (et spécifié dans la fonction) peut s'avérer différent. J'ai mentionné le prix uniquement pour cette raison, c'est-à-dire si de nouvelles valeurs de stop et de profit sont spécifiées dans la fonction de roulement (si - alors la vérification et le réglage ne sont pas nécessaires). L'algorithme est simple - résolu automatiquement par la fonction de retournement - sans que je n'intervienne. C'est pratique.

S'il existe une position ouverte, ce qui est le cas de la proposition, il en résulte des actions qui peuvent être réalisées sans contrôle. Par exemple :

- Vous n'avez pas besoin de spécifier acheter ou vendre lorsque vous appelez la fonction en question, car le programme peut détecter automatiquement le sens de la transaction pour le renversement, pour une baisse et pour une hausse. Il n'y a rien pour vérifier les erreurs. Ici, nous avons : moins un paramètre dans l'appel de fonction (sans achat/vente). Est-ce pratique ? Oui. La méthode standard a résolu le problème pour moi.

- le volume de la position est connu, ce qui signifie que selon la demande de l'utilisateur, la fonction Pivot ou Réduction/Agrandissement peut calculer le volume nécessaire de la transaction pour le mode spécifié (en lots, ou en incréments) par rapport au volume déjà connu, en utilisant le multiple le plus proche du lot minimum. Ce sont des actions typiques et elles peuvent être programmées une fois. C'est principalement d'eux dont je parle.

Quant au contrôle de l'exactitude, vous avez raison, il semble que vous deviez le faire vous-même.

Eh bien, vous avez spécifié "position inversée pour tel ou tel caractère" et c'est tout, et il est inversé de 100 points à 4 chiffres.

C'est ainsi que cela se passe dans PositionOpen. Mais vous pouvez spécifier des paramètres facultatifs, si vous le souhaitez, afin que cela ne se produise pas. C'est lors de l'appel : stop et take (paramètres de fonction facultatifs), séparément avant l'appel de la méthode de déviation. C'est-à-dire que la protection contre une telle situation dans CTrade 1) est présente et 2) est conçue de manière pratique. L'utilisateur ne doit pas réfléchir à la manière de créer toute cette structure. C'est de ça qu'il s'agit. La seule chose est qu'il n'y a pas de contrôle de la répartition.
 

Je ne sais pas si cela a été mentionné ou non, mais j'aimerais que MetaEditor puisse réduire certaines parties du code... Par exemple si de parenthèse à parenthèse, pour, fonctions, etc.

En d'autres termes, tel qu'il est mis en œuvre dans les environnements de programmation, tels que Visual Studio. Parce que parfois, on en a assez de faire défiler tout l'écran à la recherche de quelque chose...

De cette façon, vous pouvez laisser ouverts uniquement les fragments de code avec lesquels vous travaillez, et le reste du code est réduit...

Merci... :-)

 
St0nE:

Je ne sais pas si cela a été mentionné ou non, mais j'aimerais que MetaEditor soit capable de réduire certaines sections de code...

a été dit. vous pouvez lui donner un signe plus ici https://www.mql5.com/ru/forum/2931
 
Merci... Enregistré... :-)
 

J'ai regardé le sujet dulogiciel MetaQuotes qui a signé un accord de partenariat à long terme avec l'International Business Times et je me suis souvenu de ce que je voulais suggérer depuis longtemps :

1. Ajout d'un élément "Marquer comme lu" dans le menu de contenu de l'onglet "Actualités", avec la possibilité de l'appliquer à plusieurs actualités sélectionnées à la fois (il faut maintenant ouvrir chaque actualité séparément). Cela permettra de sauter les nouvelles "sans intérêt" et de suivre les nouvelles.

2 Afficher le nombre de nouvelles non lues dans un onglet comme cela se fait dans MetaEditor :Signets

Ce n'est peut-être pas la tâche principale, mais cela ajoutera de la commodité à votre travail...