Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Уважаемые разработчики, мне кажется что возникла проблема с точностью вычислений:
/*[[
Name := problem
Author := Dmitry
Notes := problem
Separate Window := Yes
First Color := White
First Draw Type := Line
First Symbol := 217
Use Second Data := No
Second Color := Red
Second Draw Type := Line
Second Symbol := 218
]]*/
inputs : DevPeriod( 20 );
Variable : Bar( 0 );
Variable : J( 0 );
Variable : Sum( 0 );
Variable : Sum2( 0 );
Variable : Diff( 0 );
Variable : Deviation( 0 );
SetLoopCount( 0 );
For Bar = Bars / 10 Downto 0 Begin
Sum = 0;
Sum2 = 0;
for J = 0 to DevPeriod begin
Diff = abs( close[ Bar + J ] - close[ Bar + J + 1 ]);
Sum = Sum + Diff;
Sum2 = Sum2 + Diff * Diff;
// Sum2 = Sum2 + Pow( Diff, 2 );
print( Diff, " ", Sum, " ", Sum2 );
end;
Deviation = sqrt(( DevPeriod * Sum2 - Pow( Sum, 2 )) / ( DevPeriod * ( DevPeriod - 1 )));
SetIndexValue( Bar, Deviation );
End;
Если посмотреть на распечатки то видно, что Sum2 часто обращается в ноль - из-за этого данный расчет отклонения работает неверно. Если не ошибаюсь, это происходит из-за потери точности в операции Diff*Diff, то же самое при Pow(Diff,2).
Спасибо