Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 666

 

Добрый день.

Подскажите, пожалуйста, как переделать данную функцию чтобы избавиться от ошибки (the size of local variables is too large (more than 512kb)):

double DTWDistance(double &s[], double &t[])
{
   int slenght = ArraySize(s);
   int tlenght = ArraySize(t);
   double dtw[1000][1000];
   int i, j;

   dtw[0, 0] = 0.0;
   for (j = 1; j <= tlenght; j++)
   {
      dtw[0, j] = 1000000.0;
   }
  
   for (i = 1; i <= slenght; i++)
   {
      dtw[i, 0] = 1000000.0;
   }

   for (i = 1; i <= slenght; i++)
   {
      for (j = 1; j <= tlenght; j++)
      {
         dtw[i, j] = Distance(s[i], t[j]) + MathMin(dtw[i - 1, j], MathMin(dtw[i, j - 1], dtw[i - 1, j - 1]));
      }
   }

   return (dtw[slenght, tlenght]);
}
 
Craft:

Добрый день.

Подскажите, пожалуйста, как переделать данную функцию чтобы избавиться от ошибки (the size of local variables is too large (more than 512kb)):

double DTWDistance(double &s[], double &t[])
{
....
   return (dtw[slenght, tlenght]);
}
Для того что-бы переделать, нужно знать что решает ваша функция, и для каких задач используется
 
Vitaly Muzichenko:
Для того что-бы переделать, нужно знать что решает ваша функция, и для каких задач используется
Добрый день, Виталий.

С определённого билда МТ4 начала появляться ошибки при компилировании  (the size of local variables is too large (more than 512kb)) различных кодов которая ранее не появлялась, пытаюсь понять, как с ней бороться и для примера вставил, как мне показалось простой фрагмент кода из индикатора WmiFor30. Можете на этом примере показать, как исправлять эту ошибку?

Файлы:
WmiFor30.mq4  25 kb
 
Craft:
Добрый день, Виталий.

С определённого билда МТ4 начала появляться ошибки при компилировании  (the size of local variables is too large (more than 512kb)) различных кодов которая ранее не появлялась, пытаюсь понять, как с ней бороться и для примера вставил, как мне показалось простой фрагмент кода из индикатора WmiFor30. Можете на этом примере показать, как исправлять эту ошибку?

Не знаю что в нём за принцип работы, попробуйте. Исправление увидите
Файлы:
WmiFor30.mq4  25 kb
 
Vitaly Muzichenko:
Не знаю что в нём за принцип работы, попробуйте. Исправление увидите
Спасибо, интересно.
 

Вопрос по графику:

Есть вот такая конструкция

for(long currChart = ChartFirst();currChart != -1; currChart=ChartNext(currChart)) {
 if(currChart == график тестера) continue; // Что сюда написать?
  ObjectSetInteger(currChart,"Sync",OBJPROP_BGCOLOR,clrGreen);
}

Как выяснить, что график не основной, а открытый в режиме тестера и его пропустить?

 
Здравствуйте!
Сегодня воскресение:
TimeCurrent()=1478300399, что соответствует 2016.11.04 22:59 - пятница
DayOfWeek()=5, что вполне естественно ))

Вопрос: Подскажите пожалуйста, как программно в init(); определить, что сейчас, в момент прикрепления эксперта на чарт, выходной день - воскресение ?
            Без обращения к TimeLocal():
 
Leo59:
Здравствуйте!
Сегодня воскресение:
TimeCurrent()=1478300399, что соответствует 2016.11.04 22:59 - пятница
DayOfWeek()=5, что вполне естественно ))

Вопрос: Подскажите пожалуйста, как программно в init(); определить, что сейчас, в момент прикрепления эксперта на чарт, выходной день - воскресение ?
            Без обращения к TimeLocal():
поможет?
 
Vitaly Muzichenko:
поможет?
Спасибо за подсказку. Но, :

AccountInfoInteger(ACCOUNT_TRADE_ALLOWED) может возвращать false в следующих случаях:

  • нет соединения с торговым сервером. Можно проверить с помощью TerminalInfoInteger(TERMINAL_CONNECTED));
  • торговый счет переведен в режим read-only (отправлен в архив);
  • торговля на счете запрещена на стороне торгового сервера;
  • подключение к торговому счете произведено в режиме инвестора.

Вот если бы просто : торговля запрещена на стороне торгового сервера;

А то, не совсем корректно получается ))


Хотя, в принципе, bool  IsTradeAllowed(); можно попробовать.

Большое спасибо Виталий!!!!

 
К сожалению, не помогает.

init();
 if(IsTradeAllowed()) Print("Торговля разрешена");
 if(!IsTradeAllowed()) Print("Торговля НЕ разрешена");


Выводит : "Торговля разрешена"

Надо как-то по другому. А вот как ?

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