Скачать MetaTrader 5

Порядок выполнения init() - страница 4

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Alexey Viktorov
16932
Alexey Viktorov  
Vinin:

Проблема в i? Вы хотите считать данные которые еще не загрузились. Если откроете другой график. Сперва на нем переключитесь на нужный тайм-фрейм, потом на основном (сделав паузу в несколько секунд), проблема исчезнет.

А так Вы обращаетесь к данным, а они пока только загружаются. И естественно будут проблемы.

Хотя можно сделать цикл по обработке ошибки 4066, может и поможет


Цикл проверки ошибки 4066 двумя постами выше. Не помогает.
Alexey Viktorov
16932
Alexey Viktorov  

Всем мои извинения за беспокойство и спасибо за участие. Проблема была в усталости.

Цикл поиска фрактала организован

while(FrUp == 0)

FrUp объявлена на глобальном уровне. В init() обнулял ВСЕ переменные кроме FrUp...

Dmitry Fedoseev
47334
Dmitry Fedoseev  
AlexeyVik:

К сожалению как я и предположил это не помогло. Вот что я добавил в init()


datetime d[]; int err;
for(int i = 0; i <=5; i++)
{
ArrayCopySeries(d, MODE_TIME, Symbol(), Period());
err = GetLastError();
if(err > 0)
{
Print("GetLastError() == ", err);
continue;
}
else
{
Print(Period());
break;
}
}

Печатает только период.

Может я что-то не так сделал в этой проверке?

Лучше покажите вы, хоть одно место которое соответствует тому, что я советовал?
Alexey Viktorov
16932
Alexey Viktorov  

В Вашем примере если ошибка 4066 то выход из функции. И получается без разницы есть ошибка или нет выход из init() и выполнение start().

Но поскольку мне надо было сделать проверку в init() то я и сделал ожидание отсутствия ошибки.

А поставил цикл for() а не while() потому, что побоялся зациклить и повесить терминал.

Ну как-бы там ни-было, ещё раз большое спасибо за участие, проблема оказалась не там где я её искал.

И буду благодарен если, в свете моих пояснений, ответите почему так, как я использовал Ваш совет, не правильно.

Yuriy Zaytsev
16523
Yuriy Zaytsev  
AlexeyVik:

Всем мои извинения за беспокойство и спасибо за участие. Проблема была в усталости.

Цикл поиска фрактала организован

while(FrUp == 0)

FrUp объявлена на глобальном уровне. В init() обнулял ВСЕ переменные кроме FrUp...


Вот как раз дело в том, что без кода помочь не могли, в основном телепатировали..

Alexey Viktorov
16932
Alexey Viktorov  
YuraZ:

Вот как раз дело в том, что без кода помочь не могли, в основном телепатировали..


Спасибо что ответили не позже чем через год.

И ещё хочу заметить, если есть желание помочь, то не надо искать ошибки в чужом коде если об этом не просят, надо просто ответить на заданный вопрос.

А вопрос был абсолютно точно сформулирован "как выполняется ф-ия init() при переключении ТФ?"

И достаточно было ответа "Абсолютно так-же как и при запуске советника".

Дальше дискутировать по этому вопросу я не намерен. Лучше промолчите, как молчали 5 месяцев.

Всеволод
648
Всеволод  

И достаточно было ответа "Абсолютно так-же как и при запуске советника".

Давно видел эту тему, но так и не полюбопыствовал "А какие еще были варианты выполнения функции?"

- Выполняется, но не совсем?

Yuriy Zaytsev
16523
Yuriy Zaytsev  
AlexeyVik:

Спасибо что ответили не позже чем через год.

И ещё хочу заметить, если есть желание помочь, то не надо искать ошибки в чужом коде если об этом не просят, надо просто ответить на заданный вопрос.

А вопрос был абсолютно точно сформулирован "как выполняется ф-ия init() при переключении ТФ?"

И достаточно было ответа "Абсолютно так-же как и при запуске советника".

Дальше дискутировать по этому вопросу я не намерен. Лучше промолчите, как молчали 5 месяцев.

в общем то без злобы и сарказма:

а почему Вы считаете что писал именно Вам...

- писалось для для тех кто просто форум читает - не все оформляют вопрос достаточно ясно ( Вы оформили хорошо - но при этом Вас все равно не сразу поняли )

когда описываешь проблему или читаешь - автор исходит из своего восприятия читатель из своего

То что ответил через 5 месяцев - да хоть через год... облако сохранит ... кто то прочитает

насчет Лучше промолчать - Хочу и пишу - Вас не спрошу.. это форум, никто не запрещает поднять тему хоть 2006 года ... тему увидел не сразу ....

Тема мне интересная - в свое время на эти грабли наступал... проблема близка - увидел бы 5 месяцев назад - помог бы


Vinin:

Повторюсь по другому.

Без кода можно говорить только об общем.

Частное решение найти не удастся

Хотя, если нужно общее, то в статьях все это есть


согласен c Vinin

------

Vinin:

Проблема в i? Вы хотите считать данные которые еще не загрузились. Если откроете другой график. Сперва на нем переключитесь на нужный тайм-фрейм, потом на основном (сделав паузу в несколько секунд), проблема исчезнет.

А так Вы обращаетесь к данным, а они пока только загружаются. И естественно будут проблемы.

Хотя можно сделать цикл по обработке ошибки 4066, может и поможет

Это может иметь место при- если ТФ не загружен

скорее всего у автора топика ТФ зачитан - проблема как обычно в логической ошибке - ( это мы сейчас уже знаем )

AlexeyVik:
Тем не менее принты из init() идут при переключении ТФ. Значит выполняется... или это не полное выполнение инициализации?

полное

---

то что init выполняется абсолютно так же - легко понять поставив Print в init()

Yuriy Zaytsev
16523
Yuriy Zaytsev  
_new-rena:
init() индикатора и советника работают по разному. Индикатор будет проходить переинициализацию каждый раз, а советник - только при запуске.

НЕ ВЕРНО!

при переключении ТФ Init тоже будет выполнятся ... в новых версиях Init() теперь называется как OnInit()
_new-rena:
это вопрос и для меня. но я не использую принты
а зря - это самый постой способ понять логику и искать ошибки
Alexey Viktorov
16932
Alexey Viktorov  
splxgf:

Давно видел эту тему, но так и не полюбопыствовал "А какие еще были варианты выполнения функции?"

- Выполняется, но не совсем?

Да никаких вариантов не-было, вот и задал вопрос. А вдруг что-то не так как я понимал? Но оказалось всё гораздо проще. Ладно. Это уже пройденный этап.
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий