Как имитировать поступление тика в тестере для эксперта?

 
Как имитировать поступление тика в тестере для эксперта?
 
Golden Ratio:
Как имитировать поступление тика в тестере для эксперта?

Поставить на паузу и нажимать F12

 
int init(){
   int Error;
   if( МинНаклонТренда<Zero ) МинНаклонТренда=0;
   if( МинНаклонТренда-МаксНаклонТренда>Zero ) МаксНаклонТренда=МинНаклонТренда;
   if( БарОкончания<1 ) БарОкончания=1;
   if( МинБазовыйПериод<1 ) МинБазовыйПериод=1;
   if( МаксБазовыйПериод<МинБазовыйПериод ) МаксБазовыйПериод=МинБазовыйПериод;
   if( БарНачала<МинБазовыйПериод+БарОкончания ) БарНачала=МинБазовыйПериод+БарОкончания;
   if( БарНачала>Bars-1 ){
      if( Bars>МинБазовыйПериод+БарОкончания ) БарНачала=Bars-1;
      else Alert("Неразрешимая ошибка: история("+Bars+")<=активация("+МинБазовыйПериод
                +")+окончание("+БарОкончания+")");
   }
   if( ТолщинаТрендовой<1 ) ТолщинаТрендовой=1;
   if( ТолщинаТрендовой>5 ) ТолщинаТрендовой=5;
   if( РазмерИндикатораТиков<1 ) РазмерИндикатораТиков=1;
   if( РазмерИндикатораТиков>5 ) РазмерИндикатораТиков=5;
   if( СдвигИндикатораТиков<3 ) СдвигИндикатораТиков=3;
   if( СдвигИндикатораТиков>100 ) СдвигИндикатораТиков=100;
   if( ПоказыватьВсе ) Visibility=0; else Visibility=EMPTY;
   LastBar=БарОкончания;
   ЦветЛиний[0]=ЦветПоддержки;
   ЦветЛиний[1]=ЦветСопротивления;
   ЦветХорды[0]=ЦветВосходящейХорды;
   ЦветХорды[1]=ЦветНисходящейХорды;
   Цвет123[0]  =Цвет123ВТ;
   Цвет123[1]  =Цвет123НТ;
   NewTime        =0;
   ReInit();                                       // Повторная инициализация
   ClearScreen();                                  // Очистить экран
   Error=fVLine("StartLine","Старт",0,БарНачала,0,0,0,0,0,ЦветВертикалей);
   Error=fVLine("DeadLine","Пуск",0,БарОкончания,0,0,0,0,0,ЦветВертикалей);
   DeadLine=TimeCurrent();
   if( СтатическийРежим ){
      РежимРаботы=" Статический режим Пауза "+ПериодИмитацииТиков+" мс";
      МоделироватьДинамику=false;
      РежимОтладки=false;
      while( true ){                               // Бесконечный цикл
         ReInit();                                 // Повторная инициализация
         start();                                  // Имитация тика
         Sleep(ПериодИмитацииТиков);               // Не работает в индикаторах
   }  }
   else {
      if( МоделироватьДинамику ){
         РежимРаботы=" Режим имитации динамики Размерность "+DoubleToStr(0.5*БарНачала*БарНачала,0);
         Print("*     "+Version+РежимРаботы+" История: "+(БарНачала)+" баров с "+TimeToStr(Time[БарНачала]));
         LastBar=БарНачала;
         while( LastBar>БарОкончания ){            // Перебор всех баров истории
            LastBar--;
            start();                               // Имитация тика
         }
         МоделироватьДинамику=false;
         Print("Режим имитации динамики отключен!");
   }  }
   if( РежимОтладки ) РежимРаботы=" Отладка "; else РежимРаботы=" ";
   РежимРаботы=РежимРаботы+"Динамический режим";
   Print("*     "+Version+РежимРаботы+" История: "+(БарНачала)+" баров с "+TimeToStr(Time[БарНачала]));
   if( РежимОтладки ) start();                     // Имитация тика
   return(0);
}
//-----------------------------------------------------------------------------
// Повторная инициализация глобальных переменных и массивов
void ReInit(){
   StartTime[0]   =Time[БарНачала];
   StartTime[1]   =Time[БарНачала];
   Groups[0]      =0;
   Groups[1]      =0;
   OldMG[0]       =0;
   OldMG[1]       =0;
   MainGroup[0]   =0;
   MainGroup[1]   =0;
   QualityMax[0]  =0;
   QualityMax[1]  =0;
   OldStopLine    =0;
   return;
}
 
Vitaly Muzichenko #:

Поставить на паузу и нажимать F12

while(!IsStopped())     // До тех пор, пока пользователь.. 

      {                    // ..не прекратит исполнение программы 

      RefreshRates();      // Обновление данных

     ......................Здесь указывается основной код программы*/

       Sleep(5);            // Небольшая пауза

     }

         return;                 // Управление возвращается терминалу

      }

Нужно запустить такой цикл .Добавил в код . Работает . Но на тестере ни как не запускается.

На профилировании на реальных тиках  и торговле работает . On Tick() получает первый тик и все начал работать.

Как в тестере запустить эксперта с таким циклом?

 
Golden Ratio #:

while(!IsStopped())     // До тех пор, пока пользователь.. 

      {                    // ..не прекратит исполнение программы 

      RefreshRates();      // Обновление данных

     ......................Здесь указывается основной код программы*/

       Sleep(5);            // Небольшая пауза

     }

         return;                 // Управление возвращается терминалу

      }

Нужно запустить такой цикл .Добавил в код . Работает . Но на тестере ни как не запускается.

На профилировании на реальных тиках  и торговле работает . On Tick() получает первый тик и все начал работать.

Как в тестере запустить эксперта с таким циклом?

Нашел что нужно было здесь https://mql.opentraders.ru/31437.html

 

Вы задали два вопроса. На первый из них получили два варианта ответа. Реакции - никакой. 

Стоит ли вообще обращать внимание на Ваш второй вопрос? 

 
Golden Ratio:
Как имитировать поступление тика в тестере для эксперта?
OnTimer()
{
   OnTick();
}

Например так

 
zvezdocheet #:

Например так

Спасибо так и сделал

 
Алексей Тарабанов #:

А что делает Ваш код?

 
zvezdocheet #:

Например так

А что получится в этом случае?

 
ROMAN KIVERIN #:

А что получится в этом случае?

Получим лишний тик и значит лишнюю прибыль!