Обязательно проверим. Спасибо за локализацию.
Ещё раз спасибо за код. Проблему устранили. Это - наша ошибка, а не Ваша
Пожалуйста. Я ведь тоже должен приносить какую-то пользу ;)
Я не понаслышке знаю, что такое разобрать 30 кБ чужого кода, чтобы докопаться до истины.
Отдельное спасибо за Ваш труд, а я готов всегда помогать по мере возможности.
Я не понаслышке знаю, что такое разобрать 30 кБ чужого кода, чтобы докопаться до истины.
Отдельное спасибо за Ваш труд, а я готов всегда помогать по мере возможности.
Я уже отправил форму с ошибко - ерунда с рекурсией и параемтрами массива.
Сейчас сижу и думаю как переделать удобный рекурсивный вызов в индикаторе на какое-нибудь извращение и надеюсь на скорый выход следующего билда с исправлениями :-(
Ниже - текст индикатора с комментариями.
Сейчас сижу и думаю как переделать удобный рекурсивный вызов в индикаторе на какое-нибудь извращение и надеюсь на скорый выход следующего билда с исправлениями :-(
Ниже - текст индикатора с комментариями.
/* Бага компилятора: несовместимость рекурсии и элемента массива в параметре. Пример приведен ниже. В билде 186 всё работало "на ура" ... Но больше всего поразило то, что ошибка проявляется даже отсутствии рекурсии в резльтирующем коде (линкер убирает рекурсивную функцию как неиспользуемую). Эффект залючается в зависании териминала при попытке присоединения индикатора к графику. Для устранения эффекта в примере достаточно либо закомментировать рекурсивный вызов либо вместо строчки с комментарием "freezes indicator" раскомментировать строчку "works good" Далее пример: */ #property indicator_separate_window #property indicator_buffers 1 //---- indicator buffers double buffer1[]; string test1[3]; //-- Initialization ---------------------------------- int init() { //---- additional buffers are used for counting IndicatorBuffers(1); //---- indicators SetIndexStyle(0,DRAW_LINE); SetIndexBuffer(0,buffer1); for(int p=0; p < 3; p++) { test1[p] = "s" + p; } return(0); } //-- Finalization ---------------------------------- int deinit() { return(0); } //-- Recursive function ---------------------------- int SelfCall() { if(false) return( SelfCall() ); return (1); } //-- Called function ------------------------------- int Sub1(string sParam) { Print("Sub1 called!!"); return( StringLen(sParam) ); } //-- Callee function ---------------------------------- int Sub2(int i1, int i2, int i3) { Print("Sub2 called"); string s = test1[i1]; int retVal; //retVal = Sub1(s); // works good retVal = Sub1( test1[i1]); //freezes indicator return( retVal ); } //-- Indicator start ---------------------------------- int start() { int i = Sub2(0,0,0); //---- return(0); } //+------------------------------------------------------------------+
На всякий случай, чтоб никто лишний раз голову не ломал,почему у него всё валится. :-)
УРА!
Наткнулся на новость про обновление билда:
"Выпущен мобильный терминал MetaTrader 4 Mobile build 188"
Скачал - поставил - всё заработало.
Спасибо Metaquotes за оперативное исправление! :-)
Буду искать следующую ошибку ;-)))
Наткнулся на новость про обновление билда:
"Выпущен мобильный терминал MetaTrader 4 Mobile build 188"
Скачал - поставил - всё заработало.
Спасибо Metaquotes за оперативное исправление! :-)
Буду искать следующую ошибку ;-)))
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
В общем, после несколькочасовой локализации проблемы имеем:
Компиляция такого эксперта проходит без проблем, но попытка его тестирования приводит к смерти терминала. При этом, если в start() заменить GetDeltaClose2() на GetDeltaClose1(), то вместо зависания имеем
В общем, большой радости мне это все не принесло... Хотелось бы комментариев - может, я где-то ошибаюсь?..