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

 
Carl Schreiber #:

Я предполагаю, что в MT4 все бары (m1 - mn1) явно доступны локально, но в MT5 доступны только цены M1, из которых должны быть сгенерированы/вычислены месячные бары.

У меня обе платформы установлены меньше недели назад, символом XAGUSD, до того как снять видео, я не пользовался ни там ни там.

Просто МТ5 позиционируется как более новый и быстрый терминал. Хотелось бы понять, как можно заставить работать МТ5 так же быстро как это делает МТ4. На другом символе копируется 281 месячный бар, в МТ4 скорость такая же - менее 0,05 сек., на МТ5 уже около 50 сек.

 
Valeriy Yastremskiy #:
В мануале ошибка в примере

Поправили, спасибо!

 
Будет ли разумным добавить папку "Shared Projects" в пути поиска включения по умолчанию?

При включении из такого проекта путь должен предваряться "../", что немного сбивает с толку.

Разве это не имеет смысла?
 

К сожалению и сюда добралась "модная" деградация языка. 

"Копируем" подразумевает именно производимое  в данный момент  действие и совместно с кем-то, а не общее описание действия.

Еще несколько лет назад здесь было-бы логически правильное "сколько копировать".

 

Bug MT5 (build 3280), не понятно почему выбор перегружаемой функции зависит от "истории происхождения" аргумента Container, который ни коем образом в самой перегрузке участия не принимает.
Потратил более 3-х часов, проблему удалось локализировал, однако, все равно получилось не то, что было с самого начала.
Изначально баг был еще коварнее - только при использовании l-value указателей, сейчас же в примере воспроизводим для l-value и r-value указателей.

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 {};


struct It{
   char data[10];
};

template<typename _It>
struct wrapper : public _It{};

struct main_It : public wrapper<It>{};


class Base{
public:
   struct iterator : public main_It{};
};
   
class Container
{
public:   
   struct iterator : public Base::iterator{};
};


template<typename _InputIterator1> 
void __find_end (const wrapper<_InputIterator1> &_first1, 
      input_iterator_tag*, input_iterator_tag*)
{
   printf("input_iterator_tag\r\n");
}   
template<typename _BidirectionalIterator1> 
void __find_end (const wrapper<_BidirectionalIterator1> &_first1, 
      bidirectional_iterator_tag*, bidirectional_iterator_tag*)
{
   printf("bidirectional_iterator_tag\r\n");
}  
template<typename _RandomAccessIterator1> 
void __find_end (const wrapper<_RandomAccessIterator1> &_first1, 
      random_access_iterator_tag*, random_access_iterator_tag*)
{
   printf("random_access_iterator_tag\r\n");
}  


void OnStart()
{   
   bidirectional_iterator_tag* bidirectional_tag = NULL;
   random_access_iterator_tag* random_access_tag = NULL;
   
   Container::iterator container;
   // r-value pointers
   __find_end(container, (bidirectional_iterator_tag*)NULL, (bidirectional_iterator_tag*)NULL);   // BUG: input_iterator_tag          //expected value: bidirectional_iterator_tag
   __find_end(container, (random_access_iterator_tag*)NULL, (random_access_iterator_tag*)NULL);   // BUG: bidirectional_iterator_tag  //expected value: random_access_iterator_tag
   
   // l-value pointers
   __find_end(container, bidirectional_tag, bidirectional_tag);   // BUG: input_iterator_tag           //expected value: bidirectional_iterator_tag
   __find_end(container, random_access_tag, random_access_tag);   // BUG: bidirectional_iterator_tag   //expected value: random_access_iterator_tag
}
C++ online: https://onlinegdb.com/pCjzGFT8p
 

По мне так 3577 будет меньше 3600 :))

Это описание к библиотеке.

Не принимает описание для португальского языка, на русском и английском всё сохранило.

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

 
Друзья, а как округлить 1.1284399, до 1.12844? NormalizeDouble не помогает
 
Yury Lemeshev #:
Друзья, а как округлить 1.1284399, до 1.12844? NormalizeDouble не помогает

Помогает. При правильном использовании.

 
Andrei Sokolov #:

Помогает. При правильном использовании.

Здравствуйте, Андрей! Поделитесь способом правильного использования. У меня была такая же проблема с NormalizeDouble .

С уважением, Владимир.

P.S. Сваял скрипт, запустил на двух разных терминалах и ... О, чудо!!! Всё нормализовалось! Похоже что-то уже подправили.

 
Yury Lemeshev #:
Друзья, а как округлить 1.1284399, до 1.12844? NormalizeDouble не помогает

для нормализации положительной цены текущего символа можно использовать что-то вроде:

 double NormPr(double pr) {
        return long(pr/_Point+0.5)*_Point;
 }

работает быстрее чем  NormalizeDouble 

Причина обращения: