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 :

반복 횟수를 계산하는 것이 좋습니다. 물론 오늘날의 프로세서 주파수에서는 마이크로초 미만이 될 것입니다. 예: 틱 사이)

어쩌면 더 나을 수도 있지만 그것이 요점이 아닙니다.
나노초 단위로 줄여야 하는데 자체적으로 시간 확인 기능이 있는 dll을 잘라야 한다고 생각합니다.
주기가 어떤 불연속적으로 회전하고 있는지는 흥미롭습니다.

 

마지막으로 마감된 주문을 확인하는 방법은 무엇입니까?

또는 마지막 5개의 마감된 것의 이익은 무엇입니까?


OrdersHistoryTotal()-1 - 최대 티켓이 있는 기록의 주문 위치를 반환합니다.


티켓 100의 거래가 종료되고 한 시간 후에 티켓 99의 거래가 종료되면 OrdersHistoryTotal()-1 은 정확히 #100을 가리키지만 주문 #99에 대한 정보를 얻는 방법은 무엇입니까?

---

마음에 오는 가장 어리석은 일은 히스토리를 배열에 저장하고 닫는 시간별 로 정렬하고 배열에서 필요한 것을 읽는 것입니다. 그러나 그것은 매우 차선책입니다

 
Roman :

어쩌면 더 나을 수도 있지만 그것이 요점이 아닙니다.
나노초 단위로 줄여야 하는데 자체적으로 시간 확인 기능이 있는 dll을 잘라야 한다고 생각합니다.
주기가 어떤 불연속적으로 회전하고 있는지는 흥미롭습니다.

자유 코어의 빈도에 자유 코어 수를 곱한 값입니다. 다른 작업이 없고 주기에 카운터만 있는 경우 2 - 10GHz가 있어야 합니다. 속도는 CPU 및 메모리 부하, 루프 시 타사 작업의 우선 순위 및 루프의 내부 작업에 따라 달라집니다. 게다가 내가 이해하는 한 추가 및 할당 작업은 배열에 쓰기 및 읽기보다 빠릅니다.

 
Valeriy Yastremskiy :

자유 코어의 빈도에 자유 코어 수를 곱한 값입니다. 다른 작업이 없고 주기에 카운터만 있는 경우 2 - 10GHz가 있어야 합니다. 속도는 CPU 및 메모리 부하, 루프 시 타사 작업의 우선 순위 및 루프의 내부 작업에 따라 달라집니다. 게다가 내가 이해하는 한 추가 및 할당 작업은 배열에 쓰기 및 읽기보다 빠릅니다.

고맙습니다. 이해했다.

 
누가 거래 로봇을 작성하는 데 도움을 줄 수 있습니까? (자유 시간이 있는 사람만)
 
paradisehell1 :
누가 거래 로봇을 작성하는 데 도움을 줄 수 있습니까? (자유 시간이 있는 사람만)

이 로봇은 이미 너무 많이 작성되었습니다. 여러분이 필요로 하는 그런 로봇은 없다고 생각합니다.

 

좋아요 여러분!


질문: 막대의 높낮이를 결정하는 가장 쉬운 방법은 무엇입니까?

개점 / 폐점 시간 은 흥미롭지 않습니다.

MT4에서.

고맙습니다!