Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 131

 
Vitaly Muzichenko:

Как-то не получается потрогать событием OnCalculate(...) , потрогать можно любую функцию, а вот эту не могу никак. Таймер - не вариант, индикатор нужен не так часто, и оптимально - по клику на графический элемент.

Как это реализовать? 

В индикаторе а обработчике события ловите клик по объекту, ну и далее пересчитываете буферы индикатора как при новом запуске. И не нужно дёргать даже OnCalculate
 
-Aleks-:

Расскажите, пожалуйста, как правильно искать в коде места наиболее ресурсоемкие, которые нагружают ЦПУ?

Запустите профилировку кода из редактора.
 
Artyom Trishkin:
Запустите профилировку кода из редактора.

Спасибо, а в оффлайн режиме как это сделать - в выходной день?

 
В чем может быть проблема?

Кусок кода:

for(i=1; i<=Bars; i++)
     {
     if(Open[i]-Close[i]==0)

При тестировании отладчик выдает ошибку на строку if. Array out of range.

Заранее спасибо.
 
Andy-D:
В чем может быть проблема?

Кусок кода:

for(i=1; i<=Bars; i++)
     {
     if(Open[i]-Close[i]==0)

При тестировании отладчик выдает ошибку на строку if. Array out of range.

Заранее спасибо.
for(i=1; i<Bars; i++)
  {
   if(Open[i]-Close[i]==0)
     {

     }
  }
...
 
Sergey Gritsay:
for(i=1; i<Bars; i++)
  {
   if(Open[i]-Close[i]==0)
     {

     }
  }
...
Спасибо помогло, Оказ. нельзя было ставить "<="? Хотя странно. Я не понял почему. Где поставить плюсик?
 
Andy-D:
Спасибо помогло, Оказ. нельзя было ставить "<="? Хотя странно. Я не понял почему. Где поставить плюсик?
Индексация массивов начинается с 0 и заканчивается значением Bars-1 (в данном случае). Поэтому значение Bars приводит к выходу за пределы массива.
 
Andy-D:
Спасибо помогло, Оказ. нельзя было ставить "<="? Хотя странно. Я не понял почему. Где поставить плюсик?
Так как индексация массивов начинается с нуля, то, например, если количество баров в Bars равно 1, то чтобы получить значение с этого единственного бара нужно брать значение их ячейки с индексом 0.

Вот сравнительная табличка:

Количество баров в Bars
       1           2           3           4           5           6           7           8           9           10       За пределами массива
Индекс цикла, ссылающийся на данные
 0 (i<Bars) 1 (i<Bars) 2 (i<Bars) 3 (i<Bars)  4 (i<Bars) 5 (i<Bars)  6 (i<Bars)  7 (i<Bars) 8 (i<Bars) 9 (i<Bars)            10 (i==Bars)
 
Sergey Gritsay:
Для этого нужно создать сервер вне локального компьютера и передавать данные через этот сервер, для МТ соответственно пишется индикатор или советник, который эти данные обрабатывает, либо ставите терминалы на какой либо ВПС-сервер и там настраиваете копировщик сделок с вашего счета на счета друзей. Еще вариант через сервис сигналы копировать ваши сделки совершенные по данным уровням. В общем тут надо подходить из ваших финансовых возможностей для заказа соответствующего софта.
Мне тут попался индикатор(mq4) с похожим принципом отображение, но уровни он рисует естественно свои и он платный. Я видел результаты его работы и они меня не устраивают. У меня свои данные и они на мой взгляд точнее. Можно ли отредактировать его под себя, выкинуть некоторые ненужные на мой взгляд отображения и прописать ему путь к моим данным?  Просто взять за основу.
 
Artyom Trishkin:
Так как индексация массивов начинается с нуля, то, например, если количество баров в Bars равно 1, то чтобы получить значение с этого единственного бара нужно брать значение их ячейки с индексом 0.

Вот сравнительная табличка:

Количество баров в Bars
       1           2           3           4           5           6           7           8           9           10       За пределами массива
Индекс цикла, ссылающийся на данные
 0 (i<Bars) 1 (i<Bars) 2 (i<Bars) 3 (i<Bars)  4 (i<Bars) 5 (i<Bars)  6 (i<Bars)  7 (i<Bars) 8 (i<Bars) 9 (i<Bars)            10 (i==Bars)
Спасибо большое, теперь стало понятнее.
Причина обращения: