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

 
Youri Lazurenko:

Merci. Dans mql5, aucun labyrinthe de ce type n'a été construit. Au lieu d'aller directement au but, vous devez faire des détours, passer par de nombreuses impasses et obstacles. Une langue pour le plaisir d'une langue.

Dans MQL4, vous pouvez également définir un magik pour une position.

Ici, vous avez décidé d'utiliser un objet commercial de SB. Cela signifie que lors de sa création et de son initialisation, vous devez définir ses paramètres. Et ensuite, vous l'utilisez juste pour les fonctions commerciales. Il peut y avoir plusieurs objets de ce type, et vous définirez des paramètres différents pour chacun d'eux. Et ensuite - appliquer à l'objet nécessaire pour la gestion des ordres de commerce sur les symboles et les signes magiques qui ont été définis pour chaque objet particulier, et qui sont nécessaires à différents moments en fonction du TS.

C'est aussi simple que cela.

 
Bonjour Artyom Trishkin ! 2020.09.14_01:14 GMT+3. J'ai pris l'EA moyenne mobile standard et modifié les deux conditions d'ouverture et de fermeture d'une transaction. J'ai vu dans le testeur de stratégie que le conseiller expert n'a rempli que la deuxième condition pour ouvrir et fermer une position ; il ignore la première condition. Le conseiller expert est simple comme bonjour, mais comment écrire des EA complexes qui font tout fonctionner ? Comment faire fonctionner au moins deux conditions d'ouverture et de fermeture des transactions ? Et il peut y avoir plus de conditions pour l'ouverture des transactions. Connaissez-vous la réponse à ces questions ? S'il vous plaît, conseillez-nous. Je joins un fichier de mon conseiller expert. 01H26 GMT+3.
Dossiers :
 
Artyom Trishkin:

Dans MQL4, vous pouvez également définir un magik pour une position.

Ici, vous avez décidé d'utiliser un objet commercial de SB. Cela signifie que lorsque vous le créez et l'initialisez, vous devez définir ses paramètres. Et ensuite, vous l'utilisez juste pour les fonctions commerciales. Il peut y avoir plusieurs objets de ce type, et vous définirez des paramètres différents pour chacun d'eux. Et ensuite - appliquer à l'objet nécessaire pour la gestion des ordres de commerce sur les symboles et les signes magiques qui ont été définis pour chaque objet particulier, et qui sont nécessaires à différents moments en fonction du TS.

C'est aussi simple que cela.

Bonjour. Je vous remercie de votre réponse. Je vais donner mon point de vue. Lorsque l'on ouvre un ordre dans MQL4, on spécifie ses paramètres, y compris un magik. Dans #include <Trade\OrderInfo.mqh>, tout est spécifié sauf le magik. Par exemple - CTrade::BuyLimit(const double volume,const double price,const string symbol=NULL,const double sl=0.0,const double tp=0.0,const ENUM_ORDER_TYPE_TIME type_time=ORDER_TIME_GTC,const datetime expiration=0,const string comment=""). À mon avis, ce n'est pas un correctif et nous devrions le corriger en introduisant un autre paramètre de magicien. Ou bien, #include <Trade\ HistoryOrderInfo.mqh> contient tout sauf le bénéfice (profit/perte) pris par l'ordre. Il s'agit d'une information importante sur la commande et elle est manquante. Nous devons trouver le profit de la dernière commande fermée. Ces informations seront affichées dans Commentaire(). Et nous verrons. Tant qu'il n'y a pas d'ordre (position) ouvert, le commentaire indique le profit du dernier ordre. Dès que l'ordre (position) est ouvert, nous obtenons 0 dans le commentaire, jusqu'à ce que l'ordre soit fermé. C'est-à-dire que l'ordre est toujours sur le marché, mais simultanément dans l'histoire, il reste dans deux hypostases simultanément. Mais c'est absurde. C'est pourquoi je dis que la langue est juste pour le plaisir de la langue. À mon avis, il y a beaucoup de détails incomplets.

 
Youri Lazurenko:


Vous confondez les concepts (en particulier celui d'"ordre"). Il peut y avoir une commande à distance ou une POSITION sur le marché. Vous pouvez en savoir plus dans l'aide :Principes généraux.

La classe CTrade est autosuffisante et ne présente aucun défaut, c'est juste votre refus de voir le code d'implémentation. Lors de l'envoi d'un ordre de transaction (pour ouvrir ou modifier une POSITION), l'instance de la classe de transaction envoie un numéro magique - il suffit de l'initialiser immédiatement lors de la création de l'objet.

Общие принципы - Торговые операции - Справка по MetaTrader 5
Общие принципы - Торговые операции - Справка по MetaTrader 5
  • www.metatrader5.com
Перед тем как приступить к изучению торговых функций платформы, необходимо создать четкое представление об основных терминах: ордер, сделка и позиция. — это распоряжение брокерской компании купить или продать финансовый инструмент. Различают два основных типа ордеров: рыночный и отложенный. Помимо них существуют специальные ордера Тейк Профит и...
 
Youri Lazurenko:

Bonjour. Je vous remercie de votre réponse. Je vais donner mon avis. Lorsque l'on ouvre un ordre dans MQL4, on spécifie ses paramètres, y compris un magik. Dans #include <Trade\OrderInfo.mqh>, tout est spécifié sauf le magik. Par exemple - CTrade::BuyLimit(const double volume,const double price,const string symbol=NULL,const double sl=0.0,const double tp=0.0,const ENUM_ORDER_TYPE_TIME type_time=ORDER_TIME_GTC,const datetime expiration=0,const string comment=""). À mon avis, ce n'est pas un correctif et nous devrions le corriger en introduisant un autre paramètre de magicien. Ou bien, #include <Trade\ HistoryOrderInfo.mqh> contient tout sauf le bénéfice (profit/perte) pris par l'ordre. Il s'agit d'une information importante sur la commande et elle est manquante. Nous devons trouver le profit de la dernière commande fermée. Ces informations seront affichées dans Commentaire(). Et nous verrons. Tant qu'il n'y a pas d'ordre (position) ouvert, le commentaire indique le profit du dernier ordre. Dès que l'ordre (position) est ouvert, nous obtenons 0 dans le commentaire, jusqu'à ce que l'ordre soit fermé. C'est-à-dire que l'ordre est toujours sur le marché, mais simultanément dans l'histoire, il reste dans deux hypostases simultanément. Mais c'est absurde. C'est pourquoi je dis que la langue est juste pour le plaisir de la langue. À mon avis, il y a beaucoup de détails inachevés.

Yury, il ne s'agit pas d'une masse de détails inachevés, mais d'une masse de malentendus.

Pourquoi, à chaque ouverture d'un ordre ou d'une position, écrire un magicien, s'il suffit de l'indiquer une fois dans OnInit().

#include <Trade\Trade.mqh>
CTrade trade;

sinput  int Magic = 1; //  Идентификатор эксперта

int OnInit()
 {
  trade.SetExpertMagicNumber(Magic);
  return(INIT_SUCCEEDED);
 }/******************************************************************/

C'est tout ! !! Ensuite, la magie d'un ordre, d'une transaction ou d'une position sera vérifiée de la même manière pour identifier "ami ou ennemi". Le problème est dans votre esprit.

Une commande peut ne pas avoir de bénéfice ! Une position a un bénéfice dans le temps actuel. Et une position a une transaction de clôture, ou une partie d'une position, mais qui se trouve dans l'historique des transactions. Un ordre est simplement un ordre d'effectuer une transaction sur le marché.

Laissez-moi essayer d'expliquer en kolkhozien. Vous venez au marché, vous décidez d'acheter un cornichon.

Mandat: donnez-moi un kilo d'entre eux...

deal: vous me donnez l'argent, vous prenez le poisson...

position: dans votre sac il y a l'abricot...

Du point de vue du vendeur :

position: vous avez le ragoût de poisson sur le comptoir...

ordre: vous recevez un ordre de peser un kilo de poisson...

transaction: remettre les abricots, mettre l'argent dans le sac...

 
Youri Lazurenko:

Bonjour. Je vous remercie de votre réponse. Je vais donner mon avis. Lorsque l'on ouvre un ordre dans MQL4, on spécifie ses paramètres, y compris le magik. Dans #include <Trade\OrderInfo.mqh>, tout est spécifié sauf le magik. Par exemple - CTrade::BuyLimit(const double volume,const double price,const string symbol=NULL,const double sl=0.0,const double tp=0.0,const ENUM_ORDER_TYPE_TIME type_time=ORDER_TIME_GTC,const datetime expiration=0,const string comment=""). À mon avis, ce n'est pas un correctif et nous devrions le corriger en introduisant un autre paramètre de magicien. Ou bien, #include <Trade\ HistoryOrderInfo.mqh> contient tout sauf le bénéfice (profit/perte) pris par l'ordre. Il s'agit d'une information importante sur la commande et elle est manquante. Nous devons trouver le profit de la dernière commande fermée. Ces informations seront affichées dans Commentaire(). Et nous verrons. Tant qu'il n'y a pas d'ordre (position) ouvert, le commentaire indique le profit du dernier ordre. Dès que l'ordre (position) est ouvert, nous obtenons 0 dans le commentaire, jusqu'à ce que l'ordre soit fermé. C'est-à-dire que l'ordre est toujours sur le marché, mais simultanément dans l'histoire, il reste dans deux hypostases simultanément. Mais c'est absurde. C'est pourquoi je dis que la langue est juste pour le plaisir de la langue. À mon avis, il y a beaucoup de détails inachevés.

Vous pensez en termes de procédures mais essayez d'utiliser des objets OOP. Ils sont traités d'une manière différente. Par exemple :

Un objet est créé. Un magicien est prêt pour ça.
Un deuxième objet est créé. Un deuxième magicien est prêt.
Un troisième objet est créé. Un troisième magicien lui est donné.

Vous avez maintenant trois objets commerciaux pour trois stratégies dans un seul EA.
Vous devez utiliser le premier objet de transaction pour ouvrir une position ou placer un ordre en attente pour le premier TS.
Afin d'ouvrir une position ou de définir un ordre en suspens pour le deuxième TS, vous devez vous référer au deuxième objet de transaction.
Pour ouvrir une position ou placer un ordre en attente pour un troisième TS, vous devez vous référer à un troisième objet de transaction.

Les ordres n'ont pas de paramètre de profit. Pour une raison simple : un ordre est un ordre (un ordre en attente est un ordre donné à un courtier d'effectuer une action lorsque le prix atteint un certain niveau, c'est-à-dire un ordre d'exécuter une transaction après un certain temps lorsque le critère spécifié est atteint). Une transaction (ordre) peut donner lieu à une opération (elle possède déjà le paramètre de profit DEAL_PROFIT) entraînant soit la création d'une position, soit sa modification ou sa fermeture (la position possède également le paramètre de profit, mais seulement un paramètre de profit actuel - flottant - POSITION_PROFIT).

Et puis il y a l'ordre au marché (ordre de marché), qui apparaît toujours avant la transaction lorsque vous envoyez un ordre de transaction - c'est votre ordre de transaction. Et elle est visible dans la liste des commandes existantes. C'est-à-dire que toute ouverture de position génère une chaîne : ordre --> transaction --> position. Toute action sur une position ouverte crée une chaîne : position --> ordre --> transaction --> aucune position, ou une position plus petite, ou une position plus grande (compensation), ou un renversement de position (compensation).

Étudiez la référence.

Документация по MQL5: Константы, перечисления и структуры / Торговые константы / Свойства сделок
Документация по MQL5: Константы, перечисления и структуры / Торговые константы / Свойства сделок
  • www.mql5.com
Сделка является отражением факта совершения торговой операции на основании ордера, содержащего торговый приказ. Каждая сделка описывается свойствами, позволяющими получить информацию о ней. Для чтения значений свойств используются функции вида Идентификатор позиции, в открытии, изменении или закрытии которой участвовала эта сделка. Каждая...
 
Bonjour, Est-il possible de faire des périodes non standard dans le code de l'indicateur "moving average" pour MT5 ? Par exemple, pas pour 1 bougie, mais pour 0,5 ? Je comprends que la plateforme a toujours des données de prix et que l'indicateur va les diviser et les arrondir...
 

Merci à tous. Surtout Alexey Viktorov- clair et précis. Je l'ai déjà retraité et vérifié. Maintenant nous avons l'information sur le profit du dernier ordre, et l'EA l'utilise. C'est trop alambiqué, il y a un désordre inutile et superflu concernant la position, l'ordre et le commerce. Il y a des ordres en cours (en attente, engagés /market/) et des ordres qui sont entrés dans l'historique, mais ce sont tous les mêmes ordres. Le processus de transfert est éphémère et absolument sans intérêt. Il s'avère que pendant que la commande du vendeur est pesée, celle de l'acheteur est en quelque sorte déjà partie. C'est-à-dire qu'il y a confusion et confusion dans l'intervalle. Plus c'est simple, mieux c'est.

Mais merci quand même à vous tous, et bonne chance.

 
Youri Lazurenko:

Merci à tous. Surtout Alexey Viktorov- clair et précis. Je l'ai déjà retraité et vérifié. Maintenant nous avons l'information sur le profit du dernier ordre, et l'EA l'utilise. C'est trop alambiqué, il y a une confusion inutile et superflue. Il y a des ordres en cours (en attente, engagés /market/) et des ordres qui sont entrés dans l'historique, mais ce sont tous les mêmes ordres. Le processus de transfert est éphémère et absolument sans intérêt. Il s'avère que pendant que la commande du vendeur est pesée, celle de l'acheteur est en quelque sorte déjà partie. C'est à dire qu'il y a confusion et confusion dans l'intervalle. Plus c'est simple, mieux c'est.

Mais merci quand même, je vous souhaite à tous bonne chance.

Ce n'est pas une bizarrerie des développeurs de terminaux. C'était une bizarrerie de faire entrer toute la chaîne dans un seul concept de "commande" en 4. Maintenant, tout est conforme à ce qui se passe réellement.

Et le temps nécessaire pour faire passer un talon de l'étagère au sac est le temps d'exécution d'un ordre de transaction. Ainsi, en ayant absolument toutes les données sur les événements en cours, vous pouvez facilement contrôler la vitesse d'exécution des ordres. Et pas seulement ça. Vous disposez maintenant d'un large éventail de possibilités pour la mise en œuvre de n'importe quelle statistique sur n'importe lequel des serveurs, et la façon dont ils peuvent exécuter vos ordres.

 
Artyom Trishkin:

Il ne s'agit pas d'une bizarrerie des développeurs du terminal. C'était une bizarrerie de faire tenir toute la chaîne dans un seul concept de "commande" en quadruple. Il est désormais conforme à ce qui se passe réellement.

Et le temps nécessaire pour faire passer un talon de l'étagère au sac est le temps d'exécution d'un ordre de transaction. Ainsi, en ayant absolument toutes les données sur les événements en cours, vous pouvez facilement contrôler la vitesse d'exécution des ordres. Et pas seulement ça. Vous avez maintenant de nombreuses possibilités de mettre en œuvre n'importe quelle statistique sur n'importe lequel des serveurs, et de voir dans quelle mesure ils peuvent répondre à vos exigences.

Sans vouloir vous manquer de respect, je m'inscris dans le cadre de la discussion. Je négocie mes EAs depuis longtemps (je ne les vends pas), avec différents courtiers et je ne suis pas intéressé par lesdonnées absolues sur les événements. Je suis intéressé par le résultat final - la qualité des ordres exécutés à la demande d'un EA. Si les ordres ne sont ouverts qu'une seule fois (au sens figuré), je ne travaillerai tout simplement pas avec ce courtier. Si chez un courtier l'ouverture est plus rapide d'une demi-seconde que chez un autre, ce n'est pas essentiel pour moi (de même que la différence de cotation).

En effet, à quel point est-il facile d'écrire un EA dans mql4 et à quel point est-ce ennuyeux avec mql5 ? Pourquoi les questions portent-elles sur mql5 ? J'ai entendu de bons rapports sur le testeur MT5 et j'ai dû me familiariser avec mql5 pour l'essayer. Je l'ai essayé et je ne suis pas satisfait. Il est pratique de télécharger les cotations, c'est beaucoup plus rapide, mais MT4 est plus informatif. Par exemple, je veux savoir non seulement à quel prix les ordres ont été fermés, mais aussi quel profit (perte) ils ont pris. L'optimisation avant est si gourmande en processeur que l'ordinateur s'arrête. J'ai essayé une fois (ce n'est pas une preuve bien sûr) d'utiliser un seul et même conseiller expert chez un seul et même courtier. Les résultats sont différents ; mt5 est meilleur - plus de profit, nettement moins de drawdown, ce qui est stressant. Peut-être que c'est moi qui suis sénile, mais pour l'instant j'ai plus de critiques que de positivité. Je ne vais pas encore trader sur mt5, mais l'intérêt d'écrire un bon Conseiller Expert demeure. Juste par souci d'intérêt.

Je vous souhaite bonne chance.

Raison: