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

 
Konstantin Seredkin:

У меня висят постоянно, пока сам не выгружу, когда  скрин делал, использование МТ5 было в суботу утром закончено когда рынок закрылся по моему часовому поясу, в воскресенье сел в игры играть и начал заниматься убиванием процессов.

Наверное проблема на моей стороне, хотя винда лицензия месяц назад переустановлена.

Снимайте дамп "висящего" агента. Посмотрим.

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


   any suggestions?
   почему? 

Ternary operator  does not cast to base class imlicitly

Use explicit casting

interface A{};
class B:public A{};
class C:public A{};
void OnStart(void)
  {
   A* x=(true)? (A *)new B : (A *)new C; //invalid cast operation
  }


Тернарный оператор не приводит операнды к базому классу автоматически - используйте явное приведение.

 
A100:
Нет сообщения об ошибке:

а так есть:

А какая принципиальная разница?

В первом случае тоже должно было быть сообщение об ошибке  - имя функции уже используется для перечисления.

 

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

Заранее спасибо

 
Aliaksandr Hryshyn:

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

Заранее спасибо

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

 
Добрый день. Подскажите пожалуйста, не могу импортировать CSV файл в базу данных через навигатор ME. Пишет: import database error. Перепробовал все варианты CSV. Кому нибудь удавалось это сделать или это баг? Version: 5.0 build 27.15. 
 

Если изменяешь EX5, то при открытии ранее полученных opt-файлов этого советника исчезают входные параметры проходов.

Большая просьба показывать их при любом раскладе!

 

В Сигнале такое предупреждение.

С чем может быть это связано? Данные доступа к счету не менялись.

 
fxsaber:

В Сигнале такое предупреждение.

С чем может быть это связано? Данные доступа к счету не менялись.


бывает периодически. Потом переподключится. Ничего делать не надо. 

 
Alexey Viktorov:

Понимать надо не меня, а документацию. О сортировке я предположил на основании списка ордеров или позиций. И ещё в одной из тем Slava говорил, что достаточно, просто скрыть объект и вновь отобразить, чтобы он был выше всех остальных и первым получил событие «клик крыски». Если ошибся, извиняйте. Разберитесь как список сортируется и расскажите всем. Я тоже поменяю своё мнение.

После долгих мучений и экспериментов на ум приходит что в MQL5 есть баг с очерёдностью объектов в списке объектов. Потому как попробовав этот код в MQL4 без особой уже надежды на корректную обработку, обнаружил что 4 созданых по порядку фибо уровня, имеют правильную нумерацию в списке объектов  0.1.2.3. первый ==0, второй ==1, итд., в следствии чего код отработал их с заданой логикой.   В  MQL5  же созданные один за другим 4 фибо, имеют нумерацию с потолка, и только если им изменить имена они выстраиваются в порядки очерёдности  смены имён.   Как быть то???  Проверьте кто у себя, может у меня терминал криво встаёт, хотя уже на 3 компах пробовал(((

//+------------------------------------------------------------------+
//|                                                            F.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"
//+------------------------------------------------------------------+
//|                                                  Fibo_Massiv.mq5 |
//|                        Copyright 2020, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
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";
//---------------------------------------------
   NameFibo[1]="M1";
   NameFibo[2]="M5";
   NameFibo[3]="M15";
   NameFibo[4]="H1";
   NameFibo[5]="H4";
   NameFibo[6]="Da";
   NameFibo[7]="We";
   NameFibo[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 мерный  массив
//  Alert("ArraySize(FiboDown)= ", ArraySize(FiboDown));
   int Fibo_Koll = ObjectsTotal(0,0,OBJ_FIBO);     //Запрос колличества объектов Fibo

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

   int Koll[];  //Индексация и запись в массив по порядку появления фибо в окне инструментов
   int Tip[];    //Запись типа Fibo в массив по порядку появления фибо в окне инструментов
   ArrayResize(Koll,Fibo_Koll); // Устанавливает новый размер в первом измерении массива Koll []
   ArrayResize(Tip,Fibo_Koll);  // Устанавливает новый размер в первом измерении массива Tip []


   for(int i=0; i < Fibo_Koll; i++)
     {
      string n=ObjectName(0,0,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);
         //Изменение имени объекта
         /*   bool l =  StringSetLength(      //Устанавливает для  строки указанную длину в символах 2
                         n,       // строка
                         2    // новая длина строки
                      );
            //-----------------------------------------------------------
            int N = 1;
            string q;

            for(int e = 1; N != 0; e++) // пока N не == 0, гоняем функцию StringCompare. сравнивая обрезанную переменную(StringSetLength) с массивом NameFibo[]
              {
               N= StringCompare(
                     n,              // первая сравниваемая строка
                     NameFibo[e],    // вторая сравниваемая строка
                     true      // режим учета регистра букв при сравнении
                  );

               q= NameFibo[e];

              }
            n= q+NameFiboUp[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);
         //Изменение имени объекта
         /*     bool l =  StringSetLength(      //Устанавливает для  строки указанную длину в символах 2
                           n,       // строка
                           2    // новая длина строки
                        );
              //-----------------------------------------------------------
              int N = 1;
              string q;

              for(int e = 1; N != 0; e++) // пока N не == 0, гоняем функцию StringCompare. сравнивая обрезанную переменную(StringSetLength) с массивом NameFibo[]
                {
                 N= StringCompare(
                       n,              // первая сравниваемая строка
                       NameFibo[e],    // вторая сравниваемая строка
                       true      // режим учета регистра букв при сравнении
                    );

                 q= NameFibo[e];

                }
              n= q+NameFiboUp[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%
         //------------------------------------------------------------------
         //Изменение имени объекта
         bool  F =ObjectSetString(0,n,OBJPROP_NAME,NameFiboDown[Down]);


         Down++;

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

   ArrayPrint(
      FiboUp,             // выводимый массив
      2,      // количество десятичных знаков после запятой
      NULL,      // разделитель между значениями полей структуры
      0,             // индекс первого выводимого элемента
      WHOLE_ARRAY,   // количество выводимых элементов
      ARRAYPRINT_HEADER|ARRAYPRINT_INDEX|ARRAYPRINT_ALIGN
   );

   ArrayPrint(
      FiboDown,             // выводимый массив
      2,      // количество десятичных знаков после запятой
      NULL,      // разделитель между значениями полей структуры
      0,             // индекс первого выводимого элемента
      WHOLE_ARRAY,   // количество выводимых элементов
      ARRAYPRINT_HEADER|ARRAYPRINT_INDEX|ARRAYPRINT_ALIGN
   );

  }
// for(int i=0; i<ArraySize(Koll); i++)
//  printf("Koll[%d] = %d",i,Koll[i]);


//------------------------------------------------------------------------------------------------------

//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
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% в цене инструмента
  }
//+------------------------------------------------------------------+
Причина обращения: