Скачать MetaTrader 5

Тестируем CGraphic - вопросы и предложения - страница 9

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Anatoli Kazharski
66499
Anatoli Kazharski  
Dennis Kirichenko:

Анатолий, огромное спасибо! Помогло по п.1. Да, я упустил из виду осевой метод CAxis::MaxGrace(const double value).

Вот такой ещё краткий пример:

   CAxis *x_axis=graph.XAxis();
   x_axis.AutoScale(true);
   x_axis.Min(0);
   x_axis.Max(m_max_data);
   x_axis.MinGrace(0.0);
   x_axis.MaxGrace(0.2);
   x_axis.DefaultStep(m_max_data/10);
Anatoli Kazharski
66499
Anatoli Kazharski  

Заявка #1827124.


Anatoli Kazharski
66499
Anatoli Kazharski  
Anatoli Kazharski:

Заявка #1827124.

Проблема исправлена следующим образом:

Support Team 2018.01.15 14:30

Погрешность появлялась при безопасном вычисление остатка от деления в методе CAxis::Mod.

Раньше там был реализован численный метод, без использования функции MathMod, но ваш пример показал, что точность данного метода в некоторых случаях не самая хорошая.

Поэтому пришлось изменить данный метод на:

//+------------------------------------------------------------------+
//| Calculate the modulus (remainder) in a safe manner so that divide|
//| by zero errors are avoided                                       |
//+------------------------------------------------------------------+
double CAxis::Mod(const double x,const double y)
  {
//--- check 
   if(y==0)
      return(0);
//--- calculate modulus
   return (x>0)? MathMod(x,y): MathMod(x,y)+y;
  }

//---

Результат с теми же параметрами:


Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий