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

 
sss20192:

В окне данных у индикатора другие данные. Советник прикрепляю к графику H1, а копирует данные он с таймфреймов M5 M15 и H1.

 


int  CopyBuffer(
   int       indicator_handle,     // handle индикатора
   int       buffer_num,           // номер буфера индикатора
   int       start_pos,            // откуда начнем 
   int       count,                // сколько копируем
   double    buffer[]              // массив, куда будут скопированы данные
   );
Буфферы (нули у вас) и массивы куда копируем все одинаковые, начинаете с 1 элемента, копируете 1 элемент, возможно имеет значение и направление массива.

 
zfs:
Буфферы (нули у вас) и массивы куда копируем все одинаковые, начинаете с 1 элемента, копируете 1 элемент, возможно имеет значение и направление массива.

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

Пробовал ставить ArraySetAsSeries true и false. Все равно иногда в журнале появляются странные данные типа -4.53e-32 

 

Господа, подскажите как реализовать?

Есть массив, в него записывается значение, если в нем присутствует аналогичное значение то бряк.

 
sss20192 Все равно иногда в журнале появляются странные данные типа -4.53e-32 
Если по-хорошему, то в коде надо вставить проверки и на успешность создания хендлов, и на успешность работы функции CopyBuffer(). А то мы пока что даже не знаем, является ли это мусорное значение результатом успешной работы функции CopyBuffer(), или же функция не сработала "как надо".
 
Top2n: Есть массив, в него записывается значение, если в нем присутствует аналогичное значение то бряк.
Надо устроить перебор элементов массива  с проверкой на соответствие нужному значению. Если перебор не выявит соответствий - записывать значение в массив.
 
Yedelkin:
Надо устроить перебор элементов массива  с проверкой на соответствие нужному значению. Если перебор не выявит соответствий - записывать значение в массив.
А как сравнить два индекса в одном массиве?
 
Top2n:
А как сравнить два индекса в одном массиве?

Не хотите внимательно прочитать статью ? >> Основы программирования на MQL5 - Массивы

Там есть все подробности на все случаи, которые касаются массивов. Вам точно должно хватить. ))

 
tol64:

Не хотите внимательно прочитать статью ? >> Основы программирования на MQL5 - Массивы

Там есть все подробности на все случаи, которые касаются массивов. Вам точно должно хватить. ))

Всем спасибо, за помощь!) Я с вами не прощаюсь)))
 
Yedelkin:
Если по-хорошему, то в коде надо вставить проверки и на успешность создания хендлов, и на успешность работы функции CopyBuffer(). А то мы пока что даже не знаем, является ли это мусорное значение результатом успешной работы функции CopyBuffer(), или же функция не сработала "как надо".

Проверил. Хэндлы создаются нормально, индексы у них 10, 11, 12. А функция CopyBuffer выдает ошибку ERR_INDICATOR_DATA_NOT_FOUND. Почему может происходить такая ошибка, выбранные пары есть в окне обзор рынка, открыты графики этих валютных пар.

Более того, создаю переменную котрая показывает результат выполнения CopyBuffer, 

int aaa = CopyBuffer..., она показывает значение 1, якобы скопировалось одно значение, как и задано в функции.


При копировании буфера МА появляется эта же ошибка, но значение в массив записывается правильное.

Покажите пожалуйста пример правильного копирования буффера
 

 
sss20192: Проверил. Хэндлы создаются нормально, индексы у них 10, 11, 12. А функция CopyBuffer выдает ошибку ERR_INDICATOR_DATA_NOT_FOUND. Почему может происходить такая ошибка, выбранные пары есть в окне обзор рынка, открыты графики этих валютных пар.

Более того, создаю переменную котрая показывает результат выполнения CopyBuffer, 

int aaa = CopyBuffer..., она показывает значение 1, якобы скопировалось одно значение, как и задано в функции.

При копировании буфера МА появляется эта же ошибка, но значение в массив записывается правильное.

Покажите пожалуйста пример правильного копирования буффера

 Да пример копирования буфера есть прямо в описании функции CopyBuffer(). Обратите внимание на строчки

//--- check if all data calculated
    if(BarsCalculated(ma_handle)<rates_total) 

//--- try to copy
    if(CopyBuffer(ma_handle,0,0,to_copy,MABuffer)<=0) return(0);
 
Причина обращения: