Индикаторы: Предсказание цены методом ближайших соседей (k-NN)

 

Предсказание цены методом ближайших соседей (k-NN):

Данный индикатор использует кластеризацию методом ближайших соседей, также известную как k-NN для поиска наиболее похожего паттерна в истории и использует эти цены прошлого как предсказание цен в будущем.

Индикатор рисует две кривые: синяя кривая показывает прошлые цены полученные методом ближайших соседей, а красная кривая показывает будущие цены того же паттерна. Ближайшие сосед масштабируется в коэффициентом соответствии линейной регрессией между данным паттерном и текущим паттерном.

Автор: Vladimir

Предсказание цены методом ближайших соседей (k-NN)

 

число пи лучше задавать вот так

pi = 4*MathArctan(1);
мне когдато подсказали, теперь передаю вам эти знания
 
Prival:

число пи лучше задавать вот так

мне когдато подсказали, теперь передаю вам эти знания
Спасибо, учту на будущее. Кстати, пи там не используется. По ошибке оставил эту строку.
 

А еще в языке MQL5 есть раздел Математические константы:

Для некоторых математических выражений зарезервированы специальные константы, содержащие значения. Эти константы можно использовать в любом месте mql5-программы вместо вычисления их значения с помощью математических функций.

Константа

Описание

Значение

M_E

e

2.71828182845904523536

M_LOG2E

log2(e)

1.44269504088896340736

M_LOG10E

log10(e)

0.434294481903251827651

M_LN2

ln(2)

0.693147180559945309417

M_LN10

ln(10)

2.30258509299404568402

M_PI

pi

3.14159265358979323846


 
Rosh:

А еще в языке MQL5 есть раздел Математические константы:


То что нужно.
 
Rosh:

А еще в языке MQL5 есть раздел Математические константы:


Эти константы заданы с максимально возможной точностью или нет ? Я использовал, эту запись так как была необходимость иметь именно максимальную точность, иначе накапливалась ошибка
 
Prival:
Эти константы заданы с максимально возможной точностью или нет ? Я использовал, эту запись так как была необходимость иметь именно максимальную точность, иначе накапливалась ошибка

 

Нужно взять и проверить. Вот скрипт, выдает пять раз 100500.

#property copyright "Copyright © 2010 Eugene Logunov (lea)"
#property version "1.00"

int CalcDifference(double approx, double exact) {
   double diff = MathAbs(approx - exact);
   if (diff == 0.0) {
      return 100500;
   }
   else {
      return (int)(-MathLog10(diff));
   }
}

void OnStart() {
   PrintFormat("%d", CalcDifference(MathExp(1.0), M_E));
   PrintFormat("%d", CalcDifference(MathLog10(MathExp(1)), M_LOG10E));
   PrintFormat("%d", CalcDifference(MathLog(2.0), M_LN2));
   PrintFormat("%d", CalcDifference(MathLog(10.0), M_LN10));
   PrintFormat("%d", CalcDifference(MathArctan(1.0) * 4.0, M_PI));
}

 p.s. Если из-за ошибки в 16 знаке справа от запятой в константе алгоритм выдает плохой результат - дело, очевидно, не в константе. И зачем нужна такая точность вычислений, если котировки всё равно фильтрованные?

 
lea:

 

Нужно взять и проверить. Вот скрипт, выдает пять раз 100500.

 p.s. Если из-за ошибки в 16 знаке справа от запятой в константе алгоритм выдает плохой результат - дело, очевидно, не в константе. И зачем нужна такая точность вычислений, если котировки всё равно фильтрованные? 

советую вам как програмисту хоть один раз в жизни прочитать про итерационные алгоритмы, что это такое и с чем едят. А потом округляйте http://dic.academic.ru/dic.nsf/enc_mathematics/1999/ИТЕРАЦИОННЫЙ математики головы ломают как с этим округлением бороться (алгоритмы устойчивые придумать), а тут легко и не принужденно, а зачем ...

З.Ы. спасибо за совет. Я уже один раз 2 недели потерял на проверку https://www.mql5.com/ru/code/8309 теперь на эти грабли не наступлю.

З.З.Ы и так уже достало проверять, в пятерке это уже становиться параноей...

 
Prival:

советую вам как програмисту хоть один раз в жизни прочитать про итерационные алгоритмы, что это такое и с чем едят. А потом округляйте http://dic.academic.ru/dic.nsf/enc_mathematics/1999/ИТЕРАЦИОННЫЙ математики головы ломают как с этим округлением бороться (алгоритмы устойчивые придумать), а тут легко и не принужденно, а зачем ...

Читать мне про это приходилось весь прошедший год. К тому же, на неустойчивость я и намекал (сказав, что дело не в константах).

Если ощущается нехватка точности именно из-за типов - можно посоветовать что-нибудь вроде http://gmplib.org/ (скорость расчетов, естественно, упадет).

З.З.Ы и так уже достало проверять, в пятерке это уже становиться параноей...

Проверять нужно всегда и всё что можно, хоть это и отнимает иногда много времени. Иначе могут быть неожиданности.

 
lea:

Читать мне про это приходилось весь прошедший год. К тому же, на неустойчивость я и намекал (сказав, что дело не в константах).

Если ощущается нехватка точности именно из-за типов - можно посоветовать что-нибудь вроде http://gmplib.org/ (скорость расчетов, естественно, упадет).

Проверять нужно всегда и всё что можно, хоть это и отнимает иногда много времени. Иначе могут быть неожиданности.

Вы даже близко не представляете что я програмировал и даете советы. причем учите человека который начал програмировать (судя по вашему профилю) когда Вы ходили в детский садик.

Вы не разработчик, вопрос задавал не вам, но вы начали учить как проверять код. Хотите помочь - приведите результаты с какой ТОЧНОСТЬЮ ЗАДАНЫ ВСЕ КОНСТАНТЫ ? проверить я могу и без советов, просто хочу сэкономить своё время.

Причина обращения: