Discussion de l'article "Fonctions de gestion monétaire dans un Expert Advisor"

 

Un nouvel article Fonctions de gestion monétaire dans un Expert Advisor a été publié :

Le développement de stratégies de trading se concentre principalement sur la recherche de modèles d’entrée et de sortie du marché, ainsi que sur le maintien des positions. Si nous sommes en mesure de formaliser certains modèles dans des règles de trading automatisé, alors le trader est confronté à la question de calculer le volume des positions, la taille des marges, ainsi que de maintenir un niveau sûr de fonds hypothécaires pour assurer des positions ouvertes en mode automatisé. Dans cet article, nous utiliserons le langage MQL5 pour construire des exemples simples de réalisation de ces calculs.

Toutes les fonctions décrites sont données dans le code de l’Expert Advisor Symbol_Info.mq5. La figure ci-dessous illustre la sortie d’informations sur le symbole EURUSD, à l’aide de la fonction Comment()


Auteur : MetaQuotes

 

Oh, voici que le plus délicieux dans la "Salle de lecture" est apparu, lisons quoi et comment....

Surtout de la part d'un tel auteur. :)

 

J'aimerais également voir la fonction de calcul des échanges. Il y a 5 types d'échanges, et chacun a ses propres nuances.

Parfois, la méthode scientifique ne permet pas d'arriver au bon endroit.

J'ai trouvé trois variantes par sélection, mais il y a toujours SYMBOL_SWAP_MODE_BY_INTEREST. Je ne peux pas le vérifier car je ne trouve pas de courtier avec cette méthode de calcul.

S'il vous plaît - s'il y a une possibilité de poster dans CodeBase la fonction de calcul du swap pour la devise et le lot spécifiés - nous vous en serons reconnaissants.

 
sergeev:

J'aimerais également voir la fonction de calcul des échanges. Il y a 5 types d'échanges, et chacun a ses propres nuances.

Parfois, la méthode scientifique ne permet pas d'arriver au bon endroit.

J'ai trouvé trois variantes par sélection, mais il y a toujours SYMBOL_SWAP_MODE_BY_INTEREST. Je ne peux pas le vérifier car je ne trouve pas de courtier avec cette méthode de calcul.

S'il vous plaît - s'il y a une possibilité de poster dans CodeBase la fonction de calcul du swap pour la devise et le lot spécifiés - nous vous en serons reconnaissants.

+1. Ou mieux encore, implémentez tous ces calculs dans la bibliothèque standard, et nous verrons comment et quoi faire correctement...
 
Je crois que c'est indiqué dans la documentation. et dans mcl4, c'était la même chose, seules les formules ont été modifiées.
 
Если даже торговля на данном счете разрешена, то это еще не означает, что эксперт имеет право торговать. Чтобы проверить, разрешено ли торговать эксперту, пишем:

Quels sont les cas où le trading est autorisé, mais où l'Expert Advisor n'est pas autorisé à trader ?

S'agit-il d'une interdiction du courtier ou des paramètres du terminal ?

Par analogie avec le point 4 : - " ...si l'expert est autorisé à négocier et que le flux des opérations commerciales est libre... "

c'est-à-dire IsTradeAllowed = IsExpertEnabled + IsTradeContextBusy ? ?? ?

IsTradeAllowed - Документация на MQL4
  • docs.mql4.com
IsTradeAllowed - Документация на MQL4
 

Article intéressant et nécessaire ! J'ai essayé de vérifier les formules de cet article et voici ce que j'ai obtenu. Prenons l'exemple de l'EURGBP. La devise du compte est le dollar. La paire de devises la plus proche est EURUSD, c'est-à-dire mode=true. Nous utilisons les formules de l'article pour déterminer la marge requise :

   if(direction==POSITION_TYPE_BUY)
     {
      //--- citation inversée
      if(mode)
        {
         //--- compte au prix d'achat pour la cotation inversée
         calc_price=tick.ask;
         answer=lot*lot_size*calc_price;
        }
...
if(direction==POSITION_TYPE_SELL)
     {
      //--- citation inversée
      if(mode)
        {
         //--- compte par prix de vente pour la cotation inversée
         calc_price=tick.bid;
         answer=lot*lot_size*calc_price;
        }

C'est-à-dire qu'à l'achat, selon l'article, la marge requise devrait être :

BUY : marge = lot*lot_size*tick_ask/leverage

et à la vente :

VENDRE : marge = lot*taille du lot*tick_offre/moyen.

Nous codons ces formules dans un EA simple et essayons de vendre et d'acheter des EURUSD avec peu de fonds à l'avance afin que le Metatrader nous indique la marge nécessaire. En même temps, nous affichons notre marge calculée. Nous recevons ces messages du testeur :

2010.07.06 16:34:01 Core 1 no enough money [instant sell 0.10 EURGBP at 0.82227 sl : 0.83296 tp : 0.79796]
2010.07.06 16:34:01 Core 1 PrevBalance : 10.00, PrevEquity 10.00, PrevMargin : 0.00, NewMargin : 122.91, NewFreeMargin : -112.91 - marge calculée par le testeur
2010.07.06 16:34:01 Core 1 Error : not enough money. Marge libre = 10, marge requise = 122.899 - marge calculée par nous.


2010.07.06 16:34:01 Core 1 pas assez d'argent [ achat instantané 0.10 EURGBP à 0.81247 sl : 0.80191 tp : 0.82988]
2010.07.06 16:34:01 Core 1 PrevBalance : 10.00, PrevEquity 10.00, PrevMargin : 0.00, NewMargin : 122.72, NewFreeMargin : -112.72 - marge calculée par le testeur
2010.07.06 16:34:01 Core 1 Error : not enough money. Marge libre = 10, marge requise = 122.737 - marge calculée par nous.

Il y a une différence. Nous modifions maintenant la formule de calcul de la marge requise, qui devient

ACHETER : marge = lot*taille du lot*tick_offre/levier

VENDRE : marge = lot*taille_lot*tick_ask/moyen

ce qui contredit l'article. Nous recevons de tels messages de la part du testeur :

2010.07.06 16:39:49 Core 1 no enough money [instant sell 0.10 EURGBP at 0.82227 sl : 0.83296 tp : 0.79796]
2010.07.06 16:39:49 Core 1 PrevBalance : 10.00, PrevEquity 10.00, PrevMargin : 0.00, NewMargin : 122.91, NewFreeMargin : -112.91 - marge calculée par le testeur
2010.07.06 16:39:49 Core 1 Error : not enough money. Free margin = 10, required margin = 122.911 - marge calculée par nous

2010.07.06 16:39:49 Core 1 no enough money [instant buy 0.10 EURGBP at 0.81247 sl : 0.80191 tp : 0.82988]
2010.07.06 16:39:49 Core 1 PrevBalance : 10.00, PrevEquity 10.00, PrevMargin : 0.00, NewMargin : 122.72, NewFreeMargin : -112.72 - marge calculée par le testeur
2010.07.06 16:39:49 Core 1 Error : not enough money. Marge libre = 10, marge requise = 122.722 - marge calculée par nous
.

Ici, la marge calculée par l'Expert Advisor utilisant la "mauvaise" méthode est exactement la même que la marge calculée par le testeur. Il s'avère que soit dans le testeur, soit dans l'article, le bid et le ask sont réarrangés lors du calcul de cross comme l'EURGBP. Qui a raison : l'article ou le testeur ?

 

L'article est bon et utile pour moi.

A la fois pour comprendre et pour gagner du temps. Je vous remercie.

Je ne comprends pas ce que nous obtenons avec cette fonction.

Si le montant de la garantie requise, la valeur du contrat ne devrait-elle pas être divisée par l'effet de levier ?

Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте
Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте
  • www.mql5.com
Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте - Документация по MQL5
 
SHOOTER777:

L'article est bon et utile pour moi.

A la fois pour comprendre et pour gagner du temps. Je vous remercie de votre attention.

Je ne comprends pas ce que nous obtenons avec cette fonction.

Si la taille de la garantie requise, alors la valeur du contrat ne devrait-elle pas être divisée par l'effet de levier ?

Je n'ai pas compris tout de suite. Il m'a fallu une heure pour comprendre pourquoi le résultat était 100 fois différent du résultat réel.
 
SHOOTER777:

Si le montant de la marge requise, la valeur du contrat ne devrait-elle pas être divisée par l'effet de levier ?

La valeur du contrat n'est pas le montant de la marge. Le code divise ensuite la valeur par l'effet de levier pour obtenir le montant de la marge.
 
sur la paire EURUSD sur votre démo... avec des fonds disponibles de 10 000 je ne peux pas ouvrir avec le lot 10... pourquoi ? pourquoi ? et comment calculer le lot maximum possible en fonction des fonds disponibles. merci.