Erreurs, bugs, questions - page 2911

 
DMITRII PECHERITSA:
échec de la compilation avec l'opérateur ternaire
échec de la compilation avec un opérateur ternaire ?


Des suggestions ?
Pourquoi ?

Pas =, mais ==

 

Existe-t-il un moyen de mélanger aléatoirement les numéros dans une fourchette donnée ?

Par exemple, il existe une fourchette de 0 à 9. Est-il possible de les mélanger - 5863014297 ? Remuer exactement, et non pas obtenir un nombre aléatoire à partir de cette plage - rand ne convient pas.

Документация по MQL5: Математические функции / MathRand
Документация по MQL5: Математические функции / MathRand
  • www.mql5.com
MathRand - Математические функции - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Aleksei Lesnikov:

Existe-t-il un moyen de mélanger aléatoirement les numéros dans une fourchette donnée ?

Par exemple, il existe une fourchette de 0 à 9. Est-il possible de les mélanger - 5863014297 ? Remuer exactement, et non pas obtenir un nombre aléatoire à partir d'une plage donnée - rand ne convient pas.

Traduire le nombre en une chaîne de caractères, changer les caractères de la chaîne les uns avec les autres en utilisant un algorithme (vous pouvez y penser) - et ensuite reconvertir le nombre de la chaîne en double ou en int.

 
Alexandr Sokolov:

convertir ce nombre en une chaîne de caractères, changer les caractères de cette chaîne les uns avec les autres en utilisant un algorithme quelconque (vous pouvez y penser), puis reconvertir le nombre de la chaîne en double ou en int.

Merci, c'est une option !
Et si la fourchette est de plusieurs milliers, voire de dizaines de milliers de chiffres ?
 
Aleksei Lesnikov:
Merci, c'est une option !
Qu'en est-il si la plage est de plusieurs milliers, voire de dizaines de milliers de chiffres ?

une chaîne est un tableau

créer un tableau à partir du nombre requis

 
Bonjour ! !! Je ne comprends pas))) L'ordre dans la liste des objets pour une raison quelconque si vous ne changez pas les noms des objets, alors lors de la sélection et du traitement des objets par ce cycle
 for(int i=0; i < Fibo_Koll; i++)
     {
      n=ObjectName(0,i,0,OBJ_FIBO);

L'ordre est maintenu, mais si vous changez les noms avec ces fonctions...

bool  F =ObjectSetString(0,n,OBJPROP_NAME,NameFiboUp[UP]);
bool  F =ObjectSetString(0,n,OBJPROP_NAME,NameFiboDown[Down]);

puis l'objet suivant est sélectionné au hasard ???

//+------------------------------------------------------------------+
//|                                                  Fibo_Massiv.mq5 |
//|                        Copyright 2020, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
// Expert initialization function
string NameFiboUp[15];                               // Объявление массива
string NameFiboDown[15];                               // Объявление массива   
string NameFibo[9];                               // Объявление массива   
                         

//+------------------------------------------------------------------+
int OnInit()
  {
//---
   NameFiboUp[1]="FiboUp1 ";
   NameFiboDown[1]="FiboDown1 ";
   NameFiboUp[2]="FiboUp2 ";
   NameFiboDown[2]="FiboDown2";
   NameFiboUp[3]="FiboUp3";
   NameFiboDown[3]="FiboDown3 ";
   NameFiboUp[4]="FiboUp4 ";
   NameFiboDown[4]="FiboDown4 ";
   NameFiboUp[5]="FiboUp5";
   NameFiboDown[5]="FiboDown5 ";
   NameFiboUp[6]="FiboUp6 ";
   NameFiboDown[6]="FiboDown6 ";
   NameFiboUp[7]="FiboUp7 ";
   NameFiboDown[7]="FiboDown7 ";
   NameFiboUp[8]="FiboUp8 ";
   NameFiboDown[8]="FiboDown8 ";
   NameFiboUp[9]="FiboUp9 ";
   NameFiboDown[9]="FiboDown9 ";
   NameFiboUp[10]="FiboUp10 ";
   NameFiboDown[10]="FiboDown10";
   NameFiboUp[11]="FiboUp11 ";
   NameFiboDown[11]="FiboDown11 ";
   NameFiboUp[12]="FiboUp12 ";
   NameFiboDown[12]="FiboDown12 ";
   NameFiboUp[13]="FiboUp13 ";
   NameFiboDown[13]="FiboDown13";
   NameFiboUp[14]="FiboUp14 ";
   NameFiboDown[14]= "FiboDown14";
//---------------------------------------------
NameFiboUp[1]="M1 ";
NameFiboUp[2]="M5 ";
NameFiboUp[3]="M15";
NameFiboUp[4]="H1 ";
NameFiboUp[5]="H4 ";
NameFiboUp[6]="Da ";
NameFiboUp[7]="We ";
NameFiboUp[8]="Mo ";
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   int UP=1;
   int Down=1;
   string  nameUP   = "FiboUp";
   string  nameDown = "FiboDown";
   double FiboDown[4][10],FiboUp[4][10];  // 2x мерный  массив

   int Fibo_Koll = ObjectsTotal(0,0,OBJ_FIBO);     //Запрос колличества объектов Fibo

//_________________________________________________________
   if(Fibo_Koll==0) //Если нет не одного фибо выход        //
      return;                                              //
//_________________________________________________________//

  string n;
//  ObjectName(0,0,0,OBJ_FIBO); //Вытаскивает имя найденого фибо

   for(int i=0; i < Fibo_Koll; i++)
     {
      n=ObjectName(0,i,0,OBJ_FIBO);

      //----------------------------------------------------------------------------------------
      double   Fibo_Level_0= ObjectGetDouble(
                                0,          // идентификатор графика
                                n,              // имя объекта
                                OBJPROP_PRICE,           // идентификатор свойства
                                0     // модификатор свойства
                             );


      double   Fibo_Level_1= ObjectGetDouble(
                                0,          // идентификатор графика
                                n,              // имя объекта
                                OBJPROP_PRICE,           // идентификатор свойства
                                1     // модификатор свойства
                             );
      //------------------------------------------------------------------------------------------------------
      if(Fibo_Level_0>Fibo_Level_1)
        {

         //вызов функции расчёта уровня 78.6
         double Fibo_78_Up = Function_Up(Fibo_Level_0, Fibo_Level_1);
         //--------------------------------------------------------------------
         FiboUp[UP][1]=1;    // Тип объектов 1 == FiboUp
         FiboUp[UP][2]=UP;     // Нумерация объектов FiboUp по типу
         FiboUp[UP][3]=Fibo_78_Up;   // 78.6%
         FiboUp[UP][4]=0;       // 61.8%
         FiboUp[UP][5]=0;         // 50%
     //------------------------------------------------------------------
         //Изменение имени объекта
          bool  F =ObjectSetString(0,n,OBJPROP_NAME,NameFiboUp[UP]);

         UP++;

        }
      else
        {
         //вызов функции расчёта уровня 78.6
         double Fibo_78_Down = Function_Down(Fibo_Level_0, Fibo_Level_1);
         //-------------------------------------------------------------------
         FiboDown[Down][1]=2;    // // Тип объектов 2 == FiboDown
         FiboDown[Down][2]=Down;     // Нумерация объектов  по типу
         FiboDown[Down][3]=Fibo_78_Down;   // 78.6%
         FiboDown[Down][4]=0;       // 61.8%
         FiboDown[Down][5]=0;         // 50%
         Alert("  FiboDown[1][1] = ", FiboDown[1][1],
               "  FiboDown[1][3] = ", FiboDown[1][3],
               "  FiboDown[2][1] = ", FiboDown[2][1],
               "  FiboDown[2][3] = ", FiboDown[2][3]);
         //------------------------------------------------------------------
         //Изменение имени объекта
         bool  F =ObjectSetString(0,n,OBJPROP_NAME,NameFiboDown[Down]);

         Down++;

        }
     }
//+------------------------------------------------------------------+



   Alert("  FiboDown[1][1] = ", FiboDown[1][1],
         "  FiboDown[1][3] = ", FiboDown[1][3],
         "  FiboDown[2][1] = ", FiboDown[2][1],
         "  FiboDown[2][3] = ", FiboDown[2][3]);

   Alert("  FiboUp[1][1] = ", FiboUp[1][1],
         "  FiboUp[1][3] = ", FiboUp[1][3],
         "  FiboUp[2][1] = ", FiboUp[2][1],
         "  FiboUp[2][3] = ", FiboUp[2][3]);


  }

//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
double Function_Up(double a, double b)    // имя функции и список параметров
  {
   double Sum_100 = a - b; //Вычисляем 100% В пунктах от точек построения фибо
   double Sum_78  = Sum_100 * 78.6 / 100;  //Вычисляем 78.6% В пунктах
   return (Sum_78 + b);           // Вычисляем 78.6% в цене инструмента
  }
//+------------------------------------------------------------------+
double Function_Down(double a, double b)    // имя функции и список параметров
  {
   double Sum_100 = b - a ; //Вычисляем 100% В пунктах от точек построения фибо
   double Sum_78  = Sum_100 * 21.4 / 100;  //Вычисляем 78.6% В пунктах
   return (Sum_78 + a);           // Вычисляем 78.6% в цене инструмента
  }
//+------------------------------------------------------------------+
 

Qui a rencontré cette

Vin 10

Terminal 2715.

Après avoir optimisé le conseiller expert, après avoir fermé le terminal, les agents sont toujours suspendus dans les processus, consommant de la RAM.


Comme le volume de RAM non critique est beaucoup, mais quand je lance le jeu, en raison du fait que la mémoire se réfère constamment à un tas de retardataires j'ai des chutes de FPS d'au moins 20 images.

Je dois soit surcharger l'ordinateur, soit asseoir un processus à la fois pour tuer...

Honnêtement, ça commence déjà à être ennuyeux.

Dites-moi ce bug ou si conçu, à l'exception du terminal de l'ouverture du courtier tout le reste n'est pas mis, de temps en temps il est mis à jour, tout ou manipulations avec lui n'a pas fait.

 
Kira27:
Bonjour !!! Pouvez-vous me dire mai ne pas l'obtenir))) L'ordre dans la liste des objets pour une raison quelconque si vous ne changez pas les noms des objets, puis lorsque vous sélectionnez et traiter les objets à travers cette boucle

L'ordre est maintenu, mais si vous changez les noms avec ces fonctions...

puis l'objet suivant est choisi au hasard ???

Car lorsqu'un objet est renommé, il est recréé. Un objet est supprimé, un autre est créé et dans la liste de tous les objets, ils sont classés dans l'ordre de leur création.

 
Alexey Viktorov:

Car lorsqu'un objet est renommé, il est recréé. L'un est supprimé, l'autre est créé et dans la liste de tous les objets, ils sont classés dans l'ordre de leur création.

Merci beaucoup ! !! Où puis-je lire à ce sujet ?

 
Kira27:

Merci beaucoup ! !! Où puis-je le lire ?

Je l'ai trouvé))) --- Chaque objet graphique doit avoir un nom unique au sein d'un mêmegraphique, y compris ses sous-fenêtres. Le changement de nom d'un objet graphique génère deux événements : le premier est celui de la suppression de l'objet portant l'ancien nom et le second est celui de la création d'un objet graphique portant un nouveau nom. La question est de savoir pourquoi compliquer autant la vie du programmeur.

Операции с графиками - Справочник MQL4
Операции с графиками - Справочник MQL4
  • docs.mql4.com
Функции, устанавливающие свойства графика, фактически служат для отправки ему команд на изменение. При успешном выполнении этих функций команда попадает в общую очередь событий графика. Изменение графика производится в процессе обработки очереди событий данного графика. По этой причине не следует ожидать немедленного визуального обновления...
Raison: