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

 
Sergei Vladimirov:
Проверил сам. Второй код выполняется в 4 раза быстрее. Всё ясно, вопрос снят.
Не замеряйте только в режиме профилирования/дебага. Там никакого инлайна нет и в помине. Только Release-вариант должен быть.
 
Inv Андрей Иващенко:

Добрый день!

Господа офицеры, подскажите, с чего начать ловлю бага?

Мультивалютный советник. После первой сделки тестер стопится.

Выдаёт ошибку, код которой не могу найти.

Да, тестер отлично работает с начальной даты 2016.05.01. Если эту дату меняю - идет стопинг тестера и ошибка, лог ниже. 

 Помогите пожалуйста! 

Отвечаю сам себе:

Это баг тестера. Пока нужно добавить  хендл любого технического индикатора в OnInit во всем символам, по каким работает советник.

 
Alexey Volchanskiy:

Сами же написали: 

Sergei Vladimirov 2016.09.01 02:53      RU

Проверил сам. Второй код выполняется в 4 раза быстрее. Всё ясно, вопрос снят. 

В следующем комментарии я написал цифры: выигрыш при однократной операции - 1 наносекунда. При оптимизации стратегии по тикам на двухлетнем участке и нескольких тысячах прогонов экономия одной нс, возможно, и имеет смысл. А вот в реальной торговле...
 
A100:

В build 1398 ошибка 'EX5 loading failed' осталась (видимо не была связана с тем примером)

В исправленном build 1400 ошибка в похожем случае теперь воспроизводится как 'pure virtual function call'. А без комментария - нормально

//Script1.mq5
typedef void (*fn)();
#import "Script2.ex5"
        void g( fn );
#import
void h() /*export*/ {} //если export без комментария - нормально
void OnStart() { g( h ); }
//Script2.mq5
#property library
typedef void (*fn)();
void g( fn f ) export { f(); }
 

Нельзя применить :: для разрешения неоднозначности


#import "Script1.ex5"
        void g();
#import "Script2.ex5"
        void g();
#import
typedef void (*fn)();
void OnStart()
{
        Script1::g(); //нормально
        Script2::g(); //нормально
        fn f = Script1::g; //Error
}
 
Inv Андрей Иващенко:

Отвечаю сам себе:

Это баг тестера. Пока нужно добавить  хендл любого технического индикатора в OnInit во всем символам, по каким работает советник.

Причем похоже проблема возникает при получении только первого тика на новом баре, тестер как бы "застревает" и отстаёт еще на 1 бар, то есть эксперт думает что бара еще нет и в визуализации его действительно нет, а спустя пару секунд бар появляется, в случае теста на М1 корректное значение приходит на втором тике (если я правильно понял), надеюсь разработчики исправят это досадный момент поскорее...

добавление:

получается чтобы обойти этот момент сейчас нужно искусственно пропускать первый тик нового бара... 

 
Невозможно на RTS-9.16 BCS-MetaTrader5 сделать отладку советника по CTRL+F5. Тестер пишет
Tester  Leverage 1:1 set error

 
В визуализаторе по F12 происходит переход на следующий тик. Возможно ли в Обзоре рынка указывать время с точностью до миллисекунд? Ведь потиково двигаемся же.
 
Если запустить бэктест с 1-го числа месяца, то первый тик будет с нулевым объемом. В других ситуациях ВСЕ тики будут НЕ "нулевые".
 
Первый тик бэктеста из БУДУЩЕГО - тик, в котором bid/ask не нулевые.