Скачать MetaTrader 5

нужен кусок кода...

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Следи за новостями. Заходи на официальный канал нашей компании!
vados73
16
vados73 2010.12.20 04:10 

Доброго времени суток!

Кто-нибудь может подсказать кусок кода, позволяющий совершать определенные действия, например, каждые 10 мин.

Владимир Тезис
4266
Владимир Тезис 2010.12.20 04:23  

Если (поступил сигнал начать отсчёт очередной 10-ти минутки), то {

1. Посмотреть текущее время

2. Проверить, а ни прошло ли 10 минут (сравнить со стартовым, ранее запомненным).

3. Если прошло, то выполнить действие и снова запомнить, уже новое стартовое время.

}

Если не нужно, чтоб советник что-то делал в течение этих 10 минут, то можно воспользоваться всего одной функцией Sleep(), но я не рекомендовал бы такой способ.

vados73
16
vados73 2010.12.20 04:34  
drknn:

Если (поступил сигнал начать отсчёт очередной 10-ти минутки), то {

1. Посмотреть текущее время

2. Проверить, а ни прошло ли 10 минут (сравнить со стартовым, ранее запомненным).

3. Если прошло, то выполнить действие и снова запомнить, уже новое стартовое время.

}

Если не нужно, чтоб советник что-то делал в течение этих 10 минут, то можно воспользоваться всего одной функцией Sleep(), но я не рекомендовал бы такой способ.


порядок действий понятен, затруднение вызывает именно проверка... я не совсем понимаю каким образом можно использовать стандартные функции даты и времени и как можно прибавить 10 минут к уже полученному значению?
Владимир Тезис
4266
Владимир Тезис 2010.12.20 05:56  

Объявляем перемнную

datetime StartTime=0;

Можно в блоке инициализации добавочно прописать

StartTime=0;

Затем в старте советника пишем:

if(StartTime=0){
StartTime=TimeCurrent();// устанавливаем счётчик времени в стартовое состояние
// вычисляем, сколько секунд в 10 минутах
// 60 секунд - это одна минута, 60*10 = 600 секунд в 10 минутах
}
else{
if(TimeCurrent()-StartTime>=600){// Прошло 10 минут
StartTime=TimeCurrent();// устанавливаем снова счётчик времени в стартовое состояние, после чего:
// выполняем какие-то действия
}
}

igor
1144
igor 2010.12.20 06:02  
Вам нужен GetTiickCount() к нему прибавляйте(вычитайте) свои 10 минут (10*60*100) . Можно время как таковое и не использовать.
vados73
16
vados73 2010.12.20 06:57  
благодарю за ответы ))
Vladyslav Goshkov
2067
Vladyslav Goshkov 2010.12.20 08:14  
zhuki:
Вам нужен GetTiickCount() к нему прибавляйте(вычитайте) свои 10 минут (10*60*100) . Можно время как таковое и не использовать.

int GetTickCount( ) 
Функция GetTickCount() возвращает количество миллисекунд, прошедших с момента старта системы. 
Счетчик ограничен разрешающей способностью системного таймера. Так как время хранится как 
беззнаковое целое, то он переполняется каждые 49.7 дней. 

для автономных систем может возникнуть проблема - при переполнении может быть сбой в определении периодичности.

Владимир Тезис
4266
Владимир Тезис 2010.12.20 16:10  
zhuki:
Но,выше приведённый кусок кода может выдавать неправильный отсчёт 1 раз в сутки. А через GetTickCount() один раз за 50 дней. При необходимости нужно ещё одну проверку организовать.

А вот это уже действительно интересно. Смоделируйте пожалуйста ошибку, которую может мой код выдать раз в сутки. Если не трудно. Ну, хотя бы словестно...
igor
1144
igor 2010.12.20 16:11  
drknn:

А вот это уже действительно интересно. Смоделируйте пожалуйста ошибку, которую может мой код выдать раз в сутки. Если не трудно. Ну, хотя бы словестно...
Пошутил.Прошу прощения.
Artem Titarenko
3931
Artem Titarenko 2010.12.20 19:25  
drknn:

А вот это уже действительно интересно. Смоделируйте пожалуйста ошибку, которую может мой код выдать раз в сутки. Если не трудно. Ну, хотя бы словестно...


Он может и больше чем раз в сутки ошибиться.

При переинициализации эксперта

Владимир Тезис
4266
Владимир Тезис 2010.12.20 22:15  
StatBars:


Он может и больше чем раз в сутки ошибиться.

При переинициализации эксперта


При переинициализации счётчик обнулится (если туда его сунуть). Да и вряд ли трейдер будет выполнять ккие-то критиеские задачи каждые 10 минут.
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий