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

 
ANDREY #:

Понятно что пустой массив до его заполнения , (то есть только объявленный, но не заполненный массив), лежит в теле ( в коде) Советника. Потом в теле этого же Советника этот массив инициализируется, то есть ,заполняется значениями.
ВОПРОС. А получится у меня только объявить этот же массив но не в теле Советника , а в файле mqh . А заполнить объявленный в файле mqh  массив значениями (инициализировать) в теле Советника? 

Обращаю Ваше внимание на то, что я говорю не об изменении значений уже заполненного массива в файле mqh , а о первоначальном заполнении  пустого массива в файле mqh   первоначальными значениями.

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

Спасибо

Андрей, у меня к вам какое-то странное отношение. Сам не могу понять какое…

То мне надоедает такой, простите тупизм, то почитав какие вам дают советы и что вы понимаете в этих советах становится жалко вашу психику. Боюсь что вы можете сойти с ума.

Извините, это сказано не для того чтобы обидеть вас.

Теперь по существу. Попытаюсь вам объяснить, на мой взгляд подоходчивей.

Если заполнять массив в теле советника, то файл .mqh тут совсем не при делах. Всё что пишется в файле .mqh может быть изменено ИСКЛЮЧИТЕЛЬНО ВРУЧНУЮ С КЛАВИАТУРЫ. Чем-бы вы не заполнили массив, не зависимо от того где он объявлен, вы не сможете этот массив сохранить в этом .mqh файле. Самый лучший вариант вам работать с файлом .bin который можно и писать на диск, и читать, и после первоначального заполнения или внесения изменений перезаписывать. После прочтения массива из файла .bin вы просто работаете с этим массивом, а после изменений перезаписываете файл .bin  и тогда другой советник прочтёт этот массив уже с внесёнными изменениями.

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

Забудьте про .mqh как страшный сон и долго о нём не вспоминайте.

 
Alexey Viktorov #:

Андрей, у меня к вам какое-то странное отношение. Сам не могу понять какое…

То мне надоедает такой, простите тупизм, то почитав какие вам дают советы и что вы понимаете в этих советах становится жалко вашу психику. Боюсь что вы можете сойти с ума.

Извините, это сказано не для того чтобы обидеть вас.

Теперь по существу. Попытаюсь вам объяснить, на мой взгляд подоходчивей.

Если заполнять массив в теле советника, то файл .mqh тут совсем не при делах. Всё что пишется в файле .mqh может быть изменено ИСКЛЮЧИТЕЛЬНО ВРУЧНУЮ С КЛАВИАТУРЫ. Чем-бы вы не заполнили массив, не зависимо от того где он объявлен, вы не сможете этот массив сохранить в этом .mqh файле. Самый лучший вариант вам работать с файлом .bin который можно и писать на диск, и читать, и после первоначального заполнения или внесения изменений перезаписывать. После прочтения массива из файла .bin вы просто работаете с этим массивом, а после изменений перезаписываете файл .bin  и тогда другой советник прочтёт этот массив уже с внесёнными изменениями.

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

Забудьте про .mqh как страшный сон и долго о нём не вспоминайте.

Спасибо  Забыть про  .mqh я почему то не хочу. Наверное потому что я слегка дотошный человек и раз начал изучать тему  .mqh , то хочу изучить ее до определенного конца и по возможности со всех доступных моему пониманию сторон. Поэтому я хочу получить ответ свой вопрос о том можно ли объявить массив в в файле  .mqh , а заполнить этот массив( то есть , инициализировать)   в Советнике(из Советника) на mql4. Из моего желания получить ответ на этот вопрос вовсе не вытекает того что я буду пользоваться файлом  .mqh. Просто я должен знать на будущее ответ на свой вопрос. 

ВАШИ СЛОВА, которые вероятно по Вашему мнению являются ответом на мой вопрос   " Всё что пишется в файле .mqh может быть изменено ИСКЛЮЧИТЕЛЬНО ВРУЧНУЮ С КЛАВИАТУРЫ." Я это уже давно понял. И поэтому задаю вопрос не об изменении значений массива который лежит в  в файле .mqh , а о заполнении (инициализации) массива который объявлен в файле  .mqh , а точнее о заполнении этого массива значениями из Советника на mql 4.

Если это возможно, то в дальнейшем я  УЖЕ не планирую изменять данные этого инициализированного массива в файле.mqh( как я пытался делать первоначально). Только инициализация и ничего больше. И свое желание использовать  один массив из файла  .mqh  в разных Советниках я уже  так же давно аннулировал после общения здесь на эту тему. 

Для меня ответ на этот вопрос содержит определенную интригу потому что пользователь Алексей Федотов и Алексей Степаненко   уверенно и однозначно утверждают что инициализировать объявленный в mqh массив из Советника на mql4  можно, а Вы почему то не даете прямого и однозначного ответа на этот вопрос, не смотря на то что я его формулировал неоднократно. К тому же Вы еще и критикуете какие то ответы  других участников моей беседы .

Возможно мы с вами не очень быстро понимаем друг друга по причине  нашей недостаточной внимательности , которая случается у нас иногда :):):)

 
ANDREY #:

Спасибо  Забыть про  .mqh я почему то не хочу. Наверное потому что я слегка дотошный человек и раз начал изучать тему  .mqh , то хочу изучить ее до определенного конца и по возможности со всех доступных моему пониманию сторон. Поэтому я хочу получить ответ свой вопрос о том можно ли объявить массив в в файле  .mqh , а заполнить этот массив( то есть , инициализировать)   в Советнике(из Советника) на mql4. Из моего желания получить ответ на этот вопрос вовсе не вытекает того что я буду пользоваться файлом  .mqh. Просто я должен знать на будущее ответ на свой вопрос. 

ВАШИ СЛОВА, которые вероятно по Вашему мнению являются ответом на мой вопрос   " Всё что пишется в файле .mqh может быть изменено ИСКЛЮЧИТЕЛЬНО ВРУЧНУЮ С КЛАВИАТУРЫ." Я это уже давно понял. И поэтому задаю вопрос не об изменении значений массива который лежит в  в файле .mqh , а о заполнении (инициализации) массива который объявлен в файле  .mqh , а точнее о заполнении этого массива значениями из Советника на mql 4.

Если это возможно, то в дальнейшем я  УЖЕ не планирую изменять данные этого инициализированного массива в файле.mqh( как я пытался делать первоначально). Только инициализация и ничего больше. И свое желание использовать  один массив из файла  .mqh  в разных Советниках я уже  так же давно аннулировал после общения здесь на эту тему. 

Для меня ответ на этот вопрос содержит определенную интригу потому что пользователь Алексей Федотов и Алексей Степаненко   уверенно и однозначно утверждают что инициализировать объявленный в mqh массив из Советника на mql4  можно, а Вы почему то не даете прямого и однозначного ответа на этот вопрос, не смотря на то что я его формулировал неоднократно. К тому же Вы еще и критикуете какие то ответы  других участников моей беседы .

Возможно мы с вами не очень быстро понимаем друг друга по причине  нашей недостаточной внимательности , которая случается у нас иногда :):):)

код во включаемом файле ничем не отличается от кода советника. Компилятор вставляет код мкх файла в место где написано инклуд и компилирует код советника с этой вставкой. Можете по экспериментировать, даже если в коде мкх файла не будет всех переменных и он компилируется с ошибками, его можно вставить в любом месте кода советника. мкх файл при компиляции остается кодом, в отличие от исполняемых файлов советников индикаторов скриптов, которые превращаются в исполняемый файл ex4.

Поэтому без разницы где вы объявите массив или другие переменные. Все так же как и в основном коде.

 
ANDREY #:

Спасибо  Забыть про  .mqh я почему то не хочу. Наверное потому что я слегка дотошный человек и раз начал изучать тему  .mqh , то хочу изучить ее до определенного конца и по возможности со всех доступных моему пониманию сторон. Поэтому я хочу получить ответ свой вопрос о том можно ли объявить массив в в файле  .mqh , а заполнить этот массив( то есть , инициализировать)   в Советнике(из Советника) на mql4. Из моего желания получить ответ на этот вопрос вовсе не вытекает того что я буду пользоваться файлом  .mqh. Просто я должен знать на будущее ответ на свой вопрос. 

ВАШИ СЛОВА, которые вероятно по Вашему мнению являются ответом на мой вопрос   " Всё что пишется в файле .mqh может быть изменено ИСКЛЮЧИТЕЛЬНО ВРУЧНУЮ С КЛАВИАТУРЫ." Я это уже давно понял. И поэтому задаю вопрос не об изменении значений массива который лежит в  в файле .mqh , а о заполнении (инициализации) массива который объявлен в файле  .mqh , а точнее о заполнении этого массива значениями из Советника на mql 4.

Если это возможно, то в дальнейшем я  УЖЕ не планирую изменять данные этого инициализированного массива в файле.mqh( как я пытался делать первоначально). Только инициализация и ничего больше. И свое желание использовать  один массив из файла  .mqh  в разных Советниках я уже  так же давно аннулировал после общения здесь на эту тему. 

Для меня ответ на этот вопрос содержит определенную интригу потому что пользователь Алексей Федотов и Алексей Степаненко   уверенно и однозначно утверждают что инициализировать объявленный в mqh массив из Советника на mql4  можно, а Вы почему то не даете прямого и однозначного ответа на этот вопрос, не смотря на то что я его формулировал неоднократно. К тому же Вы еще и критикуете какие то ответы  других участников моей беседы .

Возможно мы с вами не очень быстро понимаем друг друга по причине  нашей недостаточной внимательности , которая случается у нас иногда :):):)

Андрей, вот так выглядит файл .mqh

//+------------------------------------------------------------------+
//|                                               MovingAverages.mqh |
//|                   Copyright 2009-2013, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "2009, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
//+------------------------------------------------------------------+
//| Simple Moving Average                                            |
//+------------------------------------------------------------------+
double SimpleMA(const int position,const int period,const double &price[])
  {
//---
   double result=0.0;
//--- check position
   if(position>=period-1 && period>0)
     {
      //--- calculate value
      for(int i=0;i<period;i++) result+=price[position-i];
      result/=period;
     }
//---
   return(result);
  }
//+------------------------------------------------------------------+
//| Exponential Moving Average                                       |
//+------------------------------------------------------------------+
double ExponentialMA(const int position,const int period,const double prev_value,const double &price[])
  {
//---
   double result=0.0;
//--- calculate value
   if(period>0)
     {
      double pr=2.0/(period+1.0);
      result=price[position]*pr+prev_value*(1-pr);
     }
//---
   return(result);
  }
//+------------------------------------------------------------------+
//| Smoothed Moving Average                                          |
//+------------------------------------------------------------------+
double SmoothedMA(const int position,const int period,const double prev_value,const double &price[])
  {
//---
   double result=0.0;
//--- check position
   if(period>0)
     {
      if(position==period-1)
        {
         for(int i=0;i<period;i++) result+=price[position-i];
         result/=period;
        }
      if(position>=period)
         result=(prev_value*(period-1)+price[position])/period;
     }
//---
   return(result);
  }
//+------------------------------------------------------------------+
//| Linear Weighted Moving Average                                   |
//+------------------------------------------------------------------+
double LinearWeightedMA(const int position,const int period,const double &price[])
  {
//---
   double result=0.0,sum=0.0;
   int    i,wsum=0;
//--- calculate value
   if(position>=period-1 && period>0)
     {
      for(i=period;i>0;i--)
        {
         wsum+=i;
         sum+=price[position-i+1]*(period-i+1);
        }
      result=sum/wsum;
     }
//---
   return(result);
  }
//+------------------------------------------------------------------+
//| Simple moving average on price array                             |
//+------------------------------------------------------------------+
int SimpleMAOnBuffer(const int rates_total,const int prev_calculated,const int begin,
                     const int period,const double& price[],double& buffer[])
  {
   int i,limit;
//--- check for data
   if(period<=1 || rates_total-begin<period) return(0);
//--- save as_series flags
   bool as_series_price=ArrayGetAsSeries(price);
   bool as_series_buffer=ArrayGetAsSeries(buffer);
   if(as_series_price)  ArraySetAsSeries(price,false);
   if(as_series_buffer) ArraySetAsSeries(buffer,false);
//--- first calculation or number of bars was changed
   if(prev_calculated==0) // first calculation
     {
      limit=period+begin;
      //--- set empty value for first bars
      for(i=0;i<limit-1;i++) buffer[i]=0.0;
      //--- calculate first visible value
      double firstValue=0;
      for(i=begin;i<limit;i++)
         firstValue+=price[i];
      firstValue/=period;
      buffer[limit-1]=firstValue;
     }
   else limit=prev_calculated-1;
//--- main loop
   for(i=limit;i<rates_total;i++)
      buffer[i]=buffer[i-1]+(price[i]-price[i-period])/period;
//--- restore as_series flags
   if(as_series_price)  ArraySetAsSeries(price,true);
   if(as_series_buffer) ArraySetAsSeries(buffer,true);
//---
    return(rates_total);
  }
//+------------------------------------------------------------------+
//|  Exponential moving average on price array                       |
//+------------------------------------------------------------------+
int ExponentialMAOnBuffer(const int rates_total,const int prev_calculated,const int begin,
                          const int period,const double& price[],double& buffer[])
  {
   int    i,limit;
//--- check for data
   if(period<=1 || rates_total-begin<period) return(0);
   double dSmoothFactor=2.0/(1.0+period);
//--- save as_series flags
   bool as_series_price=ArrayGetAsSeries(price);
   bool as_series_buffer=ArrayGetAsSeries(buffer);
   if(as_series_price)  ArraySetAsSeries(price,false);
   if(as_series_buffer) ArraySetAsSeries(buffer,false);
//--- first calculation or number of bars was changed
   if(prev_calculated==0)
     {
      limit=period+begin;
      //--- set empty value for first bars
      for(i=0;i<begin;i++) buffer[i]=0.0;
      //--- calculate first visible value
      buffer[begin]=price[begin];
      for(i=begin+1;i<limit;i++)
         buffer[i]=price[i]*dSmoothFactor+buffer[i-1]*(1.0-dSmoothFactor);
     }
   else limit=prev_calculated-1;
//--- main loop
   for(i=limit;i<rates_total;i++)
      buffer[i]=price[i]*dSmoothFactor+buffer[i-1]*(1.0-dSmoothFactor);
//--- restore as_series flags
   if(as_series_price)  ArraySetAsSeries(price,true);
   if(as_series_buffer) ArraySetAsSeries(buffer,true);
//---
    return(rates_total);
  }
//+------------------------------------------------------------------+
//|  Linear weighted moving average on price array                   |
//+------------------------------------------------------------------+
int LinearWeightedMAOnBuffer(const int rates_total,const int prev_calculated,const int begin,
                             const int period,const double& price[],double& buffer[],int &weightsum)
  {
   int        i,limit;
   double     sum;
//--- check for data
   if(period<=1 || rates_total-begin<period) return(0);
//--- save as_series flags
   bool as_series_price=ArrayGetAsSeries(price);
   bool as_series_buffer=ArrayGetAsSeries(buffer);
   if(as_series_price)  ArraySetAsSeries(price,false);
   if(as_series_buffer) ArraySetAsSeries(buffer,false);
//--- first calculation or number of bars was changed
   if(prev_calculated==0)
     {
      weightsum=0;
      limit=period+begin;
      //--- set empty value for first bars
      for(i=0;i<limit;i++) buffer[i]=0.0;
      //--- calculate first visible value
      double firstValue=0;
      for(i=begin;i<limit;i++)
        {
         int k=i-begin+1;
         weightsum+=k;
         firstValue+=k*price[i];
        }
      firstValue/=(double)weightsum;
      buffer[limit-1]=firstValue;
     }
   else limit=prev_calculated-1;
//--- main loop
   for(i=limit;i<rates_total;i++)
     {
      sum=0;
      for(int j=0;j<period;j++) sum+=(period-j)*price[i-j];
      buffer[i]=sum/weightsum;
     }
//--- restore as_series flags
   if(as_series_price)  ArraySetAsSeries(price,true);
   if(as_series_buffer) ArraySetAsSeries(buffer,true);
//---
    return(rates_total);
  }
//+------------------------------------------------------------------+
//|  Smoothed moving average on price array                          |
//+------------------------------------------------------------------+
int SmoothedMAOnBuffer(const int rates_total,const int prev_calculated,const int begin,
                       const int period,const double& price[],double& buffer[])
  {
   int i,limit;
//--- check for data
   if(period<=1 || rates_total-begin<period) return(0);
//--- save as_series flags
   bool as_series_price=ArrayGetAsSeries(price);
   bool as_series_buffer=ArrayGetAsSeries(buffer);
   if(as_series_price)  ArraySetAsSeries(price,false);
   if(as_series_buffer) ArraySetAsSeries(buffer,false);
//--- first calculation or number of bars was changed
   if(prev_calculated==0)
     {
      limit=period+begin;
      //--- set empty value for first bars
      for(i=0;i<limit-1;i++) buffer[i]=0.0;
      //--- calculate first visible value
      double firstValue=0;
      for(i=begin;i<limit;i++)
         firstValue+=price[i];
      firstValue/=period;
      buffer[limit-1]=firstValue;
     }
   else limit=prev_calculated-1;
//--- main loop
   for(i=limit;i<rates_total;i++)
      buffer[i]=(buffer[i-1]*(period-1)+price[i])/period;
//--- restore as_series flags
   if(as_series_price)  ArraySetAsSeries(price,true);
   if(as_series_buffer) ArraySetAsSeries(buffer,true);
//---
    return(rates_total);
  }
//+------------------------------------------------------------------+

Находится он тут

И любая из этих функций может быть добавлена в советник при компиляции. Те функции к которым советник не обращается в советник включены не будут. Но ведь можно взять любую из этих функций и скопировать в код советника. Ведь ничего не изменится.

Точно так-же и с массивом. Его можно объявить в .mqh и можно объявить в коде советника. Ничего не изменится. Можно объявить динамическим, можно статическим. Можно заполнять в коде советника, можно написать функцию заполнения в .mqh или как вы показали где-то раньше уже заполненный массив.

Что осталось непонятным? Ведь я долго вообще не встревал. Вам говорили «можно» вы опять задавали вопрос. Опять «можно» опять вопрос. Вот я и подумал, что вопрос в другом.

На этом я опять ныряю в тину и молчу…

Файлы:
 
ANDREY #:

Спасибо  Забыть про  .mqh я почему то не хочу. Наверное потому что я слегка дотошный человек и раз начал изучать тему  .mqh , то хочу изучить ее до определенного конца и по возможности со всех доступных моему пониманию сторон. Поэтому я хочу получить ответ свой вопрос о том можно ли объявить массив в в файле  .mqh , а заполнить этот массив( то есть , инициализировать)   в Советнике(из Советника) на mql4. Из моего желания получить ответ на этот вопрос вовсе не вытекает того что я буду пользоваться файлом  .mqh. Просто я должен знать на будущее ответ на свой вопрос. 

ВАШИ СЛОВА, которые вероятно по Вашему мнению являются ответом на мой вопрос   " Всё что пишется в файле .mqh может быть изменено ИСКЛЮЧИТЕЛЬНО ВРУЧНУЮ С КЛАВИАТУРЫ." Я это уже давно понял. И поэтому задаю вопрос не об изменении значений массива который лежит в  в файле .mqh , а о заполнении (инициализации) массива который объявлен в файле  .mqh , а точнее о заполнении этого массива значениями из Советника на mql 4.

Если это возможно, то в дальнейшем я  УЖЕ не планирую изменять данные этого инициализированного массива в файле.mqh( как я пытался делать первоначально). Только инициализация и ничего больше. И свое желание использовать  один массив из файла  .mqh  в разных Советниках я уже  так же давно аннулировал после общения здесь на эту тему. 

Для меня ответ на этот вопрос содержит определенную интригу потому что пользователь Алексей Федотов и Алексей Степаненко   уверенно и однозначно утверждают что инициализировать объявленный в mqh массив из Советника на mql4  можно, а Вы почему то не даете прямого и однозначного ответа на этот вопрос, не смотря на то что я его формулировал неоднократно. К тому же Вы еще и критикуете какие то ответы  других участников моей беседы .

Возможно мы с вами не очень быстро понимаем друг друга по причине  нашей недостаточной внимательности , которая случается у нас иногда :):):)

"Чтобы правильно задать вопрос, надо знать 80% ответа."

Файл .mqh именно что "включается" в исходный текст программы, т.е., "становится его частью", поэтому абсолютно без разницы, где объявлять и где (после объявления) инициализировать массив.

И даже писать в файл .mqh тоже, в принципе, можно, но на вашем текущем уровне понимания лучше считать, что нет.

 
JRandomTrader #:

"Чтобы правильно задать вопрос, надо знать 80% ответа."

Файл .mqh именно что "включается" в исходный текст программы, т.е., "становится его частью", поэтому абсолютно без разницы, где объявлять и где (после объявления) инициализировать массив.

И даже писать в файл .mqh тоже, в принципе, можно, но на вашем текущем уровне понимания лучше считать, что нет.

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

 
JRandomTrader #:
И даже писать в файл .mqh тоже, в принципе, можно, но на вашем текущем уровне понимания лучше считать, что нет.

Именно это(писать в файл . mqh)   я и хотел понять. Как записать данные в массив (инициализировать его) в файл mqh из Советника на mql4.

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

Я у всех спрашиваю о том как инициализировать массив объявленный   в файле  mqh, а мне вместо ответа на этот вопрос все говорят что это не имеет смысла и что это нецелесообразно . И я с этим согласен.  Код массива  один и тот же , просто может находится в разных местах. В теле и в файле.  Но вопрос то я задавал не о целесообразности инициализации массива в файле  mqh, а о том как проинициализировать , или как вы сказали писать данные в массив который объявлен в  mqh.

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

Если бы мне прислали код с комментариями  при помощи которого можно инициализировать массив объявленный во включаемом файле из Советника на mql4, я был бы очень признателен , и на этом успокоился бы...

 
ANDREY #:

Если в теле советника , то он сразу обратится к этому массиву. Если в файле mqh, то Советник сначала возьмет массив из файла  mqh  и после этого вставит массив  в свой код , а потом так же  обратится к этому же массиву.

Вот в этом ваше ключевое заблуждение, как мне видится.

Файл .mqh - это не "советник возьмёт из файла", а "компилятор возьмёт этот файл и вставит в тело советника".

Писать в файл .mqh, в принципе, возможно, но, вероятно, это совсем не то, чего вы хотите добиться. Любые изменения в этом файле повлияют только на последующие компиляции советников, использующих этот файл.
 
JRandomTrader #:

Вот в этом ваше ключевое заблуждение, как мне видится.

Файл .mqh - это не "советник возьмёт из файла", а "компилятор возьмёт этот файл и вставит в тело советника".

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

 
ANDREY #:

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

Результат компиляции будет одинаковым, в обоих случаях в результате инициализированный массив, вместе с телом советника, будет лежать в файле .ex4