Здравствуйте уважаемые .
как в mql5 работать с массивами ?
есть динамический безразмерный массив
doublw data_p[];
в секции onTick
как заполнить массив data_p[] ?
data_p[] = BarData[0].close // вот таким содержимым
как происходит итерационная закладка данных в массив при каждом событии BarData[0].close
не понимаю если массив то нумерация его элементов должна меняться, соответственно от data_p[0] и до какого то значения data_p[n]
а как быть в данном случае ? как положить значения в ячейку массива по номеру и как этот номер в mql5 меняется ? в примерах смотрел но не понял как это все происходит.
растолкуйте пожалуйста с примером если можно
там надо организовывать смещение на 1 яч-ку при заполнении.
Вот еще тут https://www.mql5.com/ru/forum/145455/page263#comment_3665648
Вот для общего случая гляньте с этой страницы:
- 2022.04.26
- www.mql5.com
Здравствуйте уважаемые .
как в mql5 работать с массивами ?
есть динамический безразмерный массив
doublw data_p[];
в секции onTick
как заполнить массив data_p[] ?
data_p[] = BarData[0].close // вот таким содержимым
как происходит итерационная закладка данных в массив при каждом событии BarData[0].close
не понимаю если массив то нумерация его элементов должна меняться, соответственно от data_p[0] и до какого то значения data_p[n]
а как быть в данном случае ? как положить значения в ячейку массива по номеру и как этот номер в mql5 меняется ? в примерах смотрел но не понял как это все происходит.
растолкуйте пожалуйста с примером если можно
Динамический массив после объявления имеет размер равный нулю. Для того, чтобы в массив можно было что либо положить надо увеличить размер массива на нужное количество элементов, как минимум на 1 функцией ArrayResize()
- www.mql5.com
там надо организовывать смещение на 1 яч-ку при заполнении.
Вот еще тут https://www.mql5.com/ru/forum/145455/page263#comment_3665648
Вот для общего случая гляньте с этой страницы:
спасибо .
попробую должнож получится.
но идейно все рано не понятно.
если событие в разделе onTick случилось . это событие обрабатывается автоматом mql5 . но как по срабатыванию события увеличить счетчик ячеек массива i=i+1 как это соединить между собой .
спасибо .
попробую должнож получится.
но идейно все рано не понятно.
если событие в разделе onTick случилось . это событие обрабатывается автоматом mql5 . но как по срабатыванию события увеличить счетчик ячеек массива i=i+1 как это соединить между собой .
Если нужно увеличить размерность массива, то:
int nTotal = ArraySize(array); if (ArrayResize(array, nTotal + 1) != nTotal + 1) { // Не удалось увеличить размерность массива }
не совсем я ходел увеличить длину массива
------------------------------------------------------------
double data_p[]; // объявлен безразмерный массив в длину
не совсем я ходел увеличить длину массива
------------------------------------------------------------
double data_p[]; // объявлен безразмерный массив в длину
Я так понимаю, вы неплохо знаете какой-то яп и ориентируетесь на эти знания не понимая того, что в MQL5
double data_p[]; // объявлен массив нулевой длинны
Уточните, что здесь написано:
не совсем, я хотел увеличить длину массива
или
я не хотел увеличить длину массива
Для первого случая код приведен. Для второго случая непонятно, почему не хотите увеличивать размер массива, если именно это и требуется для поставленной задачи.
double data_p[]; // объявлен безразмерный массив в длину
Вот этот Latest_Close_Price и следует записать в массив. Для этого увеличиваем размер массива, а затем записываем в новую ячейку данные:
int nTotal = ArraySize(array); if (ArrayResize(array, nTotal + 1) != nTotal + 1) { // Не удалось увеличить размерность массива } else array[nTotal] = Latest_Close_Price;
всё просто - на каждом баре/тике из мкл получаем текущие данные в нужном кол-ве. Ресайзим наш массив под сделанную выборку. Полностью перезаписываем наш массив новыми данными. Не забываем развернуть массив ArraySetAsSeries. И снова у нас элемент 0=текущий, 1-предыдущий и т.д..
Для более серьезной работы с массивами (передача как параметр) нужно осваивать структуры...
Уточните, что здесь написано:
или
Для первого случая код приведен. Для второго случая непонятно, почему не хотите увеличивать размер массива, если именно это и требуется для поставленной задачи.
Вот этот Latest_Close_Price и следует записать в массив. Для этого увеличиваем размер массива, а затем записываем в новую ячейку данные:
именно так и есть . я не понимаю и не могу понять читая мануал по MQL5 , поэтому в форум и написал.
для простоты понимания.
объявлен массив конечной длины в сто ячеек
double data_p[99]; // глобальный
for(x=0;x<=99; x++)
{
Latest_Close_Price = BarData[0].close; // вынули последнюю цену
data_p[х] = Latest_Close_Price
}
вопрос (?)
запустился советник предположим
начал отрабатыватся цикл
и на первой же свечке он забивает весь массив одинаковыми данными.
а если поставить sleep то будет пропущено куча нужных данных.
вот в чем вопрос как сопряч это все межу собой чтобы массив корректно заполнялся по событию сождания свечки
есть
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Здравствуйте уважаемые .
как в mql5 работать с массивами ?
есть динамический безразмерный массив
doublw data_p[];
в секции onTick
как заполнить массив data_p[] ?
data_p[] = BarData[0].close // вот таким содержимым
как происходит итерационная закладка данных в массив при каждом событии BarData[0].close
не понимаю если массив то нумерация его элементов должна меняться, соответственно от data_p[0] и до какого то значения data_p[n]
а как быть в данном случае ? как положить значения в ячейку массива по номеру и как этот номер в mql5 меняется ? в примерах смотрел но не понял как это все происходит.
растолкуйте пожалуйста с примером если можно