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

Vladimir Karputov:

Нужно хоть раз провести финансовую операцию. Зачем Вам СервисДеск? Какой вопрос?



Никак не пойму , что за странный баг с зигзагообразным отображением эквити в тестере. Открытие брокер фондовая секция , демо . При изменении настройки символа "Способ расчетов" с  " Ехchange Stoks" на "Forex" , эквити отображается нормально. Такое же наблюдалось несколько лет назад , хотел попробовать подключить MT5 на фонду, протестировал , испугался и плюнул на все. Сейчас попробовал снова и тоже самое. Как то странно???

Баг МТ5 (build 2340) при передаче internal struct в шаблонную функцию, полученный тип данных невозможно использовать как базовый тип данных для другой internal struct в шаблонном классе:

struct It_Base{
public:
   class Tag{};
   int index;
};

class V{
public:
   struct It{
      class Tag{};
      int index;
   };
};


template<typename T>
class GetStructType{
public:
   struct type : public T{};  // Error: 'It' - declaration without type, 'It' - syntax error
};

template<typename T>
void func(const T &){
   // Bypass Compile Error for //T::Tag* tag_ptr = new T::Tag(); 
   GetStructType<T>::type::Tag* tag_ptr = new GetStructType<T>::type::Tag();
};


void OnStart (){ 
   It_Base iterator_base = {};
   func(iterator_base);         // OK
   
   V::It iterator = {};
   func(iterator);              // Compile Error
}

Баг МТ5 (build 2340), это какой-то треш...
Все абсолютно верно, а оно не компилируется и ругается на то, чего нет...
Пробуешь локализовать баг, а оно как на зло все работает, код на 99% один и тот же - тут работает, а в рамках проекта нет...

#ifdef  __cplusplus
    #include <iostream>
#endif

class input_iterator_tag  {};
class forward_iterator_tag       : public input_iterator_tag         {};
class bidirectional_iterator_tag : public forward_iterator_tag       {};
class random_access_iterator_tag : public bidirectional_iterator_tag {};


template<typename _Iterator, typename _Tp>
_Iterator set_value(const _Iterator &val,  _Tp &value, const input_iterator_tag* tag){
   printf("1\r\n");
   return val;
};

template<typename _Iterator, typename _Tp>
_Iterator set_value(const _Iterator &it,  _Tp &value, const  forward_iterator_tag*  tag){
   printf("2\r\n");
   return set_value(it, value, (input_iterator_tag*)NULL);
};

template<typename _Iterator, typename _Tp>
_Iterator set_value(const _Iterator &it,  _Tp &value, const  bidirectional_iterator_tag*  tag){
   printf("3\r\n");
   return set_value(it, value, (forward_iterator_tag*)NULL);
};

template<typename _Iterator, typename _Tp>
_Iterator set_value(const _Iterator &it,  _Tp &value, const random_access_iterator_tag* tag){
   printf("4\r\n");
   return set_value(it, value, (bidirectional_iterator_tag*)NULL);
};


template<typename _Iterator, typename _Tp>
_Iterator set_value(const _Iterator &it, _Tp &value){
   return set_value(it, value, it.tag);                      //Error: 'set_value' - ambiguous call to overloaded function       
};


template<typename T>
struct A{
   T data;
   static random_access_iterator_tag* tag;
};

template<typename T>
random_access_iterator_tag* A::tag = NULL;

class B{};


void OnStart (){ 
   A<B*> it;
   const B* const b_ptr = new B();
   set_value(it, b_ptr);                                     //Compile Error

   
   
   A<int> it_int;
   const int value_int = 5;
   set_value(it, value_int);         
}

int main(){
   OnStart();
   return 0;
};

Такое впечатление, что ранее найденные баги собрались в едином порыве и за счет общей синергии дали такой замечательный "результат":

- код абсолютно верный, и работает для всех типов, кроме указателей;
- вызовов перегруженных функций (set_value) выполняется на основании типа третьего аргумента, но с какого перепуга на полученный результат начинает влиять второй аргумент функции, когда туда передан указатель, мягко говоря - не понятно;
- если удалить const, назначенный зеленым цветом то, о чудо, все заработает...
- с другой стороны, если убрать всю иерархию наследования, оставив те ж классы но без базовых, то опять все заработает...
- ну и напоследок - результат компиляции зависит от последовательности расположения перегруженных шаблонных функций set_value, перемешаете и получите новые ошибки...


день добрый ! сегодня обновился с утра mt5 bild2340 теперь некоторые индикаторы с маркета  не запускаются .

выдает ошибка 2020.02.25 10:01:41.646 Custom Indicator loading of YuClusters (Si-3.20,M15) failed [538]

не устанавливается индикатор выдает ошибку и закладка маркет пропала в мт5

2020.02.25 10:24:37.385 MQL5 Market failed to get of info product (www.mql5.com:443 send failed [404: Not Found])
2020.02.25 10:24:37.385 MQL5 Market product [2835] not found in the database

Неужели у всех на фонде MOEX все тестируется нормально, а у меня треш какой то? Или этот баг с эквити в тестере в виде зигзага - в порядке вещей, что за странная тишина????
Nayati:
Неужели у всех на фонде MOEX все тестируется нормально, а у меня треш какой то? Или этот баг с эквити в тестере в виде зигзага - в порядке вещей, что за странная тишина????

Дайте детали для воспроизведения. Может, кто-то и заинтересуется. Так шансов вообще нет.

Код, инструмент, параметры теста.

Andrey Khatimlianskii:

Дайте детали для воспроизведения. Может, кто-то и заинтересуется. Так шансов вообще нет.

Код, инструмент, параметры теста.

Инструмент указан мною выше уже 2 раза, ка картинке. Любой код на фондовой секции MOEX дает такой результат. Настройки тоже любые, эквити начинает адекватно отображаться только когда поменять способ расчетов
Andrey Khatimlianskii:

Дайте детали для воспроизведения. Может, кто-то и заинтересуется. Так шансов вообще нет.

Код, инструмент, параметры теста.

Пожалуйста



Очень не хватает возможности программно менять штатный указатель мышки без dll. 

Или просто возможность отключать отрисовку штатной мыши.

В справке про EventChartCustom () сказано:

sparam

[in]  Параметр события типа string, передаваемый функции OnChartEvent. Если строка имеет длину больше, чем 63 символа, то строка усекается.

Однако успешно передается строка длиной 96 символов, что то изменилось?

Вот, шифрую строку и передаю её в эвенте, и успешно расшифровываю, строка не усекается как сказано в справке и это замечательно (первая строка шифрованная за ней расшифрованная):

2020.02.26 14:36:10.949 iSpy (EURUSD,H1) 38CFD250C299F2420D5AFB1D070196F2F9246A164C2B1905C3921E466D6124306D836A2A09D4A06DD4B02FBDD1DE6857

2020.02.26 14:36:10.949 iSpy (EURUSD,H1) EURUSD:1.08753:1.0875:0.0:1582716971862:0.0

2020.02.26 14:36:16.391 iSpy (EURUSD,H1) 2588EC84729FA3BFE07B09BCB13832AF026A4F9DEA5634477EFF2C1FCAC355A35A67EDC5D5A8621570D3EBF80A7A942A

2020.02.26 14:36:16.391 iSpy (EURUSD,H1) EURUSD:1.08752:1.08749:0.0:1582716977068:0.0


какой длины строку всё таки можно передать в эвенте не нарвавшись на усечение в действительности?