CopyBuffer - меняется направление считываемого массива - страница 2

 

Однако, если массивы для получаемых значений объявить как

//--- MACD
double MACDWork[];
//--- MA
double MAWork[];


И сделать в блоке инициализации ArrayResize и ArraySetAsSeries

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {   
     ArrayResize(MACDWork,3);
     ArraySetAsSeries(MACDWork,true);
     ArrayResize(MAWork,3);
     ArraySetAsSeries(MAWork,true);   
   }

то все становится нормально. И данные последней свечи оказываются в [0]


 
knodit #:

Исходный код и скрины с дебагера

К вопросу, что у настоящих кодеров "все всегда хорошо".

Код


Скрины

MA


MACD


Как несложно убедиться, после CopyBuffer в [0] совсем не значение с текущей свечи.

А вы читали документацию? Ведь там есть картинка


Что может быть непонятным¿¿¿

И  ArrayResize совсем бесполезное применение. 
 
Alexey Viktorov #:

А вы читали документацию? Ведь там есть картинка


Что может быть непонятным¿¿¿

И  ArrayResize совсем бесполезное применение. 

Про ArrayResize - не уверен. При добавлении элемента начинает ругаться, что превышен размер массива. С ArrayResize - не ругается.

Это не PHP, где можно даже ногой код писать и он будет работать.


Документацию читал. И что Вас смущает в ней?

А. Понял. Был не прав. Но это не отменяет того факта, что в какой-то момент у меня без серилизации MA и MACD возвращали массивы разной ориентации.

 
knodit #:

Про ArrayResize - не уверен. При добавлении элемента начинает ругаться, что превышен размер массива. С ArrayResize - не ругается.

Это не PHP, где можно даже ногой код писать и он будет работать.


Документацию читал. И что Вас смущает в ней?

А. Понял. Был не прав. Но это не отменяет того факта, что в какой-то момент у меня без серилизации MA и MACD возвращали массивы разной ориентации.

Где в коде есть добавление элемента? Или где-то вы говорили об этом? Я вижу только копирование буфера в массив, а в этом случае массив автоматом получает нужный размер.

Ни в какой момент никакая ориентация не меняется. лгбт сюда не добрались)))) Постарайтесь вычистить код от всех  ArraySetAsSeries и будет вам счастье.