Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 1495

 
JRandomTrader #:

Раз уж мы всё равно крутим цикл по всем тикам, можно в этом цикле не копировать, а сразу искать те максимумы-минимумы.

Кстати, если копировать, неплохо бы сначала задать размеры массивов, куда копируем, цикл за нас это делать не будет, вылетим из массива на первой же итерации. Это только CopyTicksRange сама целевой массив отресайзит.

Извините. Невнимательность. Поправил. Спасибо. И что значение ArrayMaximum - индекс, а не цена, тоже забыл. Но уже все исправил.

MqlTick ticks[];
int copied=CopyTicksRange(Symbol(),ticks,COPY_TICKS_INFO,t0,t1);
double bid_arr[];
ArrayResize(bid_arr,copied,100000);
double ask_arr[];
ArrayResize(ask_arr,copied,100000);
for(int i = 0; i < copied; i++)
{
   bid_arr[i] = ticks[i].bid;
   ask_arr[i] = ticks[i].ask;
}
int IndMaxBid = ArrayMaximum(bid_arr, 0, copied-1); // Индекс элемента массива bid_arr с максимальной ценой
double highestBid = bid_arr[IndMaxBid]; // Самая высокая цена bid за период
int IndMinBid = ArrayMinimum(bid_arr, 0, copied-1); // Индекс элемента массива bid_arr с минимальной ценой
double lowestBid = bid_arr[IndMinBid]; // Самая низкая цена bid за период
int IndMaxAsk = ArrayMaximum(ask_arr, 0, copied-1); // Индекс элемента массива ask_arr с максимальной ценой
double highestAsk = ask_arr[IndMaxAsk]; // Самая высокая цена ask за период
int IndMinAsk = ArrayMinimum(ask_arr, 0, copied-1); // Индекс элемента массива ask_arr с минимальной ценой
double lowestAsk = ask_arr[IndMinAsk]; // Самая низкая цена ask за период
double highestHigh = (highestBid+highestAsk)/2; // Средняя наибольшего ask и наибольшего bid элемента
double lowestLow = (lowestBid+lowestAsk)/2; // Средняя наименьшего ask и наименьшего bid элемента
double PrevClose = (bid_arr[copied-1]+ask_arr[copied-1])/2; // Средняя ask и bid последнего элемента
double WPR_Past = -100 * (NormalizeDouble((highestHigh - PrevClose) / (highestHigh - lowestLow),_Digits)); // Формула предыдущего WPR

Поскольку ArrayMaximum не работал с массивом ticks, я пробовал альтернативные расчеты, с if в цикле. Почему это лучше?

 
maxvoronin74 #:

Почему это лучше?

   MqlTick ticks[];
   int copied = CopyTicksRange(Symbol(), ticks, COPY_TICKS_INFO, t0, t1);
   double highestHigh = 0, lowestLow = DBL_MAX;
   for(int i = 0; i < copied; i++)
     {
      if(highestHigh < ticks[i].ask) // Находим максимальное значение в массиве ticks
         highestHigh = ticks[i].ask;
      if(lowestLow > ticks[i].bid) // Находим минимальное значение в массиве ticks
         lowestLow = ticks[i].bid;
     }
 
Aleksandr Slavskii #:
Благодарю.
 
Интересно, можно ли графический текстовый объект расположить, например, на боковой шкале подокна с графиком WPR?
 
maxvoronin74 #:
Интересно, можно ли графический текстовый объект расположить, например, на боковой шкале подокна с графиком WPR?

Нет, на шкале не получится. Можно в окне индикатора совсем рядом со шкалой, но не самой шкале.

 
Aleksandr Slavskii #:

Нет, на шкале не получится. Можно в окне индикатора совсем рядом со шкалой, но не самой шкале.

Понял, спасибо.
 

Я несколько раз пытался понять, как работает отладка, но после нескольких неудачных попыток отказался от этой идеи. Пытаюсь разобраться еще раз, поэтому понадобится помощь. Например, на прикрепленной картинке ниже я создал простой код для просмотра Выражений и Значений в процессе отладки, но я их не вижу, но в документации видны Выражений и Значений. В чем проблема?


Отладка кода - Разработка программ - Справка по MetaEditor
  • www.metatrader5.com
В MetaEditor встроен отладчик — инструмент, который позволяет проверить работу программы по шагам (по отдельным функциям). Вы расставляете в коде...
 

Nauris Zukas #:

... но я их не вижу ...

Для того, чтобы что-то увидеть, нужно что-нибудь добавить в наблюдение при помощи сочетаний клавиш Shift+F9. Шаги для просмотра каждой строчки кода делаете путём нажатия на клавишу F11.

С уважением, Владимир.

 
Nauris Zukas #:

Я несколько раз пытался понять, как работает отладка, но после нескольких неудачных попыток отказался от этой идеи. Пытаюсь разобраться еще раз, поэтому понадобится помощь. Например, на прикрепленной картинке ниже я создал простой код для просмотра Выражений и Значений в процессе отладки, но я их не вижу, но в документации видны Выражений и Значений. В чем проблема?


Обязательно разберитесь, очень полезная штука!
 
В ютубе гляньте. 
Там вроде, Алексей Волчанский рассказывает.