Вопросы от начинающих MQL4 MT4 MetaTrader 4 - страница 22

 
A1exPit:
Я имел в виду что при передаче данных в массив он будет сам последовательно заполняться т.е. array1[] = x; в какую ячейку запишется значение x если номер ячейки прямо не указан?

Нет. Если нужно заполнить все ячейки одим и тем же значением , используйте ArrayInitialize().

Если нужно записать разные значения, то в цикле последовательно. Если нужно в определённую ячейку записать, то указывайте адрес ячейки.

 
Vitalie Postolache:

Нет. Если нужно заполнить все ячейки одим и тем же значением , используйте ArrayInitialize().

Если нужно записать разные значения, то в цикле последовательно. Если нужно в определённую ячейку записать, то указывайте адрес ячейки.

Спасибо,

Ещё вот такой вопрос: через ArrayCopy я смогу создать новый массив размером равным количеству заполненных ячеек предыдущего? Или надо сначала создать второй массив и только потом копировать?

int  ArrayCopy(
   void&        dst_array[],         // куда копируем
   const void&  src_array[],         // откуда копируем
   int          dst_start=0,         // с какого индекса пишем в приемник
   int          src_start=0,         // с какого индекса копируем из источника
   int          count=WHOLE_ARRAY    // сколько элементов
   );
 
A1exPit:

Спасибо,

Ещё вот такой вопрос: через ArrayCopy я смогу создать новый массив размером равным количеству заполненных ячеек предыдущего? Или надо сначала создать второй массив и только потом копировать?

int  ArrayCopy(
   void&        dst_array[],         // куда копируем
   const void&  src_array[],         // откуда копируем
   int          dst_start=0,         // с какого индекса пишем в приемник
   int          src_start=0,         // с какого индекса копируем из источника
   int          count=WHOLE_ARRAY    // сколько элементов
   );
Сначала создать, естественно.
 
Vitalie Postolache:
Сначала создать, естественно.
Спасибо, ещё раз.
 
Spread = MarketInfo(Symbol(),MODE_SPREAD);
if ( Spread >= 0 ) ExtSpread [x] = Spread;
if ( TimeCurrent() - iTime( NULL, 0, 0) >= 60 ){
int Spread2[x];
ArrayCopy( Spread2[],ExtSpread[],0,0, WHOLE_ARRAY);}
x=x+1;
if (x > 1000) x = 0;

Вот примерно так, я записываю значение Spread в массив ExtSpread[] и по завершении минутного бара перекидываю в другой массив - который по идее должен дожить до следующего бара.

Размер ExtSpread[1000]

Так, а такой вопрос нумерация в массиве идёт с нуля и тогда при размере 1000 его последняя ячейка будет 999 ?

Тогда правильно будет : x++ и if ( x > 999 ) x=0;

 
A1exPit:
Spread = MarketInfo(Symbol(),MODE_SPREAD);
if ( Spread >= 0 ) ExtSpread [x] = Spread;
if ( TimeCurrent() - iTime( NULL, 0, 0) >= 60 ){
int Spread2[x];
ArrayCopy( Spread2[],ExtSpread[],0,0, WHOLE_ARRAY);}
x=x+1;
if (x > 1000) x = 0;

Вот примерно так, я записываю значение Spread в массив ExtSpread[] и по завершении минутного бара перекидываю в другой массив - который по идее должен дожить до следующего бара.

Размер ExtSpread[1000]

Так, а такой вопрос нумерация в массиве идёт с нуля и тогда при размере 1000 его последняя ячейка будет 999 ?

Тогда правильно будет : x++ и if ( x > 999 ) x=0;

Spread = (int)MarketInfo(Symbol(),MODE_SPREAD);
if ( Spread >= 0 ) ExtSpread [x] = Spread;
if ( TimeCurrent() - iTime( NULL, 0, 0) >= 60 ){
int Spread2[];ArrayInitialize (Spread2,EMPTY_VALUE); ArrayResize( Spread2,x,0);
ArrayCopy( Spread2,ExtSpread,0,0, WHOLE_ARRAY);}
x=x+1;
if (x > 999) x = 0;
 
Добрый день! скажите пожалуйста, Скачал версию мт4 636 на андроид, но не видит список брокеров. Версия терминала уже не поддерживается?((  если поддерживается, то где скачать рабочую
 

Перенесено:

scomoroh, 2016.12.04 18:58

При компилировании вылезает ошибка. В чем дело? Помогите решить!
Файлы:
 
Vladimir Karputov:

Перенесено:

scomoroh, 2016.12.04 18:58

При компилировании вылезает ошибка. В чем дело? Помогите решить!

ArrayInitialize(max,0) => ArrayInitialize(arr,0);

for(int a=1;a<=pr;a++) => for(int a=1;a<pr;a++)     

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

 
Vitalie Postolache:

ArrayInitialize(max,0) => ArrayInitialize(arr,0);

for(int a=1;a<=pr;a++) => for(int a=1;a<pr;a++)     

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

Да, спасибо, все исправил, без ошибок. Тормозит, да, очень. Не подскажите в каком направлении двигаться, чтобы оптимизировать, или все переписывать придется?
Причина обращения: