Ошибки, баги, вопросы - страница 491

 
Urain:

Что означают числа

И как избавиться от этой ошибки ????

По задумке temp должен быть равен -1.0 

ЗЫ у меня есть проверка на равенство нулю, но не знаю как проверить равенство этому -1.#IND

Посмотрите внимательно примеры в разделе Вещественные типы (double, float)
 
Im_hungry:

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

одинаковое ...мин 00сек а самый простой способ определения нового бара: (сам додумал очень простой и эффективный)

и конструкцию в OnTick засунуть туда где собсно и нужно этот новый бар
Не совсем так. Новый бар начинается не в 00 сек, а с приходом первого тика после 00 сек. Если за время таймфрейма с 00 сек не придёт ни одного тика, то и соответствующего бара не будет
 

Добрый день столкнулся со следующим:

      Alert("Запрос = ", Bars("GBPUSD", PERIOD_MN1, datetime("2009.01.01 00:00:00"), datetime("2008.10.01 00:00:00")) );
      datetime timeArray[];         // динамический массив, размер не задаем
      int ckopirovano = CopyTime("GBPUSD", PERIOD_MN1, datetime("2009.01.01 00:00:00"), datetime("2008.10.01 00:00:00"),timeArray);
      Alert("Скопировано = ", ckopirovano); 

Резултат :

             Запрос = 4

             Скопировано = 3

 

 

      Alert("Запрос = ", Bars("GBPUSD", PERIOD_MN1, datetime("2009.01.01 00:00:00"), datetime("2008.10.01 00:00:00")) );
      datetime timeArray[5];        // указываем размер                                                                         
      int ckopirovano = CopyTime("GBPUSD", PERIOD_MN1, datetime("2009.01.01 00:00:00"), datetime("2008.10.01 00:00:00"),timeArray);
      Alert("Скопировано = ", ckopirovano);  

Резултат :

             Запрос = 4

             Скопировано = 4

 

        Я это к тому что всегда из таймсерии копировал в динамический массив, размер не задавал (ошибки никогда не было), а тут это. Как это все понимать? 

Документация по MQL5: Основы языка / Типы данных / Объект динамического массива
Документация по MQL5: Основы языка / Типы данных / Объект динамического массива
  • www.mql5.com
Основы языка / Типы данных / Объект динамического массива - Документация по MQL5
 
Im_hungry:

Приведи резкие доводы, я проверял на своем советнике - что по 2 парам (мультик) что

по одной результат теста с 2000г. на всех тиках ничем не отличается как и по 1 паре,

причем советники с разной стратегией!!!


А вот если расчет идет не на тек. баре а на истории 2 и более баров (хоть миллион)

то там уже необходим поиск бара по истории!

Значит плохо проверяли, или советник НЕ мультивалютный, а просто может работать на разных символах. Доводы простые - знание того, что тики приходят на разные символы в разное время. Соответственно, если советник стоит в OnTick EURUSD (например), а проверяет индюк или даже просто тиковые изменения GBPUSD вместо EURUSD, то результат будет разным. В частности, сформированный бар на EURUSD может случиться до формирования бара с тем же временем на GBPUSD. Будете торговать GBPUSD дважды по одному и тому же бару: прежний бар GBPUSD все еще будет считаться новым (нулевым). Про мультивалютные индикаторы вообще все очевидно. Учите матчасть.
Построение мультивалютного индикатора с применением множества промежуточных индикаторных буферов
Построение мультивалютного индикатора с применением множества промежуточных индикаторных буферов
  • 2010.05.17
  • Alexey Klenov
  • www.mql5.com
В последнее время возрос интерес к кластерному анализу рынка FOREX. MQL5 открывает новые возможности исследования закономерностей движения валютных пар. Важным преимуществом MQL5, по сравнению с MQL4, является возможность использования неограниченного количества индикаторных буферов. В данной статье описан пример построения мультивалютного индикатора.
 
220Volt:

Добрый день столкнулся со следующим:

      Alert("Запрос = ", Bars("GBPUSD", PERIOD_MN1, datetime("2009.01.01 00:00:00"), datetime("2008.10.01 00:00:00")) );
      datetime timeArray[];         // динамический массив, размер не задаем
      int ckopirovano = CopyTime("GBPUSD", PERIOD_MN1, datetime("2009.01.01 00:00:00"), datetime("2008.10.01 00:00:00"),timeArray);
      Alert("Скопировано = ", ckopirovano); 

Резултат :

             Запрос = 4

             Скопировано = 3

 

 

      Alert("Запрос = ", Bars("GBPUSD", PERIOD_MN1, datetime("2009.01.01 00:00:00"), datetime("2008.10.01 00:00:00")) );
      datetime timeArray[5];        // указываем размер                                                                         
      int ckopirovano = CopyTime("GBPUSD", PERIOD_MN1, datetime("2009.01.01 00:00:00"), datetime("2008.10.01 00:00:00"),timeArray);
      Alert("Скопировано = ", ckopirovano);  

Резултат :

             Запрос = 4

             Скопировано = 4

 

        Я это к тому что всегда из таймсерии копировал в динамический массив, размер не задавал (ошибки никогда не было), а тут это. Как это все понимать? 

Есть такой баг, дело заведено в СД. Когда поправят - я не знаю.
 
220Volt:

        Я это к тому что всегда из таймсерии копировал в динамический массив, размер не задавал (ошибки никогда не было), а тут это. Как это все понимать? 

Сколько было доступно, столько и получили. Так и понимать. Проверьте доступную глубину истории. Перед запросом данных необходимо убедиться, что они есть. Какой у Вас билд? недавно правили ошибку с копированием месячных таймфреймов, возможно это она.
 

Билд 489, дело я думаю не в доступности (ведь второй вариант работает адекватно).

И так что-то не то:

Alert("Запрос = ", Bars("GBPUSD", PERIOD_MN1, datetime("2009.01.01 00:00:00"), datetime("2008.10.01 00:00:00")) );
      datetime timeArray[2];
      int ckopirovano = CopyTime("GBPUSD", PERIOD_MN1, datetime("2009.01.01 00:00:00"), datetime("2008.10.01 00:00:00"),timeArray);
      Alert("Скопировано = ", ckopirovano);

Резултат :

            Запрос = 4  

Скопировано = 1  (по идее должно быть два?)

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Периоды графиков
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Периоды графиков
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы графиков / Периоды графиков - Документация по MQL5
 

Im_hungry:

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

одинаковое ...мин 00сек а самый простой способ определения нового бара: (сам додумал очень простой и эффективный)

Обязательно, именно на всех.

Одно исключение - если советник анализирует только сформировавшиеся бары, можно просто дождаться времени появления нового бара (:00), а на разных  инструментах анализировать 0-й или 1-й бар, в зависимости от того, появился ли там бар с новым временем (если появился - анализируем старый, с индексом 1, а если не появился, значит у сформировавшегося бара индекс будет равен 0, пока не появится новый бар).

 

Скажите пожалуйста, насколько правильным является создание графического объекта с уже занятым именем (для передвижения всего объекта одной функцией)?

Ведь если сдвигать по очереди через ObjecMove одна координата может сдвинуться а другая нет.  

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Типы событий графика
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Типы событий графика
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы графиков / Типы событий графика - Документация по MQL5
 
220Volt:

Скажите пожалуйста, насколько правильным является создание графического объекта с уже занятым именем (для передвижения всего объекта одной функцией)?

Вполне правильно, никаких негативных последствий в этом случае нет.