в тестере слип не работает - об этом написано в статье "Особенности тестирования"
а в реале работает нормально
а в реале работает нормально
А вы представьте - что бы было, если бы в тестере реально работал Sleep.
Ну дык, не реально же, конечно, а вертуально. Задерживать на те секунды, что возвращает CurTime() - там-то время в режиме тестирования вертуально!...
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
//+------------------------------------------------------------------+ //| Sample-0002.mq4 | //| Copyright © 2005, Registr | //| Exsys@pochta.ru | //+------------------------------------------------------------------+ #property copyright "Copyright © 2005, Registr" #property link "Exsys@pochta.ru" datetime PrevTime; int CountBars; //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() {//1 //---- //---- PrevTime=Time[0]; CountBars=0; Print("Выполнен блок init"); return(0); }//1 //+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ int deinit() {//1 //---- //---- Print("Выполнен блок deinit"); return(0); }//1 //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() {//1 datetime InitialTime=CurTime();int i=0;bool NewBar=false; //+------------------------------------------------------------------+ //| Модуль счетчика баров //+------------------------------------------------------------------+ //Отфильтрововаем бары от ценовых тиков if (Time[0]!=PrevTime) {//2 CountBars++; NewBar=True; PrevTime=Time[0]; }//2 //+------------------------------------------------------------------+ //| Конец модуля счетчика баров //+------------------------------------------------------------------+ if((CountBars==1)&&(NewBar)) {//3 while(i<10) {//4 i++; Print("CurTime: "+CurTime()+" InitialTime: "+InitialTime+" i: "+i); Sleep(10000); }//4 }//3 return(0); }//1 //+------------------------------------------------------------------+результат работы в реале:
05:42:05 Sample-0002 EURUSD,M1: CurTime: 1135741329 InitialTime: 1135741329 i: 1
05:42:15 Sample-0002 EURUSD,M1: CurTime: 1135741338 InitialTime: 1135741329 i: 2
05:42:25 Sample-0002 EURUSD,M1: CurTime: 1135741347 InitialTime: 1135741329 i: 3
05:42:35 Sample-0002 EURUSD,M1: CurTime: 1135741354 InitialTime: 1135741329 i: 4
05:42:45 Sample-0002 EURUSD,M1: CurTime: 1135741367 InitialTime: 1135741329 i: 5
05:42:55 Sample-0002 EURUSD,M1: CurTime: 1135741370 InitialTime: 1135741329 i: 6
05:43:05 Sample-0002 EURUSD,M1: CurTime: 1135741387 InitialTime: 1135741329 i: 7
05:43:15 Sample-0002 EURUSD,M1: CurTime: 1135741391 InitialTime: 1135741329 i: 8
05:43:25 Sample-0002 EURUSD,M1: CurTime: 1135741405 InitialTime: 1135741329 i: 9
05:43:35 Sample-0002 EURUSD,M1: CurTime: 1135741416 InitialTime: 1135741329 i: 10
... в тестере:
05:54:38 Sample-0002: loaded successfully
05:54:44 Sample-0002 started for testing
05:54:44 Sample-0002: Выполнен блок init
05:54:44 2004.06.16 19:15 Sample-0002: CurTime: 1087413300 InitialTime: 1087413300 i: 1
05:54:44 2004.06.16 19:15 Sample-0002: CurTime: 1087413300 InitialTime: 1087413300 i: 2
05:54:44 2004.06.16 19:15 Sample-0002: CurTime: 1087413300 InitialTime: 1087413300 i: 3
05:54:44 2004.06.16 19:15 Sample-0002: CurTime: 1087413300 InitialTime: 1087413300 i: 4
05:54:44 2004.06.16 19:15 Sample-0002: CurTime: 1087413300 InitialTime: 1087413300 i: 5
05:54:44 2004.06.16 19:15 Sample-0002: CurTime: 1087413300 InitialTime: 1087413300 i: 6
05:54:44 2004.06.16 19:15 Sample-0002: CurTime: 1087413300 InitialTime: 1087413300 i: 7
05:54:44 2004.06.16 19:15 Sample-0002: CurTime: 1087413300 InitialTime: 1087413300 i: 8
05:54:44 2004.06.16 19:15 Sample-0002: CurTime: 1087413300 InitialTime: 1087413300 i: 9
05:54:44 2004.06.16 19:15 Sample-0002: CurTime: 1087413300 InitialTime: 1087413300 i: 10
05:54:49 2005.05.02 16:39 Sample-0002: Выполнен блок deinit
... видно, что никакой задержки нет. Это что, так и должно быть или опять глюк? В мануале ничего про это не нашёл... Да нет, как выяснилось она просто не работает в тестере:
//+------------------------------------------------------------------+ //| Sample-0002.mq4 | //| Copyright © 2005, Registr | //| Exsys@pochta.ru | //+------------------------------------------------------------------+ #property copyright "Copyright © 2005, Registr" #property link "Exsys@pochta.ru" datetime PrevTime; int CountBars; //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() {//1 //---- //---- PrevTime=Time[0]; CountBars=0; Print("Выполнен блок init"); return(0); }//1 //+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ int deinit() {//1 //---- //---- Print("Выполнен блок deinit"); return(0); }//1 //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() {//1 datetime InitialTime=CurTime();int i=0;bool NewBar=false; //+------------------------------------------------------------------+ //| Модуль счетчика баров //+------------------------------------------------------------------+ //Отфильтрововаем бары от ценовых тиков if (Time[0]!=PrevTime) {//2 CountBars++; NewBar=True; PrevTime=Time[0]; }//2 //+------------------------------------------------------------------+ //| Конец модуля счетчика баров //+------------------------------------------------------------------+ if((CountBars==1)&&(NewBar)) {//3 Print("CurTime: "+CurTime()+" InitialTime: "+InitialTime+" i: "+i); i++; Sleep(2000); Print("CurTime: "+CurTime()+" InitialTime: "+InitialTime+" i: "+i); // while(i<10) // {//4 // i++; // Print("CurTime: "+CurTime()+" InitialTime: "+InitialTime+" i: "+i); // Sleep(10000); // }//4 }//3 return(0); }//1 //+------------------------------------------------------------------+результат:
06:13:57 Sample-0002: loaded successfully
06:13:57 Sample-0002 started for testing
06:13:57 Sample-0002: Выполнен блок init
06:13:57 2004.06.16 19:15 Sample-0002: CurTime: 1087413300 InitialTime: 1087413300 i: 0
06:13:57 2004.06.16 19:15 Sample-0002: CurTime: 1087413300 InitialTime: 1087413300 i: 1
06:14:00 2004.10.14 11:49 Sample-0002: Выполнен блок deinit
... странно, что эту функцию все используют для задержки, например:
... а никакой задержки нет... вот прикол :-)
Млин, похоже и на реале эта функция не всегда работает:
06:26:40 Sample-0002 EURUSD,M1: Выполнен блок init
06:26:40 Sample-0002 EURUSD,M1: initialized
06:29:20 Sample-0002 EURUSD,M1: CurTime: 1135744153 InitialTime: 1135744153 i: 0
06:29:22 Sample-0002 EURUSD,M1: CurTime: 1135744153 InitialTime: 1135744153 i: 1
... а зачем она тогда нужна? Удалось выяснить, в реале при Sleep(3000) реальная задержка 1 сек, при меньших значениях задержки не видать...