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

 
Vladimir Karputov:

Произведите клик по заголовку одного из столбцов: Символ, Тикет, Время. 

Клик ЛЕВОЙ КЛАВАИШЕЙ.

Сработало, спасибо, я уже несколько раз закрывал не ту пару.
 
Сергей Проценко:
В зависимости от прибыли, если прибыль больше, передвигается вниз, у другого ордера прибыль становится больше, меняются местами. Если по евро прибыль станет больше, чем по золоту, то ордер по евро будет нижним, а по золоту будет выше него.

У Вас стоит сортировка по прибыли. Выберите сортировку по другому критерию.

 
fxsaber :
Подскажите, как обойти ошибку компиляции ?

Все не так сложно, как кажется:

 #define  PRINT(x) ; Print ( #x,  ":" , string (x))

struct STRUCT_BASE
{
   static const int Array[];
};
static const int STRUCT_BASE::Array[] = { 1 , 2 };

struct STRUCT : STRUCT_BASE
{
   int Array2[ sizeof (Array)];
};


void OnStart ()
{
   static const int Array[] = { 1 , 2 };
   int Array2[ sizeof (Array)];
  
  PRINT( ArraySize (Array));             //2 
  PRINT( ArraySize (Array2));           //8
  
  
  STRUCT s;
  PRINT( ArraySize (s.Array));           //2
  PRINT( ArraySize (s.Array2));         //8
}
 
Sergey Dzyublik:

Все не так сложно, как кажется:

Спасибо, до базового не догадался.

 
Не могу пройти проверку в кодебазе, пишет main file not found , но он есть. Просьба выяснить причину (если модераторы могут). Подумываю вернуться к публикациям в блогах - там таких заморочек нет.
 
Stanislav Korotky:
Не могу пройти проверку в кодебазе, пишет main file not found , но он есть. Просьба выяснить причину (если модераторы могут). Подумываю вернуться к публикациям в блогах - там таких заморочек нет.

mq5 разместите в папке "по-умолчанию".

 

Сразу два вопроса к работе компилятора МТ5(build 2321):

#define PRINT(x) ; Print(#x, ":", string(x))
#ifdef __cplusplus
    #include<iostream>
#endif


template<typename T>
class A{
};

template<typename T>
class B : public A<T>{
};


template<typename T>
void func(B<T> &it1){
   printf("C++:1");                      //MQL:2         
}

////ERRROR: 'func' - template functions overloading is not supported yet
//template<typename T>     
//void func(T &it1){ 
//  printf("C++:2");                               
//}
template<typename T>         
void func(T &it1, T* = NULL){
   printf("C++:2");                       //MQL:1        
}

template<typename T>
void func(A<T> &it1){
   printf("C++:3");                       //MQL:3
}


void OnStart(){
   B<int> b;
   func(b);
}

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

1. Не соответствие приоритетов выполнения шаблонных функций в MQL в сравнении с шаблонными функциями в С++ (online: https://onlinegdb.com/Hkvz8Hu7L).
Так в С++, когда все три шаблонных функции в наличии, выполняется шаблонная функция с результатом "C++:1", если ее удалить, тогда выполнятся будет "C++:2", а если ее удалить - "C++:3".
В MQL же совсем другие приоритеты: "C++:2", затем "C++:1" и "C++:3".


2. Не понятно почему в MQL первая из функций запрещена, тогда как идентичная ей, но с фиктивным параметром, уже разрешена:

//ERRROR: 'func' - template functions overloading is not supported yet
template<typename T>     
void func(T &it1){ 
  printf("C++:2");                               
}

// OK
template<typename T>         
void func(T &it1, T* = NULL){
   printf("C++:2");                              
}
 

Всем привет.

Скажите, кто нибудь сталкивался с проблемой тестирование мультивалютных роботов?

загружаются ли Все котировки всех валютных пар, которые требуются для советника? 

Пытаюсь тестировать две пары, например EURUSD GBPUSD:

Если проводить тесты на EURUSD (тестируется EURUSD GBPUSD)- то результат 1, 

Если проводить тесты на GBPUSD (тестируется EURUSD GBPUSD)- то результат 2 , т.е. разные 

Если проводить тесты на USDCHF (тестируется EURUSD GBPUSD)- то результат 3 , т.е. разные 



Результаты не сильно отличаются , мелочь в пару десятков сделок (за 2 месяца), но результаты на каждой паре разные (хотя тестируются определенные установленные пары EURUSD GBPUSD)

Сразу предположу: Весь код работает от переменной, Symb , которая берет Symbol() из цикла. Т.е. единый код , но внутри кода переменной Symb присваивается свое значение. 


Может ли быть такое? что из-за разных котировок, тиков, качества истории разных пар (при этом всегда тестируется EURUSD и GBPUSD ), результаты теста на разных парах - разный?  

Т.е. 

Может быть такое, что установили тест на EURUSD , тогда для GBPUSD загружается меньше котировок?

и

Может быть такое, что установили тест на GBPUSD , тогда для EURUSD загружается меньше котировок?

 
fxsaber:

mq5 разместите в папке "по-умолчанию".

Я прекрасно знаю, что главный модуль должен быть без папок - так оно и есть, папку по-умолчанию они сами "дорисовывают" выпадающими опциями справа от кнопок загрузки.

Не прокатывает.

 
В С++ компилируется и все работает (online: https://onlinegdb.com/Syn90dd7I), а в MQL ошибка: "'func' - ambiguous call to overloaded function"

#define PRINT(x) ; Print(#x, ":", string(x))
#ifdef __cplusplus
    #include<iostream>
#endif


template<typename T>
class A{
};

template<typename T>
class B : public A<T>{
};

template<typename T>
class C : public B<T>{
};


template<typename T>
void func(B<T> &it1){
   printf("C++:1");                      
}

template<typename T>
void func(A<T> &it1){
   printf("C++:2");                      
}


void OnStart(){
   C<int> c;
   func(c);            //ERROR: 'func' - ambiguous call to overloaded function
}

int main(){
   OnStart();
   return 0;
}
Причина обращения: