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

 
Valeriy Yastremskiy #:

В статическом массиве задается размер константный, его не изменить, в динамическом его можно менять, но размер массива задается! т.е. размер массива известен и индексы элементов от 0 до конца. <=  выход за пределы как раз потому что индексы элементов с нуля, и индекс последнего элемента меньше на единицу размера массива.

Все в Ваших руках))))

Это как понять? Вы считаете чтобы скопировать какое-то количество элементов из одного массива в другой, какой-то temp[], то перед копированием надо задать размер массива ArrayResize(temp, new_size); ???

 
Dmitry Ivanushko #:

Да, можно и так. Плохо соображаю, поэтому спрашиваю совета. 

А по хорошему вам и временный массив не нужен.

int  ArrayMaximum( 
   const void&   array[],             // массив для поиска 
   int           start=0,             // с какого индекса начинаем поиск 
   int           count=WHOLE_ARRAY    // количество проверяемых 
   );

Вот этот код

  double open[];
  int copy = CopyOpen(_Symbol, PERIOD_CURRENT, 0, 100, open);
  int arrMaximum = ArrayMaximum(open, 85, 20);

ищет максимум среди 15ти оставшихся элементов, несмотря на то, что задано искать среди 20ти элементов.

Таким образом вам лучше пользовать цикл while() и не заморачиваться с количеством оставшихся элементов массива.

 
Alexey Viktorov #:

Это как понять? Вы считаете чтобы скопировать какое-то количество элементов из одного массива в другой, какой-то temp[], то перед копированием надо задать размер массива ArrayResize(temp, new_size); ???

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

 
Valeriy Yastremskiy #:

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

Контролировать можно, но не всегда нужно…

 
Alexey Viktorov #:

Контролировать можно, но не всегда нужно…

Хе, тогда начинать после выхода за пределы)))
 
Valeriy Yastremskiy #:
Хе, тогда начинать после выхода за пределы)))

Вот смотри… 

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

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

Alexey Viktorov, 2023.06.27 21:19

А в чём проблема? Объявите массив temp[] и в него копируйте по 30 элементов и в нём ищите индекс минимального\максимального значения. А если в конце будет меньше 30ти, то скопируется сколько осталось. И в этом случае, я лучше-бы использовал цикл while()


Зачем мне контролировать размер массива temp[]?

Размер массива откуда копируем в temp[] контролировать надо, не спорю… А зачем мне размер массива в котором ищем максимум\минимум?

 
Напомните, пожалуйста, если есть вызов веб сокет соединения из DLL, вызываемого экспертом, нужно ли разрешать адрес хоста в настройках терминала?
 
leonerd #:
Напомните, пожалуйста, если есть вызов веб сокет соединения из DLL, вызываемого экспертом, нужно ли разрешать адрес хоста в настройках терминала?

Да, терминал только по разрешенным явно тыркается.

 
Valeriy Yastremskiy #:

Да, терминал только по разрешенным явно тыркается.

дак тут не терминал полезет, а DLL

 
leonerd #:

дак тут не терминал полезет, а DLL

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