Подскажите про массивы - страница 5

 
Rafil Nurmukhametov:

размер массивов Offers и Bids укажите


Они указаны

MqlBookInfo Offers[20],Bids[20];               // Информация по стакану
 
Konstantin Seredkin:

Они указаны


попробовал ваш код на SBRF-3.18, у меня ошибки не возникает. 

 
Rafil Nurmukhametov:

попробовал ваш код на SBRF-3.18, у меня ошибки не возникает. 


Сразу их нет, обычно это происходит на вечерней сессии под конец, может там стакан разряжен или еще чего, но к примеру если ставишь робота на 5 инструментов, с трех он как минимум слетает с ошибкой

2017.12.23 03:51:20.155 SAURON_SETKA v1.1 (SBRF-3.18,M1) array out of range in 'iStakan_Setka.mqh' (252,13)

где 252 строка 

Offers[i]=glassArray[NBuysStart-1-i];


Уже всю голову сломал чего ему не нравиться, ведь вроде все есть, работает нормально... может сам МТ5 как всегда глючит


 
Konstantin Seredkin:

Сразу их нет, обычно это происходит на вечерней сессии под конец, может там стакан разряжен или еще чего, но к примеру если ставишь робота на 5 инструментов, с трех он как минимум слетает с ошибкой

2017.12.23 03:51:20.155 SAURON_SETKA v1.1 (SBRF-3.18,M1) array out of range in 'iStakan_Setka.mqh' (252,13)

где 252 строка 

Offers[i]=glassArray[NBuysStart-1-i];


Уже всю голову сломал чего ему не нравиться, ведь вроде все есть, работает нормально... может сам МТ5 как всегда глючит


Голову сломал вот и глючит. Разве не может быть в стакане больше 20 заявок одного направления?

Konstantin Seredkin:

Они указаны

MqlBookInfo Offers[20],Bids[20];               // Информация по стакану

Это последнее что надо проверить. А первое, это надо полностью переписать функцию.

bool CreateTwoArrays(MqlBookInfo &glassArray[])
{
   int size=ArraySize(glassArray);
   int NBuysStart=0;
   
   for(int i=0;i<size;i++)                      //определим покупки и продажи
    {
     if (glassArray[i].type == BOOK_TYPE_BUY && i>0)
      Offers[i]=glassArray[i];
     else 
       Bids[i]=glassArray[i];
    }
}

Это не готовый вариант функции, а всего-лишь направление мысли. И какой такой глубокий смысл в && i>0

 
Alexey Viktorov:

Голову сломал вот и глючит. Разве не может быть в стакане больше 20 заявок одного направления?

Это последнее что надо проверить. А первое, это надо полностью переписать функцию.

Это не готовый вариант функции, а всего-лишь направление мысли. И какой такой глубокий смысл в && i>0


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

Ну и как бы и потребовалась квалифицированная помощь от добрых колег

 
Konstantin Seredkin:

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

Ну и как бы и потребовалась квалифицированная помощь от добрых колег

Можешь не верить, я вообще, и даже сейчас, не работал со стаканом. Простая логика. Если есть выход за пределы массива, значит что-то не так с индикацией. Либо больше положенного, либо отрицательный индекс. Соответственно появился вопрос: Разве не может быть в стакане больше 20 заявок одного направления?

 
Alexey Viktorov:

Можешь не верить, я вообще, и даже сейчас, не работал со стаканом. Простая логика. Если есть выход за пределы массива, значит что-то не так с индикацией. Либо больше положенного, либо отрицательный индекс. Соответственно появился вопрос: Разве не может быть в стакане больше 20 заявок одного направления?


Может если через плаза 2 подключится к бирже, но мт5 вроде не обладает таким подключением, дело в другом, даже нет смысла анализировать 20 цен в стакане, если в логике робота нужно найти лишь заданную пользователем плотность, там и 10 цен достаточно, попробую по эксперементировать со значением массива.

 
Konstantin Seredkin:

Может если через плаза 2 подключится к бирже, но мт5 вроде не обладает таким подключением, дело в другом, даже нет смысла анализировать 20 цен в стакане, если в логике робота нужно найти лишь заданную пользователем плотность, там и 10 цен достаточно, попробую по эксперементировать со значением массива.

Не нужно экспериментировать, а нужно массив сделать динамическим.
 
Artyom Trishkin:
Не нужно экспериментировать, а нужно массив сделать динамическим.

Да вы правы это первое что хотел проверить

 
Konstantin Seredkin:

Да вы правы это первое что хотел проверить

Хотеть - мало, и долго, а вот сделать - достаточно, и быстро.