Скачать MetaTrader 5

Запись bid в массив. Помогите пожалуйста!

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Веди личную переписку в профиле. Это безопасно!
Anna Cvarc
96
Anna Cvarc 2016.10.25 18:37 

Здравствуйте. Помогите пожалуйста!

Задача: Записать Bid в статический массив, код для mt4.

Алгоритм: По приходу нового бида записать в M[0] -бид, соответственно  M[1] - значение бида на прошлом тике.

Вот что у меня получилось. Правильно ли произведена запись в массив?

  

if(ArraySize(mas)==0)//массив с нулевого размера
     {
      ArrayResize(mas,9,0);//изменяем размер массива(9 элементов)
     }
   if(ArraySize(mas)==9)//массив не нулевой
     {
      for(int i=8;i>=0;i--)//циклом пройдемся от максимального до минимального элемента
        {
         if(i>=1)
           {
            mas[i]=mas[i-1];//присваиваем i-элементу предыдущее значение
           }
         if(i==0)//если первый элемент
           {
            mas[0]=Bid;//присваиваем нулевому элементу bid
           }
        }
     }
Файлы:
Nikolay Khrushchev
19185
Nikolay Khrushchev 2016.10.25 18:51  
да правильно.
однако проще сразу обьявить массив определенной размерности. 
double mas[9];
for(int i=8;i>0;i--) mas[i]=mas[i-1];
mas[0]=Bid;
Anna Cvarc
96
Anna Cvarc 2016.10.25 22:05  
Спасибо, за ответ. Подскажите насколько этот код надежен, не будет ли пропускать тики?
Alexey Volchanskiy
16683
Alexey Volchanskiy 2016.10.25 23:46  
Anna Cvarc:
Спасибо, за ответ. Подскажите насколько этот код надежен, не будет ли пропускать тики?
Если будете запускать из OnTick, тики пропускаться не будут. Если у вас в OnTick еще какой-то код лежит, особенно, если со Sleep(), вызывайте RefreshRates() перед запросом котировок.

RefreshRates(); // обновляем данные по Bid
mas[0]=Bid

Если будет что-то непонятно, можете найти меня в скайпе, он есть в профиле. Помочь девушкам в программировании - святое дело ))
Vladimir Zubov
4334
Vladimir Zubov 2016.10.26 00:04  
Alexey Volchanskiy:
Если будете запускать из OnTick, тики пропускаться не будут. Если у вас в OnTick еще какой-то код лежит, особенно, если со Sleep(), вызывайте RefreshRates() перед запросом котировок.

RefreshRates(); // обновляем данные по Bid
mas[0]=Bid

Если будет что-то непонятно, можете найти меня в скайпе, он есть в профиле. Помочь девушкам в программировании - святое дело ))
 OnTick при первом запросе ( исполнении) выполнит всё что у вас в коде и функциях, если будут тики при исполнении он пропустит и только как всё закончено вернется к событию  OnTick :)
Maxim Kuznetsov
9826
Maxim Kuznetsov 2016.10.26 00:05  
Пишите данные в циклический буфер и не мучайтесь с копированием по массивам
Anna Cvarc
96
Anna Cvarc 2016.10.26 11:59  
Maxim Kuznetsov:
Пишите данные в циклический буфер и не мучайтесь с копированием по массивам
А как это сделать? Опишите в общих чертах.
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий