Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Нет, я не использую sleep() или messagebox(), но я делаю много работы в функции MyInit(), которая занимает около 5 секунд.
Вы можете увидеть это в лог-файле:
2013.11.15 14:35:32 Test reduced 1180990: USDJPY M15 DebugStart: InitialHistoryGapClosed
2013.11.15 14:35:32 Тест уменьшен 1180990: USDJPY M15 DebugMyInit begin: <---------- работа начинается
2013.11.15 14:35:32 Тест уменьшен 1180990: USDJPY M15 DebugMyInit InitialMyInitCalls: 0 IndexCount: 1 nach CreateHistory()
2013.11.15 14:35:33 Тест уменьшен 1180990: USDJPY M15 DebugMyInit InitialMyInitCalls: 0 IndexCount: 2 nach CreateHistory()
2013.11.15 14:35:34 Тест уменьшен 1180990: USDJPY M15 DebugMyInit InitialMyInitCalls: 0 IndexCount: 3 nach CreateHistory()
2013.11.15 14:35:35 Тест уменьшен 1180990: USDJPY M15 DebugMyInit InitialMyInitCalls: 0 IndexCount: 4 nach CreateHistory()
2013.11.15 14:35:35 Тест уменьшен 1180990: USDJPY M15 DebugMyInit InitialMyInitCalls: 0 IndexCount: 5 nach CreateHistory()
2013.11.15 14:35:36 Тест уменьшен 1180990: USDJPY M15 DebugMyInit InitialMyInitCalls: 0 IndexCount: 6 nach CreateHistory()
2013.11.15 14:35:37 Тест уменьшен 1180990: USDJPY M15 DebugMyInit InitialMyInitCalls: 0 IndexCount: 7 nach CreateHistory()
2013.11.15 14:35:37 Тест уменьшен 1180990: USDJPY M15 DebugMyInit return InitialMyInitCalls: 0 IndexCount: 8 <---------- работа завершена
2013.11.15 14:35:37 Тест уменьшен 1180990: USDJPY M15 DebugStart: последний возврат в InitialGapFound
Но почему после этого MT4 зацикливается?
Вы все говорите о бесконечных циклах, но никто не интересуется, что делает CreateHistory(). Судя по логу, она появляется только в последнем запуске start().
Я предположил, что это какая-то функция сохранения истории... если ОП захочет показать ее, он покажет... Я предполагаю, что он этого не делает, и даже если он это сделает, это, вероятно, не поможет нам помочь ему. Самый быстрый способ - это опубликовать его код, чтобы кто-то мог посмотреть на него свежим взглядом. ... . .
mt4forum 2013.11.16 11:14
Но почему после этого MT4 зацикливается?
Судя по вашему журналу, похоже, что он уже был в цикле. Что происходит после того, как он доходит до 8? Был ли он в цикле, если да, то как вы узнали, что он вышел из цикла? Вернулся ли он в init()?
Вы добавили Print("Start Started"); и это не появилось в лог-файле, значит, он так и не вошел в функцию start(). Это говорит о том, что он так и не вышел из функции init(). Добавьте больше утверждений Print() и сузьте круг поиска.
Прежде всего, спасибо за большой интерес и извините за поздний ответ.
Я отвечу на различные комментарии в следующих записях.
Это не так, но вы испортите интерфейсный поток и MT4 заблокируется ... разве вы не можете делать то, что вы делаете в советнике?
Я запустил программу как советник. Она либо зависает, либо аварийно завершает работу MT4.
Я запустил программу как советник. Она либо зависает, либо аварийно завершает работу MT4.
Вы все говорите о бесконечных циклах, но никто не интересуется, что делает CreateHistory(). Судя по логу, она появляется только в последнем запуске start().
CreateHistory() выполняет большой объем работы. Она перебирает валютные пары и таймфреймы и генерирует автономные графики.
Но лог-файл показывает, что она завершается правильно.
Судя по вашему лог-файлу, похоже, что он уже был в цикле. Что происходит после того, как он достигает 8? Был ли он в цикле, если да, то как вы узнали, что он вышел из цикла? Вернулся ли он в init()?
Вы добавили Print("Start Started"); и это не появилось в лог-файле, значит, он так и не вошел в функцию start(). Это говорит о том, что он так и не вышел из функции init(). Добавьте больше операторов Print() и сузьте круг поиска.
После того как он дойдет до 8, он корректно возвращается в init().
Об этом свидетельствует следующая строка в журнале. "DebugMyInit return ..." - последняя отладочная строка в MyInit().
2013.11.15 12:33:22 Test reduced 395052: USDJPY M15 DebugMyInit return InitialMyInitCalls: 0 IndexCount: 8
Я использую свою собственную функцию print для создания лог-файла. Print("Start Started") не печатает в этот лог-файл.
Запись
2013.11.15 12:33:22 Test reduced 395052: USDJPY M15 DebugStart: last return in InitialGapFound
показывает, что он вышел из функции init().
Если я могу доверять, что моя отладочная функция правильно записывает всю информацию, то лог-файл говорит нам, что после последнего запуска start(),
start() завершается и больше не вызывается. В этом и заключается проблема.