Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 2355

 

Приветствую. Подскажите, пожалста: есть ли возможность чтоб в тестере мт5 отображалось выставление и удаление отложенных
Чтоб была возможность видеть на графике когда были выставлены и когда удалены, как это видно в мт4.

 
Andrei Sokolov #:

Приветствую. Подскажите, пожалста: есть ли возможность чтоб в тестере мт5 отображалось выставление и удаление отложенных
Чтоб была возможность видеть на графике когда были выставлены и когда удалены, как это видно в мт4.

Нету. Только самому делать

 

Всем доброго времени суток! 

Вопрос по тестеру МТ4 по функции  ArrayCopy()

Мне нужно скопировать из МАССИВА_1 в МАССИВ_2 не все содержание первого массива а только колонки 1 и 2  и вставить во второй массив колонку 1 из первого массива в нулевую колонку второго массива, а колонку 2 из первого массива в колонку 1 второго массива.

Или как вариант скопировать только колонку 1 из первого массива, но вставить ее обязательно в колонку 0 второго массива

У меня почему то не получается этого сделать. Может бытья я что то недопонимаю в описании этой функции...

Буду признателен если подскажете как мне добиться моей цели.

 
ANDREY #:

Всем доброго времени суток! 

Вопрос по тестеру МТ4 по функции  ArrayCopy()

Мне нужно скопировать из МАССИВА_1 в МАССИВ_2 не все содержание первого массива а только колонки 1 и 2  и вставить во второй массив колонку 1 из первого массива в нулевую колонку второго массива, а колонку 2 из первого массива в колонку 1 второго массива.

Или как вариант скопировать только колонку 1 из первого массива, но вставить ее обязательно в колонку 0 второго массива

У меня почему то не получается этого сделать. Может бытья я что то недопонимаю в описании этой функции...

Буду признателен если подскажете как мне добиться моей цели.

Вы уверены, что ArrayCopy() работает с двухмерными массивами?
 
Tretyakov Rostyslav #:
Вы уверены, что ArrayCopy() работает с двухмерными массивами?

Спасибо за ценную информацию. Но меня ввела в заблуждение СПРАВКА

В одном случае специально указывается что массив должен быть одномерным. А в другом случае такого указания почему то нет. Вот я и подумал что действует общеюридический принцип ЧТО НЕ ЗАПЕРЕЩЕНО, ТО РАЗРЕШЕНО.

 
Tretyakov Rostyslav #:
Вы уверены, что ArrayCopy() работает с двухмерными массивами?

Абсолютно уверен. Попробуйте, вам понравится…

/********************Script program start function*******************/
void OnStart()
 {
  int arr_src[5][3],
      arr_dst[5][3];
  srand(GetTickCount());
  for(int i = 0; i < 5; i++)
   {
    arr_src[i][0] = rand()%25;
    arr_src[i][1] = arr_src[i][0]*2;
    arr_src[i][2] = arr_src[i][0]+arr_src[i][1];
   }
  ArrayPrint(arr_src);
  ArrayCopy(arr_dst, arr_src);
  Print("***********");
  ArrayPrint(arr_dst);
 }/*******************************************************************/
2024.02.03 09:50:03.280 !00 (USDJPY,M15)            [,0][,1][,2]
2024.02.03 09:50:03.280 !00 (USDJPY,M15)        [0,]   2   4   6
2024.02.03 09:50:03.280 !00 (USDJPY,M15)        [1,]  19  38  57
2024.02.03 09:50:03.280 !00 (USDJPY,M15)        [2,]  19  38  57
2024.02.03 09:50:03.280 !00 (USDJPY,M15)        [3,]  10  20  30
2024.02.03 09:50:03.280 !00 (USDJPY,M15)        [4,]   6  12  18
2024.02.03 09:50:03.280 !00 (USDJPY,M15)        ***********
2024.02.03 09:50:03.280 !00 (USDJPY,M15)            [,0][,1][,2]
2024.02.03 09:50:03.280 !00 (USDJPY,M15)        [0,]   2   4   6
2024.02.03 09:50:03.280 !00 (USDJPY,M15)        [1,]  19  38  57
2024.02.03 09:50:03.280 !00 (USDJPY,M15)        [2,]  19  38  57
2024.02.03 09:50:03.280 !00 (USDJPY,M15)        [3,]  10  20  30
2024.02.03 09:50:03.280 !00 (USDJPY,M15)        [4,]   6  12  18

И даже с четырёхмерными работает. А вот больше нет. Только по той причине, что MQL не поддерживает массивы большей размерности… Но зато успешно копируются массивы структур…

Я вам больше скажу. Можно копировать несколько подряд выбранных строк массива. Как в этом примере только индексы 1,2 и 3 из источника в приёмник меньшего размера.

2024.02.03 10:01:16.361 !00 (USDJPY,M15)            [,0][,1][,2]
2024.02.03 10:01:16.361 !00 (USDJPY,M15)        [0,]  23  46  69
2024.02.03 10:01:16.361 !00 (USDJPY,M15)        [1,]   4   8  12
2024.02.03 10:01:16.361 !00 (USDJPY,M15)        [2,]  15  30  45
2024.02.03 10:01:16.361 !00 (USDJPY,M15)        [3,]   6  12  18
2024.02.03 10:01:16.361 !00 (USDJPY,M15)        [4,]  23  46  69
2024.02.03 10:01:16.361 !00 (USDJPY,M15)        ***********
2024.02.03 10:01:16.361 !00 (USDJPY,M15)            [,0][,1][,2]
2024.02.03 10:01:16.361 !00 (USDJPY,M15)        [0,]   4   8  12
2024.02.03 10:01:16.361 !00 (USDJPY,M15)        [1,]  15  30  45
2024.02.03 10:01:16.361 !00 (USDJPY,M15)        [2,]   6  12  18
 
Alexey Viktorov #:

Абсолютно уверен. Попробуйте, вам понравится…

И даже с четырёхмерными работает. А вот больше нет. Только по той причине, что MQL не поддерживает массивы большей размерности… Но зато успешно копируются массивы структур…

Я вам больше скажу. Можно копировать несколько подряд выбранных строк массива. Как в этом примере только индексы 1,2 и 3 из источника в приёмник меньшего размера.

Спасибо за ценную информацию.

 

Здравствуйте. Функция  InNormalize(double& aa[]) выдаёт ошибку:   error(4200): object already exists.(MQL4)


//+------------------------------------------------------------------+
//| Нормализация входящих сигналов приводим в диапазон +1 -1        |
//+------------------------------------------------------------------+
void InNormalize(double& aa[])
{
   int I=ArraySize(aa);
   double rmax=aa[ArrayMaximum(aa)];
   double rmin=aa[ArrayMinimum(aa)];
   double range=(rmax-rmin);
   if( range==0 ) { Print ("InNormalize: Ошибка range=0"); }
   for(int i=0;i<=I-1;i++)
   {
     aa[i]=2*(aa[i]-rmin)/range-1;
   }
   err("InNormalize");
   return;
}

А это, где она вызывается:

   cur_time=iTime(NULL,0,0);
   nbar_day=iBarShift(NULL,PERIOD_D1,cur_time);

   ArrayInitialize(in_neuro,0.0);
   //---
   if( begin_bar>10 )
   {
         for( i=0; i<=begin_bar-1; i++)
         {
            in_neuro[i]=iClose(NULL,0,begin_bar-i)-iOpen(NULL,PERIOD_D1,nbar_day);
         }
    //---
    InNormalize(in_neuro);
    }
 

Где искать повторяющийся объект или имя? Или что переименовать?

 
HeAic #:
   double rmax=aa[ArrayMaximum(aa)];

Попробуйте поставить скобки

   double rmax=aa[(ArrayMaximum(aa))];
 
Alexey Viktorov #:

Попробуйте поставить скобки

А что это даст?
Причина обращения: