Вопрос к уважаемым программистам...

 

Ребята, столкнулся я с проблемой. Вычислить в скрипте нужно значение встроенной iMA, но с точностью большей точности инструмента.

Для индикаторов это решается просто - IndicatorDigits. A вот что делать с простым скриптом или экспертом. Ведь ему никак не передашь это самое MODE_DIGITS. Заранее спасибо.

 
sergeev:

Ребята, столкнулся я с проблемой. Вычислить в скрипте нужно значение встроенноой iMA, но с точностью большей точности инструмента.

Для индикаторов это решается просто - IndicatorDigits. A вот что делать с простым скриптом или экспертом. Ведь ему никак не передашь это самое MODE_DIGITS.

первый вопрос а ЗАЧЕМ!??


double aaa = iMA ( Symbol(),0,8,0,MODE_SMA,MODE_CLOSE,0);



Print ( aaa );


1.57395000


double aaa = iMA ( Symbol(),0,8,0,MODE_SMA,MODE_CLOSE,0);
double bbb = iMA ( Symbol(),0,34,0,MODE_SMA,MODE_CLOSE,0);

Print( " >>> "+aaa +" "+bbb+" "+( aaa-bbb ) );


2008.05.23 18:57:37 TST EURUSD,M15: >>> 1.57395000 1.57231765 0.00163235





----



вот такая точность разве не достаточная ?

-----

 
У меня к сожалению выдает только 4 цифры.
 
sergeev:
У меня к сожалению выдает только 4 цифры.




int start()
  {
   double aaa = iMA ( Symbol(),0,8,0,MODE_SMA,MODE_CLOSE,0);
   double bbb = iMA ( Symbol(),0,34,0,MODE_SMA,MODE_CLOSE,0);
   
   Print( " >>> "+aaa +" "+bbb+" "+( aaa-bbb ) );
   return(0);
  }

опробуйте приведенный пример получите 8 знаков после запятой - обычно с этимм как раз народ борется с помощью NormalizeDouble

т к такая точность точно излишняя

 

Наверно рано поспешил с вопросом и его надо закрыть.

Вот что получилось.
1.98260000   1.98079118   0.00180882

скорее всего чем меньше значение периода, тем меньше "погрешность". И вычисления держаться в районе знаковости инструмента. Но чем больше период МА, тем "больше" цифр после запятой затрагивается.

Спасибо за помощь.

[Удален]  
На крайний случай, можно и свою процедуру расчета среднего написать, ничего там сложного нет...