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

 

Après-midi.

Quelques questions sur le testeur dans MT5 :

1) Dans MT5, dans le mode de test visuel du conseiller expert, tous les indicateurs qui sont calculés par iCustom dans le code du conseiller expert sont appliqués au graphique lui-même. Comment peut-on le désactiver/le régler ?

2) J'ai effectué un seul test dans le testeur avec le "mode visuel avec affichage des graphiques, des indicateurs et des transactions" coché, puis j'ai effectué le même test sans le cocher (sans visualisation). Dans le premier cas, le graphique d'équilibre est dessiné tout à fait normalement, alors que dans le second cas, il s'agit simplement d'une ligne droite dans certaines cellules. A quoi cela peut-il être lié ?

 
satorifx:

Après-midi.

Quelques questions sur le testeur dans MT5 :

1) Dans MT5, dans le mode de test visuel du conseiller expert, tous les indicateurs qui sont calculés par iCustom dans le code du conseiller expert sont appliqués au graphique lui-même. Peut-on le désactiver ou le régler d'une manière ou d'une autre ?


1.TesterHideIndicators().

Документация по MQL5: Общие функции / TesterHideIndicators
Документация по MQL5: Общие функции / TesterHideIndicators
  • www.mql5.com
Задает режим показа/сокрытия индикаторов, которые используются в эксперте. Функция предназначена для управления видимостью используемых индикаторов только при тестировании. По умолчанию на графике визуального тестирования показываются все индикаторы, которые создаются в тестируемом эксперте.  Также эти индикаторы показываются на графике...
 
Comment distinguer les événements de suppression d'un objet graphique et de renommage d'un objet graphique. Dans les deux cas, un événement de suppression est généré. Comment puis-je distinguer l'un de l'autre ?
 
leonerd:
Comment distinguer les événements de suppression d'un objet graphique et de renommage d'un objet graphique. L'événement de suppression est généré dans les deux cas. Comment distinguer l'un de l'autre ?

Tu ne peux pas. Renommer, c'est supprimer et créer un nouveau nom. Essayez donc d'attraper la création après la suppression.

 
Les commentaires non liés à ce sujet ont été déplacés vers "Questions des débutants de MQL4 MT4 MetaTrader 4".
 

Pouvez-vous me dire ce qu'il faut écrire pour obtenir des nombres aléatoires à 6 chiffres ?

int Random() {
 int r=MathRand(); // 100000 -> 999999
  return(r);
 }
 
Vitaly Muzichenko:

Pouvez-vous me dire ce qu'il faut écrire pour obtenir des nombres aléatoires à 6 chiffres ?

J'ai trouvé cette solution

int Random(int min,int max) {
   int v=0;
   MathSrand(GetTickCount());
   while(true) {
      v=MathRand()*2*MathRand();
      if(v>=min && v<=max)
         break;
     }
   return(v);
  }
 
Vitaly Muzichenko:

J'ai trouvé cette solution

Vitaly, ce n'est pas la meilleure solution.

Tout d'abord, vous feriez mieux d'utiliser une boucle do while dans ce cas.

Deuxièmement, à mon avis, il est plus sûr d'obtenir un nombre supérieur à 6 chiffres en exponentiation qu'en multiplication. Mais dans ce cas, il est possible d'obtenir l'INF. Mais vous pouvez limiter la valeur de la puissance... Dans mon exemple, la puissance n'est pas supérieure à 16.

/********************Script program start function*******************/
void OnStart()
 {
  double dr = 0,
         df = 0;
  srand(GetTickCount());
  do
   {
    dr = fabs(rand());
    df = fabs(rand());
   }
  while((dr == 1 || df == 1) && !IsStopped());
  double dp = pow(dr, fmod(df, 16));
  Print(DoubleToString(fmod(dp, 1000000), 8));
 }/*******************************************************************/

Et prenez le reste de la division et obtenez un nombre à six chiffres.

 
Alexey Viktorov:

Vitaly, ce n'est pas la meilleure option.

Tout d'abord, il est préférable d'utiliser une boucle do while dans ce cas.

Deuxièmement, à mon avis, il est plus sûr d'obtenir un nombre supérieur à 6 chiffres lorsqu'il est élevé à une puissance que lorsqu'il est multiplié. Mais dans ce cas, il est possible d'obtenir l'INF. Mais vous pouvez limiter la valeur de la puissance... Dans mon exemple, la puissance n'est pas supérieure à 16.

Et prenez le reste de la division pour obtenir un nombre à six chiffres.

Merci, j'ai remplacé la partie dans le code.

 
Vitaly Muzichenko:

Merci, j'en ai remplacé une partie dans le code.

Et quel a été le résultat ? Je ne prétends pas être infaillible...))))