Лучше так:
void start() { while(!IsStopped()) { RefreshRate(); ... //код эксперта Sleep(1000); } }
Все именно так и делают.
solandr писал (а):
Все именно так и делают.
Все именно так и делают.
Я делаю изящнее:
extern int NumberAccount = 0; // Номер торгового счёта extern double IntUpdate = 0; // Интервал обновления в секундах (0-по тикам) //+----------------------------------------------------------------------------+ //| expert initialization function | //+----------------------------------------------------------------------------+ void init() { if (IsExpertEnabled()) Message("Советник будет запущен следующим тиком"); else Message("Отжата кнопка \"Разрешить запуск советников\""); } //+----------------------------------------------------------------------------+ //| expert start function | //+----------------------------------------------------------------------------+ void start() { if (NumberAccount>0 && NumberAccount!=AccountNumber()) { Message("ЗАПРЕЩЕНА работа со счётом "+AccountNumber()); return; } if (IntUpdate<=0) MainBody(); else { while (IsExpertEnabled() && !IsStopped()) { if (IsConnected()) { MainBody(); Sleep(1000*IntUpdate); } else Comment("ОТСУТСТВУЕТ связь с торговым сервером\n", "Советник ОСТАНОВЛЕН"); } Message("Отжата кнопка \"Разрешить запуск советников\"\n"+"Советник ОСТАНОВЛЕН"); } } //+----------------------------------------------------------------------------+ //| Основное тело эксперта | //+----------------------------------------------------------------------------+ void MainBody() { } //+----------------------------------------------------------------------------+ //| Вывод сообщения в коммент и в журнал | //+----------------------------------------------------------------------------+ void Message(string m) { Comment(m); if (StringLen(m)>0) Print(m); }
Посмотрите здесь: Синхронизация работы экспертов, скриптов и индикаторов .

Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Пока пришло в голову такое решение, зациклить функцию start:
void start()
{
while(true)
{
refreshRate();
... //код эксперта
sleep(1000);
}
}
Но может есть лучшее решение и более правильное?