[Архив!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 2. - страница 131

 
Vinin:

Продолжение темы

Предыдущая здесь https://www.mql5.com/ru/forum/111497

В тестере МТ4 в графах результаты оптимизации и график оптимизации ничего не отображается,просто пусто. Почему?Помогите!!!
 
Sergey_Rogozin:

Пытаюсь заполнить одномерный массив ValueArr[].

Не уверен в правильности.

На каждом тике функция GetValue() выдает значение int. Как заполнить ValueArr[] ?

Правильна ли моя попытка?

У вас размер массива должен увеличиваться на один на каждом тике? Тогда его размеры будут ограничены доступной памятью компьютера.

На каждом тике увеличивайте размер массива ValueArr[] ф-цией ArrayResize() и дописывайте новые данные в массив. Опять-таки - куда их дописывать? В начало или в конец???

Если в начало, то необходимо смещать ранее записанные уже данные, иначе они будут удалены вновь записываемыми.

Если в конец, то:

В ините задайте размер массива = нулю, а в старте увеличивайте его на 1 (size++), после чего изменяйте размер массива ( ArrayResize(ValueArr, size);) и вписывайте в ячейку массива ValueArr[], индексируемую size-1 (ValueArr[size-1]) данные, полученные ф-цией GetValue(); (ValueArr[size-1]=GetValue();)

 
artmedia70:

У вас размер массива должен увеличиваться на один на каждом тике? Тогда его размеры будут ограничены доступной памятью компьютера.

На каждом тике увеличивайте размер массива ValueArr[] ф-цией ArrayResize() и дописывайте новые данные в массив. Опять-таки - куда их дописывать? В начало или в конец???

Если в начало, то необходимо смещать ранее записанные уже данные, иначе они будут удалены вновь записываемыми.

В ините задайте размер массива = нулю, а в старте увеличивайте его на 1 (size++), после чего изменяйте размер массива ArrayResize(ValueArr, size); и вписывайте в ячейку массива ValueArr[], индексируемую size-1 (ValueArr[size-1]) данные, полученные ф-цией GetValue();

Да, записываться данные от GetValue() будут на каждом тике в массив ValueArr[].

Hазмер массива увеличивается на каждом тике,хотя может быть и сразу определен, скажем, [10000].


Элементы массива располагаются в порядке поступления, т.е. первый записанный - первый в "общей очереди",

второй элемент - второй в очереди.


Если я правильно понял, то выглядит это так:


 int size=0;
 int ValueArr[size];
 
//-----------------

int start()
 {
   size++;
   ArrayResize(ValueArr, size);
   ValueArr[size-1] = GetValue();
   
 return();
 }

//-----------------

int GetValue()
 {
 .......
 return(Val);
 }

Надеюсь, я правильно Вас понял.

 
Sergey_Rogozin:

Элементы массива располагаются в порядке поступления, т.е. первый записанный - первый в "общей очереди",

почему б не испльзовать массив-таймсерию
 
eddy:
почему б не испльзовать массив-таймсерию
Тайм-серия? Это как-то может помочь в записи чего-либо вроде тиковой истории?
 
Sergey_Rogozin:

Пытаюсь заполнить одномерный массив ValueArr[].

Не уверен в правильности.

На каждом тике функция GetValue() выдает значение int. Как заполнить ValueArr[] ?

Правильна ли моя попытка?

Так
 int ValueArr[size]; 

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

Правильно будет так

int ValueArr[]; 

int init()
{
   ArrayResize(ValueArr,size);
}
 
тиковой - нет
 

Подскажите пожалуйста! Есть ли в MT4 функция которая бы для открытия новой сделки учитывала результат предыдущей? Если да то как правильно её прописать?

 
sto_mat:

Подскажите пожалуйста! Есть ли в MT4 функция которая бы для открытия новой сделки учитывала результат предыдущей? Если да то как правильно её прописать?


такой встроенной ф-ции нет, нужно писать самостоятельно, пример я показывал здесь:https://www.mql5.com/ru/forum/131277/page113
 
alsu:
Так

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

Правильно будет так


Тогда, наверное, так:

 int size, ValueArr[]; 
//-----------------
 int init()
 {
   ArrayResize(ValueArr,size);
 }
//-----------------

int start()
 {
   ValueArr[size-1] = GetValue();
 return();
 }

//-----------------

int GetValue()
 {
 .......
 return(Val);
 }

Это правильно?

Причина обращения: