Если (поступил сигнал начать отсчёт очередной 10-ти минутки), то {
1. Посмотреть текущее время
2. Проверить, а ни прошло ли 10 минут (сравнить со стартовым, ранее запомненным).
3. Если прошло, то выполнить действие и снова запомнить, уже новое стартовое время.
}
Если не нужно, чтоб советник что-то делал в течение этих 10 минут, то можно воспользоваться всего одной функцией Sleep(), но я не рекомендовал бы такой способ.
Если (поступил сигнал начать отсчёт очередной 10-ти минутки), то {
1. Посмотреть текущее время
2. Проверить, а ни прошло ли 10 минут (сравнить со стартовым, ранее запомненным).
3. Если прошло, то выполнить действие и снова запомнить, уже новое стартовое время.
}
Если не нужно, чтоб советник что-то делал в течение этих 10 минут, то можно воспользоваться всего одной функцией Sleep(), но я не рекомендовал бы такой способ.
порядок действий понятен, затруднение вызывает именно проверка... я не совсем понимаю каким образом можно использовать стандартные функции даты и времени и как можно прибавить 10 минут к уже полученному значению?
Объявляем перемнную
datetime StartTime=0;
Можно в блоке инициализации добавочно прописать
StartTime=0;
Затем в старте советника пишем:
if(StartTime=0){
StartTime=TimeCurrent();// устанавливаем счётчик времени в стартовое состояние
// вычисляем, сколько секунд в 10 минутах
// 60 секунд - это одна минута, 60*10 = 600 секунд в 10 минутах
}
else{
if(TimeCurrent()-StartTime>=600){// Прошло 10 минут
StartTime=TimeCurrent();// устанавливаем снова счётчик времени в стартовое состояние, после чего:
// выполняем какие-то действия
}
}
Вам нужен GetTiickCount() к нему прибавляйте(вычитайте) свои 10 минут (10*60*100) . Можно время как таковое и не использовать.
int GetTickCount( ) Функция GetTickCount() возвращает количество миллисекунд, прошедших с момента старта системы. Счетчик ограничен разрешающей способностью системного таймера. Так как время хранится как беззнаковое целое, то он переполняется каждые 49.7 дней.
для автономных систем может возникнуть проблема - при переполнении может быть сбой в определении периодичности.
Но,выше приведённый кусок кода может выдавать неправильный отсчёт 1 раз в сутки. А через GetTickCount() один раз за 50 дней. При необходимости нужно ещё одну проверку организовать.
А вот это уже действительно интересно. Смоделируйте пожалуйста ошибку, которую может мой код выдать раз в сутки. Если не трудно. Ну, хотя бы словестно...
А вот это уже действительно интересно. Смоделируйте пожалуйста ошибку, которую может мой код выдать раз в сутки. Если не трудно. Ну, хотя бы словестно...
А вот это уже действительно интересно. Смоделируйте пожалуйста ошибку, которую может мой код выдать раз в сутки. Если не трудно. Ну, хотя бы словестно...
Он может и больше чем раз в сутки ошибиться.
При переинициализации эксперта
Он может и больше чем раз в сутки ошибиться.
При переинициализации эксперта
При переинициализации счётчик обнулится (если туда его сунуть). Да и вряд ли трейдер будет выполнять ккие-то критиеские задачи каждые 10 минут.

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Доброго времени суток!
Кто-нибудь может подсказать кусок кода, позволяющий совершать определенные действия, например, каждые 10 мин.