Скачать MetaTrader 5

Как зациклить советник?

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
angela
1575
angela 2011.04.07 13:58 

Подскажите, пожалуйста, как создать бесконечный цикл в советнике, чтобы перезапускался каждую секунду. Что-то по поиску ничего не нашла.

Alexandr Bryzgalov
29296
Alexandr Bryzgalov 2011.04.07 14:00  
Комбинатор
16011
Комбинатор 2011.04.07 14:14  

Вот мой слушатель:

int start()
{
   while(!IsStopped())
   {
      RefreshRates();
      
      //...
      
      Sleep(50);
   }
   return(0);
}
angela
1575
angela 2011.04.07 14:42  

Всем спасибо!

Airat Safin
1300
Airat Safin 2011.04.07 21:04  

1000 ms EA

//< This is EA : Compile and run in folder "/experts" >
 
 
int start()
{
static int iClockPeriod = 1000 ;
 
static int iTimeStamp          ;
static int iRunTime            ;
 
while  ( ! IsStopped () )
       {
           iTimeStamp = GetTickCount ()                             ;
           Comment    ( TimeToStr ( TimeLocal () , TIME_SECONDS ) ) ;
 
           //< Main Routine >
           // ...
           //</Main Routine >
 
           iRunTime   = GetTickCount () - iTimeStamp                ;
           Sleep      ( iClockPeriod    - iRunTime                ) ;
       }
}
//</This is EA : Compile and run in folder "/experts" > 

1000 ms Indicator

//< This is Indicator : Compile and run in folder "/experts/indicators" >
#property  indicator_chart_window
 
int start()
{
static int iClockPeriod = 1000 ;
 
static int iTimeStamp          ;
  
  
if     ( ( GetTickCount () - iTimeStamp ) < iClockPeriod )   return ;
       {
           iTimeStamp = GetTickCount ()                             ;
           Comment    ( TimeToStr ( TimeLocal () , TIME_SECONDS ) ) ;
 
           //< Main Routine >
           // ...
           //</Main Routine >
 
       }
}
//</This is Indicator : Compile and run in folder "/experts/indicators" > 

100 ms EA

//</This is EA : Compile and run in folder "/experts" > 
 
//< Metronome  : Content : LOC 35 >
//< 1. Entry Point              2 >
//< 2. Initialization           7 >
//< 3. Main Cycle              25 >
//< 4. Exit Point               1 >
//</Metronome  : Content : LOC 35 >
 
//< 1. Entry Point 2 >
int init ()
{
//</1. Entry Point 2 >
 
//< 2. Initialization 7 `````````````````````````````>
static int    iTimerPeriod    = 100  ; // milliseconds
 
static int    iTimeStampTimer = 0    ;
static int    iTimeStampLocal = 0    ;
 
static int    iRunTime        = 0    ;
static int    iRuns           = 0    ;
 
static int    iFraction       = 0    ;
 
static string sTimeFraction = ""     ;
//</2. Initialization 7 `````````````````````````````>
 
//< 3. Main Cycle 25 `````````````````````````````````````````````````````````````>
while  ( ! IsStopped () )
       {
           iRuns ++                          ;
           iTimeStampTimer = GetTickCount () ;
 
           //< Main Routine >
           // ...
           //</Main Routine >
 
           iRunTime   = GetTickCount () - iTimeStampTimer ;
           Sleep      ( iTimerPeriod    - iRunTime      ) ;
 
           iRunTime   = GetTickCount () - iTimeStampTimer ;
 
           if ( iTimeStampLocal  != TimeLocal () )
              {
                iFraction       = 0              ;
                sTimeFraction   = "000"          ;
                iTimeStampLocal = TimeLocal   () ;
              }
           else
              {
                iFraction = iFraction + iRunTime                               ;
                if        ( iFraction <  10 ) sTimeFraction = "00" + iFraction ;
                else if   ( iFraction < 100 ) sTimeFraction = "0"  + iFraction ;
                else                          sTimeFraction =        iFraction ;
              }
 
           Comment ( "Time " , TimeToStr ( TimeLocal () , TIME_SECONDS ) , " "  ,
                               sTimeFraction                             , "\n" ,
                     "Runs " , iRuns                                            ) ;
       }
//</3. Main Cycle 25 `````````````````````````````````````````````````````````````>
 
//< 4. Exit Point 1 >
}
//</4. Exit Point 1 >
 
//</This is EA : Compile and run in folder "/experts" > 
  
  

barli
172
barli 2011.04.07 22:29  
с какой целью это делается?
Alexander
2441
Alexander 2011.04.07 22:45  
barli:
с какой целью это делается?

Оградиться от тлетворного влияния тиков.
Алексей Тарабанов
7275
Алексей Тарабанов 2011.04.07 22:47  
barli:
с какой целью это делается?

С благородной.
Bicus
2394
Bicus 2011.04.08 08:25  
Roger:

Оградиться от тлетворного влияния тиков.

Не проще это сделать в процедуре start:

if (!(MathMod (iVolume (Symbol (), PERIOD_H1, 0), 5) == 0))
  return (0);

Нупример здесь будет обрабатываться каждый 5 тик. 

Комбинатор
16011
Комбинатор 2011.04.08 09:24  
Bicus:

Нупример здесь будет обрабатываться каждый 5 тик.

Неправда. Утверждение верно только для тестера.

Кроме того возможна обратная ситуация -- прослушка.

Vadim Zhunko
5227
Vadim Zhunko 2011.04.08 10:42  
Bicus:

Не проще это сделать в процедуре start:

Нупример здесь будет обрабатываться каждый 5 тик.

Что будет делать советник между тиками? Ждать? Не рационально.

У меня в промежутках обрабатывает кучу информации.

1234
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий