Вопросы от "чайника" - страница 79

 
Rosh:
Да, самому. В принципе, могу выложить код на MQL5 для расчета.
Был бы признателен.Упростило бы часть задач.
 

Скажите пожалуйста, как правильно сравнивать Double ( ==  <  > ). Нужно ли нормализировать? Например, в МТ4 была такая функция:

CompareDoubles(double number1,double number2)
  {
   if(NormalizeDouble(number1-number2,8)==0) return(true);
   else return(false);
  }   

И вообще, какой примерный алгоритм у функции NormalizeDouble() ?

Документация по MQL5: Преобразование данных / NormalizeDouble
Документация по MQL5: Преобразование данных / NormalizeDouble
  • www.mql5.com
Преобразование данных / NormalizeDouble - Документация по MQL5
 
220Volt:

Скажите пожалуйста, как правильно сравнивать Double ( ==  <  > ). Нужно ли нормализировать? Например, в МТ4 была такая функция:

CompareDoubles(double number1,double number2)
  {
   if(NormalizeDouble(number1-number2,8)==0) return(true);
   else return(false);
  }

Рекомендации есть в Справочнике. Посмотрите.
 
220Volt:

Скажите пожалуйста, как правильно сравнивать Double ( ==  <  > ). Нужно ли нормализировать? Например, в МТ4 была такая функция:

CompareDoubles(double number1,double number2)
  {
   if(NormalizeDouble(number1-number2,8)==0) return(true);
   else return(false);
  }   

И вообще, какой примерный алгоритм у функции NormalizeDouble() ?

Вообще, рекомендуется при сравнении двух чисел типа double брать их разность и сравнивать с допустимым пороговым значением. Но я обычно сравниваю напрямую - ни разу проблем у меня не было.
 

Известно, что в начале чарта история некорректная, вопроса "почему она некорректная" не возникает.

Возникает другой вопрос: как программно определить границу, за которой следует некорректные исторические данные?

Красной вертикальной линией показана та самая граница.

 
joo:

Известно, что в начале чарта история некорректная, вопроса "почему она некорректная" не возникает.

Возникает другой вопрос: как программно определить границу, за которой следует некорректные исторические данные?

Красной вертикальной линией показана та самая граница.


Может как-то по частоте разрывов можно попробовать определить? Считать разрывы за определённый период. 
 
tol64:
Может как-то по частоте разрывов можно попробовать определить? Считать разрывы за определённый период. 

Вариантов, как можно извратится - много. Но не вижу ни одного реально надёжного. Ибо нет истинного критерия, по которому можно судить о "настоящести" данных каждого отдельно взятого бара.

Все чарты строятся из минутных баров. Можно было бы программно рассчитать, до какой даты возможно корректное построение более старшего требуемого ТФ. Но и здесь есть своё "однако". Однако и минутные ТФ корректны не на всю глубину истории:

 

Не знаю, ИМХО, нужен штатный механизм, для определения таких границ, что то типа

int Correct_Boundary_of_Timeframe
(
string symbol_name,       // имя символа
ENUM_TIMEFRAMES timeframe  // период
);

-возвращает индекс последнего корректного бара запрашиваемого инструмента требуемого ТФ.

 
joo:

Не знаю, ИМХО, нужен штатный механизм, для определения таких границ, что то типа

-возвращает индекс последнего корректного бара запрашиваемого инструмента требуемого ТФ.

Это был бы идеальный вариант. Зачем вот только вообще предоставляются эти битые данные?
 
joo:

-возвращает индекс последнего корректного бара запрашиваемого инструмента требуемого ТФ.

Тоже хочу такое.
 
joo:

Вариантов, как можно извратится - много. Но не вижу ни одного реально надёжного. Ибо нет истинного критерия, по которому можно судить о "настоящести" данных каждого отдельно взятого бара.

Все чарты строятся из минутных баров. Можно было бы программно рассчитать, до какой даты возможно корректное построение более старшего требуемого ТФ. Но и здесь есть своё "однако". Однако и минутные ТФ корректны не на всю глубину истории:

 

Не знаю, ИМХО, нужен штатный механизм, для определения таких границ, что то типа

-возвращает индекс последнего корректного бара запрашиваемого инструмента требуемого ТФ.

 Так если не побрезговать прочёсом всей истории в прошлое, тогда не вижу проблемы. Узнаём время открытия и закрытия каждого бара и смотрим в этих внутрибарных диапазонах количество секунд. Если меньше ожидаемого - пиши "ненастоящий" бар. Это и будет переломной вехой, после которой все остальные бары будут неполноценными. Далее прочёсывать нет смысла.