Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 1264

 
Roman:

Подскажите пожалуйста, как замерить минимальную дискретность, одной итерации цикла while?
Пробую таким кодом, но не уверен что замеряю правильно.


 

void OnStart()
{
   ulong time[]; 
   ulong t = 0;  
   int   i = 0;
   ArrayResize(time, 30);      
   ulong startTime=GetTickCount64();
   uint iterations=0;
   while(i < 30 && !_StopFlag )
   {
      //t = GetMicrosecondCount();
      //t = GetMicrosecondCount() - t;      
      iterations++;
      
      ArrayFill(time, i, 1, t);
      i++;   
   }
   if (iterations) {
      ulong endTime=GetTickCount64();
      ulong avgTime=(startTime-endTime)/iterations; // среднее время 1-й итерации
   }
   ArrayPrint(time);
}
 
Maxim Kuznetsov:

Аа, понял смысл.
Не много иначе написал.

void OnStart()
{   
   uint  iterations = 1;   
   ulong startTime  = GetMicrosecondCount();   
   
   while(iterations == 1 && !_StopFlag )
   {            
      iterations++;         
   }
   
   ulong endTime = GetMicrosecondCount() - startTime;
   
   Print(IntegerToString(fabs(endTime)));
}

Получается то 0, то 1 микросекунда.
Ниже микросекунд не проверить.

 
Roman:

Аа, понял смысл.
Не много иначе написал.

Получается то 0, то 1 микросекунда.
Ниже микросекунд не проверить.

Лучше количество итераций считать. Конечно будет меньше микросекунды с сегодняшними частотами процов. Например между тиками)

void OnStart()                                  // Спец. функция OnStart()
  {
   int i, Count;                             // Объявление переменных
   for (i=1; i<=5; i++)                      // Покажем для 5 тиков
     {
      Count=0;                               // Сброс счётчика
      while(RefreshRates()==false)           // До тех пор, пока..
        {                                   //..придёт новый тик
         Count = Count+1;                    // Счётчик итераций 
        }
      Alert("Тик ",i,", циклов ",Count);     // После каждого тика
     }
   return;                                   // Выход из start()
  }
//--------------------------------------------------------------------
 
Valeriy Yastremskiy:

Лучше количество итераций считать. Конечно будет меньше микросекунды с сегодняшними частотами процов. Например между тиками)

Возможно и лучше, но не в этом суть.
Надо снижаться до наносекунд, думается надо пилить длл, со своими функциями проверки времени.
Интересно просто, с какой дискретностью крутится цикл. 

 

Как определить какой ордер был закрыт последним?

Или какая прибыль по последним 5 закрытым?


OrdersHistoryTotal()-1 - возвращает позицию ордера в истории с максимальным тикетом.


Если сделка с тикетом 100 закрылась, а через час закрылась сделка с тикетом 99, то OrdersHistoryTotal()-1  будет указывать именно на #100, а как получить инфу о #99 ордере? 

---

самое глупое что приходит в голову - сохранять историю в массив, сортировать по времени закрытия и уже из массива считать что мне нужно. НО это супер неоптимально

 
Roman:

Возможно и лучше, но не в этом суть.
Надо снижаться до наносекунд, думается надо пилить длл, со своими функциями проверки времени.
Интересно просто, с какой дискретностью крутится цикл. 

с частотой свободного ядра умноженному на количество свободных ядер. 2 - 10 гигагерц где то должно быть, если нет других задач и в цикле только счетчик. Скорость зависит от загрузки проца и памяти, приоритета сторонних действий, в момент выполнения цикла,  и так же от внутренних действий в цикле. к тому же операции сложения и присваивания насколько понимаю более быстрые чем запись и чтение в / из массива.

 
Valeriy Yastremskiy:

с частотой свободного ядра умноженному на количество свободных ядер. 2 - 10 гигагерц где то должно быть, если нет других задач и в цикле только счетчик. Скорость зависит от загрузки проца и памяти, приоритета сторонних действий, в момент выполнения цикла,  и так же от внутренних действий в цикле. к тому же операции сложения и присваивания насколько понимаю более быстрые чем запись и чтение в / из массива.

Спасибо. Понял.

 
Кто может помочь написать торгового робота?(просто у кого время свободное есть)
 
paradisehell1:
Кто может помочь написать торгового робота?(просто у кого время свободное есть)

этих роботов, уже столько написано - не верю, что нет такого - который нужен Вам. 

 

Доброго Всем!


Вопрос: как проще всего определить время хая и лоя бара?

Время открытия/закрытия бара неинтересно.

На МТ4.

Спасибо!