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

 
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  и я бы мог пройтись отладчиком именно на том баре на котором мне надо. 

В тестере стратегий сразу после запуска ставишь на паузу и правее есть поля "Прокрутить до". Самое крайнее с права поле забиваешь до какого времени пробежаться. В результате остановитесь на нужном вам моменте, а после в коде точку останова ставишь и  остлеживаешь
 
Alexandr Koptelov:
1.Есть команда "DatabaseImport", в документации к параметрам пояснение flags нет этих самых флагов. Пробовал и "0" и параметры от DatabaseExport, компиляция идёт, но при исполнении возвращает ошибку 5131. В документации такой ошибки нет. Кто нибудь знает о чём эта ошибка? Что не так в строке; ?
2. Почему строка работает, а нет? При то что в документации сказано

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


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

Работайте в тестере или отладке с базой размещённой в общей папке.

 
AlexInRush:

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

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

Поставьте условие

if(TimeCurrent() == nnnTime)
  DebugBreak();
и запустите отладку. Как только дойдёт время до указанного времени отладка будет остановлена и после всех манипуляций нажимаете Shift+F11 для продолжения работы тестера.
 

А Print в режиме оптимизации никак не включить? Опция "Полные журналы оптимизации" включена, но в логи попадает только Print из OnInit, а нужно из OnTester, например.

 
Ошибка при компиляции
#define MACRO( X ) aaa##X = X
#define bbb  5
void OnStart()
{
    int MACRO(         bbb );
    printf( "%d",   aaabbb ); //Error: 'aaabbb' - undeclared identifier
}

А в С++ все нормально. У ## приоритет выше - сначала подставляется bbb, а потом уже bbb заменяется на 5, и должно в итоге быть не так:

    int aaa5 = 5; //неправильно (*)

а так:

    int aaabbb = 5; //правильно (**)

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

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