Commentaires sur MQL5 - page 4

 

Il n'y a aucun moyen de faire des coussinets

Pas d'héritage multiple sous quelque forme que ce soit

Des pointeurs peu clairs

Aucune référence

Politique peu claire en matière de copie des structures. Et des cours aussi.

Il n'y a pas de description appropriée des erreurs et des avertissements générés par le compilateur avec des exemples.

Problèmes de typification des types entiers (et des enums, je pense).

Ce n'est qu'un coup d'œil rapide.

C'est juste que tout le monde est habitué à ça. Il est possible de coder, mais le langage MQL5 ne peut certainement pas être qualifié de fin et de miraculeux.

 
Les développeurs ne peuvent qu'être compréhensifs, certains recherchent la simplicité et le dépouillement, d'autres veulent toutes les fonctionnalités des langages de haut niveau et doivent satisfaire les deux et faire en sorte que tout fonctionne ;).
 
Renat Fatkhullin:

Jetez un coup d'œil ici, s'il vous plaît : https://www.mql5.com/ru/docs/constants/environment_state/marketinfoconstants#enum_symbol_info_double

D'une manière générale, la marge ne peut être calculée sur la base d'un seul instrument car elle est la superposition résultante de différentes positions/instruments. De même, dans l'exécution de la bourse, le calcul de la marge peut être transféré (la bourse l'exige) à la bourse elle-même, qui, sur la base de sa logique complexe et fermée, génère la marge finale.

Pour l'estimation intégrale "aurai-je assez de marge si j'effectue cette transaction", il existe une fonction standard OrderCalcMargin : https://www.mql5.com/ru/docs/trading/ordercalcmargin.

Voici le code

string txt=NULL;
double GetMarginInitial=0,GetMarginMain=0;
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int OnInit()
  {
   if(!SymbolInfoDouble(Symbol(),SYMBOL_MARGIN_INITIAL,GetMarginInitial))
     {
      Print(" SYMBOL_MARGIN_INITIAL ",GetLastError());
      return(false);
     }
   txt+="\n"+(string)(GetMarginInitial*SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_MIN));

   if(!SymbolInfoDouble(Symbol(),SYMBOL_MARGIN_MAINTENANCE,GetMarginMain))
     {
      Print(" SYMBOL_MARGIN_MAINTENANCE ",GetLastError());
      return(false);
     }
   txt+="\n"+(string)GetMarginMain;
   
   Comment(txt);
   
   return(INIT_SUCCEEDED);
  }

Sur les contrats à terme montre la marge initiale requise pour un lot 5800 roubles, mais en utilisant ce code sur le forex dit 0 ...

Dans l'aide, il est dit

MARGE_SYMBOLE_INITIALE

La marge initiale (d'initiation) indique le montant de la marge requise pour ouvrir une position d'un lot. Il est utilisé pour vérifier les fonds des clients lorsqu'ils entrent sur le marché.


Et rien d'autre .... Comment calculer la marge pour les devises ? Je ne vois qu'une seule solution, déterminer le type d'instrument, et ensuite calculer par des formules...

 
Vladimir Pastushak:

Voici le code

Sur les contrats à terme, la marge initiale requise pour un lot est de 5800 rur, mais lorsque j'utilise ce code sur le forex, il indique 0 ...

Et dans l'aide, il est dit

MARGE_SYMBOLE_INITIALE

La marge initiale (d'initiation) indique le montant de la marge requise pour ouvrir une position d'un lot. Il est utilisé pour la vérification des fonds du client lors de son entrée sur le marché.


Et rien d'autre ....

Oui, ce paramètre permet de contrôler les exigences de marge pour les contrats à terme.

Bien que pour le forex nous pouvons (devons) nous faire recalculer et donner une valeur approximative (parce que nous ne savons pas ce que le trader veut faire - acheter ou vendre) de la marge par lot.

 
Фьючерсные объемы для МТ:

Il n'y a aucun moyen de faire des coussinets

Pas d'héritage multiple sous quelque forme que ce soit

Nous le ferons un peu plus tard. Nous avons l'héritage habituel.


Des pointeurs peu clairs

Aucune référence

Il y a des références et des pointeurs. Ils sont sûrs et contrôlés.


Politique peu claire de copie des structures. Et des cours, aussi.

Précisément compréhensible - les structures avec des champs simples (non dynamiques) sont copiées automatiquement. Pour le reste, écrivez une fonction de copie.

Nous prévoyons déjà d'étendre le mécanisme de copie des structures avec certains types dynamiques (hors classe). Cela facilitera la plupart des travaux.


Pas de description correcte des erreurs et des avertissements du compilateur avec des exemples.

Les textes d'erreur et d'avertissement sont identiques/semblables à ceux des autres compilateurs. Personne n'a réinventé la roue dans cette affaire.


Problèmes de typage avec les types entiers (et les enums comme)

La rigidité du type est une priorité. C'est pourquoi la liberté des Cish de procéder à des affectations et des conversions dangereuses n'est pas autorisée.


Le langage est toujours en cours de développement et bientôt nous mettrons sérieusement à jour le compilateur MQL4/MQL5 lorsque le nouveau compilateur optimisant (actuellement activé par Optimize=1) sera publié.

 
Serhiy Dotsenko:
dac a déjà écrit comment vous pouvez modifier le code mql dans VS, vous ne pouvez pas le compiler, mais vous pouvez le modifier dans VS et appuyer sur f7 dans ME ;)

Intéressé... Où l'avez-vous écrit ? Et si je veux utiliser les classes standard, les trouverez-vous ou devrez-vous les taper de mémoire ?

Je suis habitué au code, mais je n'arrive pas à m'habituer à l'éditeur, après d'autres éditeurs, comme si je passais au Bloc-notes :)

 
sigma7i:

Intéressé... Où l'avez-vous écrit ? Et si je veux utiliser les classes standard, les trouverez-vous ou devrez-vous les taper de mémoire ?

Je suis habitué au code, mais je n'arrive pas à m'habituer à l'éditeur, après d'autres éditeurs, c'est comme si j'utilisais Notepad :)

Nous mettrons à jour l'éditeur aussi, mais nous avions d'autres priorités.

Nous allons peut-être ouvrir la voie aux plugins.

 
Renat Fatkhullin:

Oui, ce paramètre permet de contrôler les exigences de marge pour les contrats à terme.

Bien que pour le forex, nous pouvons (devons) recalculer et donner une valeur approximative (car nous ne savons pas ce qu'un trader veut faire - acheter ou vendre) de la marge pour 1 lot.

Des zéros sont également renvoyés pour les indices cfd ... L'aide propose des formules qui sont en principe suffisantes mais elles ne sont pas commentées ...

Peut-être que quelqu'un sait ce qu'est


Marge : (Lots*Taille du contrat*Prix du marché*Pourcentage)/Levage

Profit : (prix de clôture - prix d'ouverture)*Taille du contrat*Lots


Pourcentage- qu'est-ce que c'est ?
 
Vladimir Pastushak:


Marge : (Lots*Taille du contrat*Prix du marché*Pourcentage)/Levage

Profit : (prix de clôture - prix d'ouverture)*Taille du contrat*Lots


Pourcentage - on n'en parle nulle part dans la documentation...

Regardez dans l'aide du terminal - https://www.metatrader5.com/ru/terminal/help/trading_advanced/margin_forex
 
Rashid Umarov:
Regardez dans l'aide du terminal - https://www.metatrader5.com/ru/terminal/help/trading_advanced/margin_forex
Vous pouvez obtenir ces coefficients avec SymbolInfoMarginRate, essayer