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

 
A100:

Тогда баг еще и в том, что для 32-разрядных версий (у меня именно такая) выполнение без ошибок. invalid pointer - только если дополнить класс членом, например int i

Видимо, Вы на MT4 тестили, но там и билд пониже.

 
Kirill Belousov:

Баг.

Не выдается ошибка 4200 при создании дублирующегося объекта на НЕ ТЕКУЩЕМ  (которую-таки дает на текущем - [см. "CURRENT CHART" в логе]) ,

а так же выяснено, что поиск объекта на НЕ ТЕКУЩЕМ чарте занимает до 500 раз больше времени, чем поиск на текущем.

а :) , потому что оказывается, что не у меня одного такое

Объект не создаётся сразу по вызову функции. Посылается асинхронная команда чарту. Для своего графика у нас есть возможность произвести предварительную проверку. Для чужого графика такой возможности нет - вернее, есть, но она очень дорогая.

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

 
fxsaber:

Видимо, Вы на MT4 тестили, но там и билд пониже.

MT5\1653\32\Win10 - у меня доходит до строки //Результат: false

Если в Вас тоже 32-разрядная и возникает invalid pointer - тогда вообще какая то случайная ошибка  

СервисДеск пишет что: Функция f пустая и вызов вырезается оптимизатором, как и вызов оператора копирования

Но если

        void f() { Print( __FUNCTION__ ); }

то Результат:

2017.09.26 14:03:55.853 Demo (GBPUSD,M15) A::f
2017.09.26 14:03:55.853 Demo (GBPUSD,M15) false
по сути не меняется

 
A100:

Если в Вас тоже 32-разрядная - тогда вообще какая то случайная ошибка

Нет, запускал Win7x64.

СервисДеск пишет что: Функция f пустая и вызов вырезается оптимизатором, как и вызов оператора копирования из п. 1

Но если

то ничего не меняется

Сталкивался, когда СД быстро отвечают без проверок. И для 90% заявок это, наверное, правильно, т.к., скорее всего, большинство заявок не из-за багов, а по незнанию. Прошу внимательнее посмотреть - срабатывает.

 

Баг сайта со ссылками.

Если форумное сообщение было перенесено модератором в другую ветку, то в профиль-поиске "Все сообщения" это сообщение ссылается на старое место. Соответственно, не перейти на него.

 
A100:

MT5\1653\32\Win10 - у меня доходит до строки //Результат: false

Если в Вас тоже 32-разрядная и возникает invalid pointer - тогда вообще какая то случайная ошибка  

СервисДеск пишет что: Функция f пустая и вызов вырезается оптимизатором, как и вызов оператора копирования

Но если

то Результат:

2017.09.26 14:03:55.853 Demo (GBPUSD,M15) A::f
2017.09.26 14:03:55.853 Demo (GBPUSD,M15) false
по сути не меняется

Дополню, функция f не содержит адресации к полям объекта, поэтому для функции f  указатель на объект (this) не нужен.
Оптимизатор удаляет ненужное разыменовывание хендла (напомню, в MQL указатель это хендл) в указатель на объект, т.к. он (указатель)  не используется внутри f

 
Ilyas:

Дополню, функция f не содержит адресации к полям объекта, поэтому для функции f  указатель на объект (this) не нужен.
Оптимизатор удаляет ненужное разыменовывание хендла (напомню, в MQL указатель это хендл) в указатель на объект, т.к. он (указатель)  не используется внутри f

Ясно, работа с f, как со static. Но как объяснить, что у одного проходит выполнение, а у другого - прерывается?

 
В самом деле, удобно было бы хотя бы такое
input string Value = _MarketWatch; // Выпадающий список (а-ля enum) символов из Обзора рынка

Forum on trading, automated trading systems and testing trading strategies

ENUM Symbol list as an INPUT

Martin Nohejl, 2017.09.26 13:01

Hi, I am going to do following:

I want to have symbol as an input parameter, so I want an input variable (enum) from which I will choose the right symbol, like this:

I have done this by this code:

enum ENUM_SYMBOL
   { 
    EURUSD=0, 
    GPBUSD=1, 
    USDCHF=2
   };

That works for me perfectly. But I would like to fullfill the enum dynamicaly by the whole list of symbols (SymbolsTotal(0);).

Somehow probably by code:

int a = SymbolsTotal(0);
for(int i=0; i!=a;i++){
....
}
 
fxsaber:

Ясно, работа с f, как со static. Но как объяснить, что у одного проходит выполнение, а у другого - прерывается?

Скорее всего Вы запускаете отладку (F5), а A100 сначала компилирует (F7) и потоми накидывает на чарт.

При компиляции под отладку оптимизатор только удаляет явно неиспользуемый код, все остальные оптимизации не проводятся.
 
Ilyas:
Скорее всего Вы запускаете отладку (F5), а A100 сначала компилирует (F7) и потоми накидывает на чарт.

При компиляции под отладку оптимизатор только удаляет явно неиспользуемый код, все остальные оптимизации не проводятся.

Эту особенность учел сразу. Сейчас еще раз себя перепроверил.

Release-вариант:

Test (EURUSD,H1)        invalid pointer access in 'Test.mq5' (9,11)
Причина обращения: