Ошибки, баги, вопросы - страница 1989

[Удален]
Alexey Viktorov:
Твой вариант стабильнее работает, и даже почти всегда корректно (если не переключать ТФ). А если переключить и вернуть обратно... опять жесть начнется.
fxsaber:
(string)NormalizeDouble(0.99872, 5) - очень длинный результат.

Ошибки нет, некоторые числа в десятичной записи нельзя точно представить в double

Следующий код выдаёт нормальный результат
DoubleToString(0.99872, 5)

Evgeny Chernyshev:

Ошибки нет, некоторые числа в десятичной записи нельзя точно представить в double

Следующий код выдаёт нормальный результат
DoubleToString(0.99872, 5)

Понял, Спасибо!

Alexey Kozitsyn:
Виталий, разберитесь сначала в сути проблемы, пожалуйста. Когда включена настройка - все работает нормально. Проблема начинается тогда, когда настройка выключена.

Алексей, я извиняюсь, пропустил ещё одно исправление

   //if(inpUseArrows) // Если отображать нужно
   //  {
      SetPlotParametersArrow(0,0,bufArrowUp,false,"test up",EMPTY,clrLime,233,10);
      SetPlotParametersArrow(1,1,bufArrowDn,false,"test dn",EMPTY,clrRed,234,-10);
   //  }

В том посте тоже исправил с пометкой красным.

[Удален]
Alexey Viktorov:

Алексей, я извиняюсь, пропустил ещё одно исправление

В том посте тоже исправил с пометкой красным.

Дак в ней вся суть! Получается, ты просто выключил ее и используются все массивы под все граф. серии. Но суть именно в том, чтобы дать пользователю возможность отключить при необходимости часть граф. серий. А при необходимости - включить!

Alexey Kozitsyn:

Дак в ней вся суть! Получается, ты просто выключил ее и используются все массивы под все граф. серии. Но суть именно в том, чтобы дать пользователю возможность отключить при необходимости часть граф. серий. А при необходимости - включить!

Ну так количество графических серий определяется в самом начале кода, который не изменяется при переключении ТФ.

Боюсь что это непобедимо в mql5.

Хотя есть ещё одно ухищрение, чтобы исключить отображение графических серий в окне данных, надо

PlotIndexSetString(plotIndex, PLOT_LABEL, NULL);

В mql4 это работает. Надо проверить как в mql5, я ещё не проверял.

Не... это не работает в mql5. Работает это

      PlotIndexSetInteger(0, PLOT_SHOW_DATA, true);
      PlotIndexSetInteger(1, PLOT_SHOW_DATA, true);
   if(!inpUseArrows) // Если отображать не нужно
     {
      PlotIndexSetInteger(0, PLOT_SHOW_DATA, false);
      PlotIndexSetInteger(1, PLOT_SHOW_DATA, false);
     }
[Удален]
Alexey Viktorov:

Ну так количество графических серий определяется в самом начале кода, который не изменяется при переключении ТФ.

Боюсь что это непобедимо в mql5.

Хотя есть ещё одно ухищрение, чтобы исключить отображение графических серий в окне данных, надо

В mql4 это работает. Надо проверить как в mql5, я ещё не проверял.

Спасибо за помощь, видимо, если разработчики не поправят этот момент просто буду инициализировать буферы начальными значениями и все.

Но хотелось другого - экономичности в расчетах.

в ME неплохо бы ввести шаблоны тем отображения, а то настраивать подбором цвета долго

Пример из СБ, объясняющий, почему СБ следует хоть немного подредактировать, дабы не тормозила в тестере.


Оригинал

//+------------------------------------------------------------------+
//| Select a position on the index                                   |
//+------------------------------------------------------------------+
bool CPositionInfo::SelectByIndex(const int index)
  {
   ENUM_ACCOUNT_MARGIN_MODE margin_mode=(ENUM_ACCOUNT_MARGIN_MODE)AccountInfoInteger(ACCOUNT_MARGIN_MODE);
//---
   if(margin_mode==ACCOUNT_MARGIN_MODE_RETAIL_HEDGING)
     {
      ulong ticket=PositionGetTicket(index);
      if(ticket==0)
         return(false);
     }
   else
     {
      string name=PositionGetSymbol(index);
      if(name=="")
         return(false);
     }
//---
   return(true);
  }


Как надо

//+------------------------------------------------------------------+
//| Select a position on the index                                   |
//+------------------------------------------------------------------+
bool CPositionInfo::SelectByIndex(const int index)
  {
   return(PositionGetTicket(index));
  }

     Здравствуйте! 2017.09.05_20:00 GMT+3. Я в сгенерированом советнике заменил основной файл с процедурного на ООП. Но он не работает. В тестере появляется голая цена, без индикатора. Может я не всё проинициализировал? Пока сам не разобрался. Может кто посмотрит? Почему я стал писать основной файл ООП? У процедурного файла время компиляции больше 3 секунд. Я не знаю, есть ли ограничение на время компиляции? Попробую выложить все необходимые файлы. 20:07 GMT+3.

Файлы: