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

 
 кто откликнулся большое спасибо!!!!
 

Подскажите по ArraySetAsSeries пожалста.

если:

   int arr[];
   ArrayResize(arr, 3);
   arr[0] = 1; arr[1] = 2; arr[2] = 3; 
   ArrayResize(arr, 4);
   Print("arr: ", arr[0], "  ", arr[1], "  ", arr[2], "  ", arr[3]);

вывод: arr: 1  2  3  0  

если:

   int arr[];
   ArrayResize(arr, 3);
   arr[0] = 1; arr[1] = 2; arr[2] = 3; 
   ArrayResize(arr, 4);
   ArraySetAsSeries(arr, true);
   Print("arr: ", arr[0], "  ", arr[1], "  ", arr[2], "  ", arr[3]);

то:  arr: 0 3 2 1

но если:

   int arr[];
   ArrayResize(arr, 3);
   arr[0] = 1; arr[1] = 2; arr[2] = 3; 
   ArraySetAsSeries(arr, true);
   ArrayResize(arr, 4);
   Print("arr: ", arr[0], "  ", arr[1], "  ", arr[2], "  ", arr[3]);

то:  arr: 3 2 1 0
 

Тут ArraySetAsSeries влияет на то с какой стороны добавятся ячейки массива. Тут получается что ArraySetAsSeries или сам массив переписывает в обратную сторону или влияет на то с какой стороны будут добавлены ячейки.

Так как это под капотом на самом деле?)))

 
Andrei Sokolov #:

Так как это под капотом на самом деле?)))

"Физически новые данные всегда дописываются в конец массива"

Документация по MQL5: Доступ к таймсериям и индикаторам
Документация по MQL5: Доступ к таймсериям и индикаторам
  • www.mql5.com
Функции для работы с таймсериями и индикаторами. Таймсерия отличается от обычного массива тем, что индексация элементов таймсерии производится от...
 
Aleksei Stepanenko #:

"Физически новые данные всегда дописываются в конец массива"

Получается ArraySetAsSeries массив переписывает)) Так что-ли?

 
Andrei Sokolov #:

Получается ArraySetAsSeries массив переписывает)) Так что-ли?

А как по другому, он же меняет номера элементов массива. Это уже другой массив.
 
Valeriy Yastremskiy #:
А как по другому, он же меняет номера элементов массива. Это уже другой массив.
Меняется направление индексации без физического преобразования массива
 
Andrei Sokolov #:

Подскажите по ArraySetAsSeries пожалста.

если:

вывод: arr: 1  2  3  0  

если:

то:  arr: 0 3 2 1

но если:

то:  arr: 3 2 1 0
 

Тут ArraySetAsSeries влияет на то с какой стороны добавятся ячейки массива. Тут получается что ArraySetAsSeries или сам массив переписывает в обратную сторону или влияет на то с какой стороны будут добавлены ячейки.

Так как это под капотом на самом деле?)))

Вам возможно нужен ArraySort()

 
Artyom Trishkin #:
Меняется направление индексации без физического преобразования массива

А как тогда получается что новые ячейки с другой стороны, если они всегда добавляются в конец массива?

 
Andrei Sokolov #:

А как тогда получается что новые ячейки с другой стороны, если они всегда добавляются в конец массива?

Вы сменили направление массива после добавления новой ячейки
 
Tretyakov Rostyslav #:
Вы сменили направление массива после добавления новой ячейки

Я про последний случай из примера, там до добавления.