Ошибки, баги, вопросы - страница 2911

 
DMITRII PECHERITSA:
   compile fail with ternary operator 
   ошибка компиляции с оператором ?:


   any suggestions?
   почему? 
https://www.mql5.com/ru/docs/basis/operators/ternary
Читаем доки)
 
DMITRII PECHERITSA:
   compile fail with ternary operator 
   ошибка компиляции с оператором ?:


   any suggestions?
   почему? 

Не =, а ==

 

Можно ли каким-нибудь образом сделать случайное перемешивание чисел в заданном диапазоне?

Например имеется диапазон от 0 до 9. Возможно ли их перемешать - 5863014297? Именно перемешать, а не получить случайное число из данного диапазона - rand не подходит.

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

Можно ли каким-нибудь образом сделать случайное перемешивание чисел в заданном диапазоне?

Например имеется диапазон от 0 до 9. Возможно ли их перемешать - 5863014297? Именно перемешать, а не получить случайное число из данного диапазона - rand не подходит.

переведите полученное число в строку, меняйте символы этой строки между собой по какому либо алгоритму (сами придумайте по какому) - а потом число из строки переводите обратно в double или int

 
Alexandr Sokolov:

переведите полученное число в строку, меняйте символы этой строки между собой по какому либо алгоритму (сами придумайте по какому) - а потом число из строки переводите обратно в double или int

Спасибо, это вариант!
А если диапазон в несколько тысяч, или даже десятков тысяч чисел?
 
Aleksei Lesnikov:
Спасибо, это вариант!
А если диапазон в несколько тысяч, или даже десятков тысяч чисел?

строка это массив 

сделай массив из требуемого количесва

 
Привет!!!   Подскажите не догоняю может что)))   Порядок в списке объектов    почему то если не изменять имен объектов, то при выборе и обработке объектов через этот цикл   
 for(int i=0; i < Fibo_Koll; i++)
     {
      n=ObjectName(0,i,0,OBJ_FIBO);

порядок сохраняется.  Но если изменять имена этими функциями

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

 

то выбор следующего объекта происходит рандомно???  

//+------------------------------------------------------------------+
//|                                                  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% в цене инструмента
  }
//+------------------------------------------------------------------+
 

Кто с таким сталкивался

Вин 10

билд терминала 2715

После того как сделаю любую оптимизацию эксперта, после закрытия терминала в процессах остаются висеть Агенты потребляя оперативную память.


Как бы не критично ОЗУ по объему много, но вот когда запускаю игры, из за того что к памяти постоянно обращается эта куча дормоедов у меня ФПС падает на 20 кадров минимум.

Приходится или комп перегружать или сидеть по одному процессы убивать...

Если честно уже раздражать начинает.

Скажите это баг или так задумано, кроме терминала от брокера открытия больше ни чего не ставил, время от времени он обновляется, каких либо манипуляций с ним не делал.

 
Kira27:
Привет!!!   Подскажите не догоняю может что)))   Порядок в списке объектов    почему то если не изменять имен объектов, то при выборе и обработке объектов через этот цикл   

порядок сохраняется.  Но если изменять имена этими функциями

 

то выбор следующего объекта происходит рандомно???  

Потому, что при переименовании объекта происходит пересоздание его. Один удаляется, другой создаётся и в списке всех объектов они расположены в порядке времени создания.

 
Alexey Viktorov:

Потому, что при переименовании объекта происходит пересоздание его. Один удаляется, другой создаётся и в списке всех объектов они расположены в порядке времени создания.

Огромное спасибо!!!   А где про это можно почитать?

Причина обращения: