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

 
Vitaly Muzichenko:

Alors je n'obtiendrai pas un nombre fractionnaire.

Vous avez probablement besoin de quelque chose comme ça :

typename(TralingStop)=="double" ? ...

 
Artyom Trishkin:

typename(TralingStop)=="double" ?

Pas exactement, si vous avez entré "input" dans les paramètres de saisie, par exemple 15 ou 15.0, alors vous affichez seulement 15 dans le champ de saisie, c'est-à-dire un nombre entier. Si vous avez saisi 12.3 dans les paramètres de saisie, affichez 12.3 dans le champ de saisie.

 
Vitaly Muzichenko:

Pas exactement, si vous avez entré "input" dans les paramètres de saisie, par exemple 15 ou 15.0, alors vous affichez seulement 15 dans le champ de saisie, c'est-à-dire un nombre entier. Si vous avez saisi 12,3 dans les paramètres de saisie, affichez 12,3 dans le champ de saisie.

Il s'agit alors de déterminer le nombre de décimales d'un nombre quelconque. Il y a eu un sujet de ce genre quelque part - on en a discuté.

 
Artyom Trishkin:

Alors il s'agit de déterminer le nombre de décimales d'un nombre quelconque. Il y a eu un sujet de ce genre quelque part - on en a discuté.

Je pense qu'il y en avait un, mais je ne l'ai pas trouvé, alors je l'ai écrit ici (

 
Vitaly Muzichenko:

Pas exactement, si vous avez entré "input" dans les paramètres de saisie, par exemple 15 ou 15.0, alors vous affichez seulement 15 dans le champ de saisie, c'est-à-dire un nombre entier. Si vous avez saisi 12,3 dans les paramètres de saisie, le champ de saisie doit afficher 12,3.

Expérimentez avec un script comme celui-ci :

#property script_show_inputs
input double inp1 = 15.0;
input double inp2 = 12.3;
//+------------------------------------------------------------------+
void OnStart()
  {
   int dig1 = GetDigitsInDouble(inp1);
   int dig2 = GetDigitsInDouble(inp2);
   printf("inp1 = %f --> %s",inp1,DoubleToString(inp1,dig1));
   printf("inp2 = %f --> %s",inp2,DoubleToString(inp2,dig2));
  }
//_______________________________________________________________________
int      GetDigitsInDouble(double doublevalue)
  {
   long l=long(doublevalue/0.0000001);int result=0,i=10000000; while(result<7 && l%i>0)
     {i/=10; result++;}return result;
  }

2019.08.06 22:40:44.668 tst1 (EURUSD,H1) inp1 = 15.000000 --> 15

2019.08.06 22:40:44.668 tst1 (EURUSD,H1) inp2 = 12.300000 --> 12.3


il semble que la 7ème décimale soit parfois erronée.

 
Vitaly Muzichenko:

Il semble l'avoir été, mais je n'ai pas pu le trouver, alors j'ai écrit ici (

Получаем количество десятичных знаков после запятой любых чисел (не только котировок) в обход Digits() на MQL4 и MQL5
Получаем количество десятичных знаков после запятой любых чисел (не только котировок) в обход Digits() на MQL4 и MQL5
  • 2018.11.03
  • www.mql5.com
Думаю не у одного меня была редкая ситуация когда нужно было получить количество десятичных знаков после запятой, а функция Digits() работает тольк...
 
Igor Makanu:

expérimenter avec un script comme celui-ci :

2019.08.06 22:40:44.668 tst1 (EURUSD,H1) inp1 = 15.000000 --> 15

2019.08.06 22:40:44.668 tst1 (EURUSD,H1) inp2 = 12.300000 --> 12.3


Je pense que la 7ème décimale sera parfois fausse.

Artyom Trishkin:

Merci à tous, je vais l'essayer !

 
Comment puis-je enregistrer les informations relatives à une position ouverte (lot, type) afin qu'elles puissent être lues par un EA dans un autre terminal MT5 ?
 
Les gars, pouvez-vous clarifier cette question, s'il y a une optimisation sur les agents distants et que EA écrit les données dans un fichier, alors je comprends que je n'obtiendrai pas ces données, parce que seuls mes agents locaux sont dans le dossier du testeur, et il n'y a pas d'agents distants....
Ou bien est-ce que je cherche au mauvais endroit ?
Si c'est le cas, y a-t-il un moyen d'implémenter la possibilité d'obtenir des fichiers à partir d'agents distants ?
 
Vitaly Muzichenko:

Je pense qu'il y en avait un, mais je ne l'ai pas trouvé, alors je l'ai posté ici (

C'est ainsi qu'il est décrit dans la documentation. Dans fmod, vous mettez le diviseur 1 et obtenez la partie fractionnaire du nombre ou 0. Vous ne vous souciez pas du nombre de décimales saisies dans le champ ou la variable d'entrée.

Документация по MQL5: Математические функции / MathMod
Документация по MQL5: Математические функции / MathMod
  • www.mql5.com
Функция MathMod рассчитывает вещественный остаток f от val / y таким образом, что val = i * y + f , где i является целым числом, f имеет тот же знак, что и val, и абсолютное значение f меньше, чем абсолютное значение y.
Raison: