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

 

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Ошибки, баги, вопросы

A100, 2020.07.26 01:02

В MQL нормально:

class A {};
class B : A {};
class C : B {
                void f1( A* ) {}    //(1)нормально
                void f2() { A *a; } //(2)нормально
};

а C++ ошибку выдает в обоих случаях


Просьба пояснить, почему в этом коде проблема?

 
fxsaber:

Просьба пояснить, почему в этом коде проблема?

Понятия не имею! Разбирал этот пример... поменял struct на class - C++ shell выдал ошибку:

error: 'class A A::A' is inaccessible

Можете сами проверить

 

в разрешении контекста. через предка конструктор недоступен из-за приватного наследования.

если явно указать контекст, все будет компилироваться

                void f1( ::A* ) {}    //(1)нормально
                void f2() { ::A *a; } //(2)нормально

_____

зачем требуется конструктор, не спрашивайте - понятия не имею.

 
@A100, @TheXpert, Спасибо. 
 
TheXpert:

Другими словами: внутреннего (по умолчанию) доступа нет, но есть внешний. Но чтобы им воспользоваться - нужно его явно указать. По моему логичная конструкция

 
Ошибка при компиляции:
template<typename T> class A {};
class B {
template<typename T> void f( A<T>& );
};
template<typename T>
void B::f( A<T>& ) {} //Error: 'f' - member function already defined with different parameters

а так:

template<typename T> class A {};
class B {
template<typename T> void f( A<T>& ) {} //нормально
};

нормально. А какая разница? при том, что так:

template<typename T> class A {};
template<typename T>
class B {
                     void f( A<T>& );
};
template<typename T>
void B::f( A<T>& ) {} //нормально

тоже нормально. А главное, что раньше (в build 2085) все это нормально компилировалось - без ошибок!

 

Добрый день, уважаемые эксперты!

Подскажите, пожалуйста, есть ли возможность при отладке поставить срабатывание breakpoint на определенное время (на определенном баре)? Т.е. я хочу что бы история проматалась до определенного места,  а на этом месте сработал breakpoint  и я бы мог пройтись отладчиком именно на том баре на котором мне надо. 

 

Запустил в тестере советник, неттинговый. Я с лимитками мало имел дело, вопрос по сбитому BuyLimit, с переворотом позиции.
Они действительно с проскальзыванием в лучшую сторону срабатывают или это от брокера зависит? Или это в тестере не то?

И почему-то линия Sell-позиции закончилась не на сбитой лимитке, а пошла дальше за край экрана.


 
1.Есть команда "DatabaseImport", в документации к параметрам пояснение flags нет этих самых флагов. Пробовал и "0" и параметры от DatabaseExport, компиляция идёт, но при исполнении возвращает ошибку 5131. В документации такой ошибки нет. Кто нибудь знает о чём эта ошибка? Что не так в строке;
DatabaseImport(db,"hist",FilenameHist,DATABASE_IMPORT_HEADER | DATABASE_IMPORT_CRLF | DATABASE_IMPORT_APPEND,";",0,"");
?
2. Почему строка
         i=DatabaseExport(db,"select * from hist",FilenameHist,DATABASE_EXPORT_HEADER | DATABASE_EXPORT_CRLF | DATABASE_EXPORT_APPEND,";");
работает, а
i=DatabaseExport(db,"hist",FilenameHist,DATABASE_EXPORT_HEADER | DATABASE_EXPORT_CRLF | DATABASE_EXPORT_APPEND,";");
нет? При то что в документации сказано
long  DatabaseExport( 
   int           database,           // хендл базы данных, полученный в DatabaseOpen 
   const string  table_or_sql,       // 




имя таблицы или SQL-запрос 
   const string  filename,           // имя CSV-файла для экспорта данных 
   uint          flags,              // комбинация флагов 
   const string  separator           // разделитель данных в CSV-файле 
   );
 

т.е. имя таблицы также должно распознаваться! Что не так?


з.ы. Господа разработчики каким десятым глазом надо догадываться что таблица куда будет осуществляться импорт не должно существовать???И зачем вообще нужен экспорт импорт если папка относительно которой можно сохранятьmql5/files очищается при запуске? Как можно работать с постоянным файлом? Или всё время нужно через отладку запускаться и до инициализации всего успевать подпихнть нужный файл?? Что за ....
 
AlexInRush:

Добрый день, уважаемые эксперты!

Подскажите, пожалуйста, есть ли возможность при отладке поставить срабатывание breakpoint на определенное время (на определенном баре)? Т.е. я хочу что бы история проматалась до определенного места,  а на этом месте сработал breakpoint  и я бы мог пройтись отладчиком именно на том баре на котором мне надо. 

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