错误、漏洞、问题 - 页 2911

 
DMITRII PECHERITSA:
编译失败与三元运算符
编译失败 的三元运算符?


有什么建议吗?
为什么?
https://www.mql5.com/ru/docs/basis/operators/ternary
阅读文档)
 
DMITRII PECHERITSA:
编译失败与三元运算符
编译失败 的三元运算符?


有什么建议吗?
为什么?

不是=,而是==

 

有没有办法在给定范围内随机洗牌?

例如,有一个从0到9的范围。是否可以洗牌 - 5863014297?确切地说,不是从该范围内得到 一个随机数--rand不适合。

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

有没有办法在给定范围内随机洗牌?

例如,有一个从0到9的范围。是否可以洗牌 - 5863014297?准确地说,不是从一个给定的范围内得到 一个随机数--rand不适合。

将数字转换为字符串,使用某种算法(你可以想办法)改变字符串中的字符,然后将字符串中的数字转换为双数或英数。

 
Alexandr Sokolov:

将这个数字转换成一个字符串,用某种算法(你可以想办法)改变这个字符串的字符,然后将字符串中的数字转换为双数或英数。

谢谢你,这是个选择。
如果范围是几千个,甚至是几万个数字呢?
 
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% в цене инструмента
  }
//+------------------------------------------------------------------+
 

谁遇到过这种情况

Vin 10

终端建设2715。

在我对专家顾问做了任何优化之后,在我关闭终端之后,代理仍然挂在进程中,消耗着内存。


像不是关键的RAM量很多,但当我运行游戏时,由于内存不断地提到一堆落后的事实,我有FPS下降至少20帧。

我必须要么让电脑超载,要么一次坐一个进程来杀...

说实话,已经开始变得很烦人了。

告诉我这个bug还是这么设计的,除了从经纪人的终端开出的任何东西都不放,时不时就更新,任何或与他有关的操作都没做。

 
Kira27:
你好!!!你能告诉我可能不懂)))对象列表中的顺序由于某种原因,如果你不改变对象的名称,那么当你通过这个循环选择和处理对象时

但如果你用这些函数改变名称

然后随机地选择下一个对象。

因为当一个对象被重新命名时,它被重新创建。一个被删除,另一个被创建,在所有对象的列表中,它们按创建时间的顺序排列。

 
Alexey Viktorov:

因为当一个对象被重新命名时,它被重新创建。一个被删除,另一个被创建,在所有对象的列表中,它们按创建时间的顺序排列。

非常感谢!!我在哪里可以读到这方面的信息?