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

 
Artyom Trishkin #:

Может, данные ещё не полностью подкачаны?

Данные могут быть полностью закачаны, но если какой то таймфрейм открыт впервые, то  iBarShift по любому вернёт -1 на первом вызове.

Пока не построятся бары нужного таймфрейма  iBarShift будет возвращать -1

 
Nikolai Semko #:
все таки iBarShift глючит.
При наличии баров, выдает -1 в самом начале инициализации. 
Не мог понять причину неправильного поведения, но нашел. Спасает замена альтернативным решением.

Альтернативное решение работает с минутными барами ?

 
Aleksandr Slavskii #:

Альтернативное решение работает с минутными барами ?

https://www.mql5.com/ru/forum/1111/page3277#comment_44527232

fBarShift
 
Artyom Trishkin #:

Может, данные ещё не полностью подкачаны?

В том то и дело, что уже произведен рассчет по этим барам.

Старая проблема

Думал, что починили, но нет.

Существует какое-то запаздывание для начала работы iBarshift 

 

Спасибо.

 

Почему с тернарным оператором нельзя присвоить указатель? Скобки добавлял - не помогают.

Аналог с if-else компилируется.

class A
  {
public:
   static void instantiate1(A *&ptr, bool someCondition, int a_x);
   static void instantiate2(A *&ptr, bool someCondition, int a_x);
//---
protected:
   const int   x;
               A(int a_x) : x(a_x) {}
  };

void A::instantiate1(A *&ptr,bool someCondition,int a_x)
  {
   if(someCondition)
      ptr = new B(a_x);
   else ptr = new C(a_x);
  }

void A::instantiate2(A *&ptr,bool someCondition,int a_x)
  {
   ptr = someCondition ? new B(a_x) : new C(a_x); // ':' - invalid cast operation
  }

class B final : public A
  {
public:
   B(int a_x) : A(a_x) {}
  };

class C final : public A
  {
public:
   C(int a_x) : A(a_x) {}
  };

void OnStart() {}
 
Vladislav Boyko #:

Почему с тернарным оператором нельзя присвоить указатель? Скобки добавлял - не помогают.

Аналог с if-else компилируется.

а так?

ptr = someCondition ? new B(a_x) : (A*)new C(a_x);

не могу проверить...

 
Vladislav Boyko #:

Почему с тернарным оператором нельзя присвоить указатель? Скобки добавлял - не помогают.

Аналог с if-else компилируется.

Если я правильно помню, то оба возвращаемых выражения в тернарном операторе обязаны быть одного типа. Поэтому компилятор ругается.
 
Если я отключаю основной чарт:
ChartSetInteger(0,CHART_SHOW,false);

то, в тестере он не отключается, что очень мешает. 
Дело, в том, что я формирую собственный чарт, как канвас объект. 
И в тестере два чарта накладываются друг на друга. Если я даже делаю свой чарт сверху и непрозрачным, то все равно, остается лишняя шкала цены и времени
Просьба поправить это. 

 
Nikolai Semko #:
Если я отключаю основной чарт:

то, в тестере он не отключается, что очень мешает. 
Дело, в том, что я формирую собственный чарт, как канвас объект. 
И в тестере два чарта накладываются друг на друга. Если я даже делаю свой чарт сверху и непрозрачным, то все равно, остается лишняя шкала цены и времени
Просьба поправить это. 

Временно попробуй отключать и шкалы основного графика