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

 
В профиле обнаружил старый номер телефона которого уже нет и давно, хотел поменять, но там нужно подтверждение путем смс на старый номер, как быть? сервисдеск писать, может есть другие варианты?
 
BlackTomcat:
Я, конечно, многого не понимаю, но почему-то думаю, что созданные разными "хозяевами" копии индикатора, хоть даже и с одинаковыми параметрами и наложенные на один и тот же график, будут иметь разные хэндлы. И они, в принципе, могут не знать, и не должны знать об уже существующей копии индикатора. При отрисовке они просто будут накладываться друг на друга.
Вполне допускаю, что я ошибаюсь. Но логика подсказывает, что должно быть так, как написано в предыдущем абзаце.

Я конечно не разработчик из MQ, но насколько мне объясняли этот процесс, в пятерке как раз сделано эффективное кэширование индюков, поэтому "одинаковый" индюк всегда будет только один, а несколько "хозяев" получат ссылку на него. Может быть хэндлы и будут отличаться - я не проверял - но внутри это будет одна и та же сущность. Никто и не говорил о том, что "они должны знать об уже существующей копии" - пожалуйста не домысливайте. Совершенно точно, никто кроме "хозяина" не знает свои индикаторы, а для индикатора поддерживается счетчик ссылок на него из разных "хозяев", но он не знает хозяев.

Как показывает практика, логика у разных людей - разная. Например, очень часто моя логика не совпадает с логикой MQ, но здесь я просто рассказываю то, что слышал от них.

 
Stanislav Korotky:

Я конечно не разработчик из MQ, но насколько мне объясняли этот процесс, в пятерке как раз сделано эффективное кэширование индюков, поэтому "одинаковый" индюк всегда будет только один, а несколько "хозяев" получат ссылку на него. Может быть хэндлы и будут отличаться - я не проверял - но внутри это будет одна и та же сущность. Никто и не говорил о том, что "они должны знать об уже существующей копии" - пожалуйста не домысливайте. Совершенно точно, никто кроме "хозяина" не знает свои индикаторы, а для индикатора поддерживается счетчик ссылок на него из разных "хозяев", но он не знает хозяев.

Как показывает практика, логика у разных людей - разная. Например, очень часто моя логика не совпадает с логикой MQ, но здесь я просто рассказываю то, что слышал от них.

Действительно, то, о чём Вы написали, написано прям в Документации:

Все функции типа iMA, iAC, iMACD, iIchimoku и т.п., создают в глобальном кеше клиентского терминала копию соответствующего технического индикатора. Если копия индикатора с этими параметрами уже существует, то новая копия не создается, а увеличивается счетчик ссылок на данную копию.
Только вот интересно, "глобальный кэш клиентского терминала" включает в себя, например, Тестер? А то я могу один и тот же советник с одинаковыми индикаторами одновременно гонять и в терминале (на счёте) и в тестере (на истории), при этом я не уверен, что расчётные буферы у них будут совпадать. Хотя, если просчитать на всю глубину истории, хранимой в клиентском терминале, то могут.
 
A100:

Удалось составить проверочный скрипт близкий к исходной программе с ошибкой при выполнении

Результат: invalid function pointer call in 'Script2.mq5'

build 1405. Сама по себе эта ошибка осталась - переместившись в другую часть программы - разберусь позже

Но появились новые, которых раньше не было

typedef int (*fn)();
class A {
public:
        A() { a = &this; ::ArrayResize( f, 1 ); f[ 0 ] = f0; }
        virtual int g0() { return 0; }
        static  int f0() { return a.g0(); }
        static A* a;
        fn f[];
};
A* A::a;
void OnStart() { A b; }
Результат: invalid EX5 file (8)
 
Как сделать, чтобы в отладке по Shift+F9 были видны элементы массива?
 
fxsaber:
Как сделать, чтобы в отладке по Shift+F9 были видны элементы массива?
Показ элементов массивов пока не поддерживается
 
Renat Fatkhullin:

Фактически в 99% случаев вызов IndicatorRelease является логической ошибкой программиста.

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

Это же очень просто понять.

Правильно ли я понимаю, что при использовании iCustom вместо IndicatorCreate пользователь перекладывает ответственность за IndicatorRelease на универсальное (поэтому не оптимальное) решение разработчиков?

В котором созданные индикаторы хранятся некоторые время, пока к ним с определенной частотой идет обращение. Если обращения какое-то время нет, то идет принудительное IndicatorRelease. Верно?

Т.е. iCustom оптимальное использовать с точки зрения золотой середины между сложностью реализации и производительностью. Но если хочется максимальной скорости, то лучше постараться сделать все через IndicatorCreate, создав свой более быстрый (не универсальный) алгоритм хранилища индикаторов, зная особенности своего использования индикаторов.

Правильно ли я понял? 

 
fxsaber:

Правильно ли я понимаю, что при использовании iCustom вместо IndicatorCreate пользователь перекладывает ответственность за IndicatorRelease на универсальное (поэтому не оптимальное) решение разработчиков?

В котором созданные индикаторы хранятся некоторые время, пока к ним с определенной частотой идет обращение. Если обращения какое-то время нет, то идет принудительное IndicatorRelease. Верно?

Т.е. iCustom оптимальное использовать с точки зрения золотой середины между сложностью реализации и производительностью. Но если хочется максимальной скорости, то лучше постараться сделать все через IndicatorCreate, создав свой более быстрый (не универсальный) алгоритм хранилища индикаторов, зная особенности своего использования индикаторов.

Правильно ли я понял? 

Нет, неправильно.

Обе функции совершенно равнозначны. И та, и другая функция возвращает хэндл индикатора

 
Slawa:

Нет, неправильно.

Обе функции совершенно равнозначны. И та, и другая функция возвращает хэндл индикатора

IndicatorRelease после iCustom делать надо?

В принципе получается, что вполне возможно MT4-советники запускать в MT5. Для тех, кто не использует внутри другие индикаторы - совсем просто. Использует - повозиться с созданием аналога хранилища MT4-iCustom. Вопросы неподготовки данных тоже решить вполне возможно.

Написать такой переходник и любой MT4-индикатор будет благополучно запускаться в MT5. Но тогда лишится работы Николай Косицын... не, лучше не буду.

 
fxsaber:

IndicatorRelease после iCustom делать надо?

В принципе получается, что вполне возможно MT4-советники запускать в MT5. Для тех, кто не использует внутри другие индикаторы - совсем просто. Использует - повозиться с созданием аналога хранилища MT4-iCustom. Вопросы неподготовки данных тоже решить вполне возможно.

Написать такой переходник и любой MT4-индикатор будет благополучно запускаться в MT5. Но тогда лишится работы Николай Косицын... не, лучше не буду.

ЕМНИП, в Документации написано, что правильнее всего инициализировать (создавать) хэндлы индикаторов в функции OnInit, а выполнять IndicatorRelease в функции OnDeinit. Т.е. всё время, пока советник работает, хэндлы индикаторов остаются актуальными.
Причина обращения: