Вопрос по OBV - страница 2

 
ToporMT4:


Давайте со сравнением double разберемся, поставим правильный эксперимент, а после и к этому вопросу вернемся.


Так со сравнением даблов давно разобрались. Всего-то нужно - прочитать как это делать правильно ;).
 
VladislavVG:

Так со сравнением даблов давно разобрались. Всего-то нужно - прочитать как это делать правильно ;).

if (NormalizeDouble(currPrice - prevPrice,8) == 0)

Так правильно?

Все равно возникает проблема:

11:08:20 Moving Averages EURUSD,M15: loaded successfully

11:08:20 testOBV EURUSD,M15: loaded successfully

11:08:20 Moving Averages EURUSD,M15: initialized

11:08:20 testOBV EURUSD,M15: iOBV -100858 does not equal to -100305 (prices: 1.34698000, 1.34698000 ).

11:08:20 testOBV EURUSD,M15: iOBV correct

11:08:20 testOBV EURUSD,M15: iOBV correct

11:08:20 testOBV EURUSD,M15: iOBV 56583 does not equal to 56194 (prices: 1.37888750, 1.37888750 ).

11:08:20 testOBV EURUSD,M15: iOBV correct

11:08:20 testOBV EURUSD,M15: iOBV 17427 does not equal to 16679 (prices: 1.36736250, 1.36736250 ).

 
ToporMT4:

Так правильно?

Все равно возникает проблема:

11:08:20 Moving Averages EURUSD,M15: loaded successfully

11:08:20 testOBV EURUSD,M15: loaded successfully

11:08:20 Moving Averages EURUSD,M15: initialized

11:08:20 testOBV EURUSD,M15: iOBV -100858 does not equal to -100305 (prices: 1.34698000, 1.34698000 ).

11:08:20 testOBV EURUSD,M15: iOBV correct

11:08:20 testOBV EURUSD,M15: iOBV correct

11:08:20 testOBV EURUSD,M15: iOBV 56583 does not equal to 56194 (prices: 1.37888750, 1.37888750 ).

11:08:20 testOBV EURUSD,M15: iOBV correct

11:08:20 testOBV EURUSD,M15: iOBV 17427 does not equal to 16679 (prices: 1.36736250, 1.36736250 ).

Ну, почему бы не прочитать ? На форуме куча материала на эту тему - там все разжевано. Не правильно.

Сравнивать нужно с допустимой ошибкой и неравенством строгим или нестрогим.

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


 
VladislavVG:

Ну, почему бы не прочитать ? На форуме куча материала на эту тему - там все разжевано. Не правильно.

Сравнивать нужно с допустимой ошибкой и неравенством строгим или нестрогим.

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



Спасибо!

При вычислении цены WEIGHTED и котировках с точностью до пятого знака, в результате меняется максимум седьмой знак.

Сделал так:

if (NormalizeDouble(prevPrice,7) == NormalizeDouble(currPrice,7))

Все равно считается по-всякому:

12:32:24 testOBV EURUSD,M15: loaded successfully

12:32:24 testOBV EURUSD,M15: iOBV -100858 does not equal to -100305 (prices: 1.34698000, 1.34698000 ).

12:32:24 testOBV EURUSD,M15: iOBV correct

12:32:24 testOBV EURUSD,M15: iOBV correct

12:32:24 testOBV EURUSD,M15: iOBV 56583 does not equal to 56194 (prices: 1.37888750, 1.37888750 ).

12:32:24 testOBV EURUSD,M15: iOBV correct

12:32:24 testOBV EURUSD,M15: iOBV 17427 does not equal to 16679 (prices: 1.36736250, 1.36736250 ).

12:32:24 testOBV EURUSD,M15: iOBV correct

12:32:24 testOBV EURUSD,M15: iOBV correct

12:32:24 testOBV EURUSD,M15: iOBV correct

12:32:24 testOBV EURUSD,M15: iOBV correct

12:32:24 testOBV EURUSD,M15: iOBV correct

12:32:24 testOBV EURUSD,M15: iOBV -83592 does not equal to -83910 (prices: 1.32962250, 1.32962250 ).

12:32:24 testOBV EURUSD,M15: iOBV -83910 does not equal to -83488 (prices: 1.32962250, 1.32962250 ).

12:32:24 testOBV EURUSD,M15: iOBV -69018 does not equal to -66130 (prices: 1.33085750, 1.33085750 ).

Надеюсь разработчики обратят внимание на тему, и объяснят почему это происходит.

 

Блин, приз за "настойчивость":

if( MathAbs(Price1-Price2)<Point ) {

// Значит, цены равны

}

else{

// А если так, то не равны

}

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