실시간 틱 - 페이지 18

 
prostotrader :

논쟁이 벌어지고 있는 동안 나는 1번의 실험을 더 했다.

즉, 초기화 중에 마이크로초 시간을 감지하고,

각 인쇄 전에 다시 드릴 시간

이상적으로는 다음과 같아야합니다.

그러나 매우 자주 다음과 같이 나타납니다(로그 발췌).

근데 4초도 안맞아...

오, 마침내 발견 시간을 알아 냈어, 진행!)

추신 시간이 확실히 디스크에 기록되지 않았는지 확인하기 위해 가장 간단한 테스트를 수행합니다. Test의 작업 사이에 평균 7마이크로초가 소요되는 일부 계산이 수행됩니다.

동시에 마이크로초 단위의 동일한 시간으로 12개 이상의 작업에 대해 인쇄물이 표시되고 마이크로초마다 인쇄물이 출력된다는 것이 분명합니다. 모든 사람에게 모든 것이 명확하다고 생각합니다.

up: 첫 번째 인쇄가 두 번째 인쇄 바로 전에 배치되면 델타는 이미 0-1이며, 이는 인쇄가 이 체인에서 가장 길다는 것을 의미합니다.

   for ( int count= 0 ;count< 10000 ;count++) 
     { 
         ul= GetMicrosecondCount ();         
         Print ( "MicrosecondCount " ,ul);
         Test(); 
         ul_cur= GetMicrosecondCount (); 
         Print ( "MicrosecondCount " , ul_cur, " delta " ,ul_cur-ul);
     }     



 
Aleksey Mavrin :

오, 마침내 발견 시간을 알아 냈어, 진행!)

무엇을 원하니? 할 것이 없다?

여기에서 모든 것이 시작되었습니다!

 
prostotrader :

무엇을 원하니? 할 것이 없다?

여기에서 모든 것이 시작되었습니다!

추가됨

게다가 GetMicrosecondCount ()에 최대 16ms의 오류가 있다는 것을 아직 알지 못합니다! :)

마이크로초를 제공하는 함수에는 최대 16밀리초의 오류가 있습니다. 오류는 그 이름보다 훨씬 더 큰 것입니다. 음, 음)) 증거로도 확인할 수 있습니까?

 
Aleksey Mavrin :

마이크로초를 제공하는 함수에는 최대 16밀리초의 오류가 있습니다. 오류는 그 이름보다 훨씬 더 큰 것입니다. 음, 음)) 증거로도 확인할 수 있습니까?

뒤섞인

 
prostotrader :

뒤섞인

글쎄, 당신이 실수를 즉시 인정한다는 점을 존중하십시오.)

4초의 지연은 실제로 터미널이 생각하는 어떤 시점에서 가장 가능성이 높습니다. 이것은 바이러스 백신이 스캔을 시작할 때 발생하는 것 같습니다. 사례.

그리고 4초라는 것은 정확히 4초 후에 로그 캐시에서 Print가 나왔다는 뜻이고 OnBuk이 4초 뒤에 나왔다는 뜻은 아닙니다(당시 컴퓨터를 어떻게 로드하느냐에 따라 가능할 것 같지만)

추신 왜냐하면 인쇄는 먼저 대기열로 이동하고 거기에서 로그로 이동합니다.
 
Aleksey Mavrin :

글쎄, 당신이 실수를 즉시 인정한다는 점을 존중하십시오.)

4초의 지연은 실제로 터미널 생각의 어느 시점에서 가장 가능성이 높습니다. 이것은 바이러스 백신이 검사를 시작할 때 발생하는 것 같습니다. 사례.

그리고 4초라는 것은 정확히 4초 후에 로그 캐시에서 Print가 나왔다는 뜻이고 OnBuk이 4초 후에 나왔다는 뜻은 아닙니다(당시 컴퓨터를 어떻게 로드하느냐에 따라 가능할 것 같지만)

추신 왜냐하면 인쇄는 먼저 대기열로 이동하고 거기에서 로그로 이동합니다.

네 가능합니다

 
Aleksey Mavrin :

그리고 4초라는 것은 정확히 4초 후에 로그 캐시에서 Print가 나왔다는 뜻 이고 OnBuk이 4초 뒤에 나왔다는 뜻은 아닙니다 (당시 컴퓨터를 어떻게 로드하느냐에 따라 가능할 것 같지만)

추신 왜냐하면 인쇄는 먼저 대기열로 이동하고 거기에서 로그로 이동합니다.

글쎄요, 하지만 어때요?

한 차트에서는 OnBook을 실행하고 다른 차트에서는 OnTick을 실행했습니다.

 //+------------------------------------------------------------------+
//|                                                   Ticks_test.mq5 |
//|                                      Copyright 2019 prostotrader |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2019 prostotrader"
#property link        "https://www.mql5.com"
#property version    "1.00"
//---
bool is_book;
enum ENUM_BOOK_OR_TICK
{
        USE_BOOK,       // Use OnBookEvent
        USE_TICK         // Use OnTick
};

input ENUM_BOOK_OR_TICK Mode = USE_BOOK;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit ()
{
   if (Mode == USE_BOOK) is_book = MarketBookAdd ( Symbol ());
   return ( INIT_SUCCEEDED );
}
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
{
   if (Mode == USE_BOOK)
  {
     if (is_book == true ) MarketBookRelease ( Symbol ());
  }  
}
//+------------------------------------------------------------------+
//| BookEvent function                                               |
//+------------------------------------------------------------------+
void OnBookEvent ( const string &symbol)
{
   if (( Symbol () != symbol) || (Mode != USE_BOOK)) return ;
   Print ( __FUNCTION__ , "; Time: " , GetTickCount (), " ms" );
}
void OnTick ()
{
   if (Mode != USE_TICK) return ;
   Print ( __FUNCTION__ , "; Time: " , GetTickCount (), " ms" );
}
//+------------------------------------------------------------------+


OnTick과 OnBook의 56ms 차이

동일한 인쇄 차이 :)

 2020.02 . 04 22 : 37 : 48.212 Ticks_test_2 (GOLD- 3.20 ,M1)     OnTick ; Time: 205482644 ms
2020.02 . 04 22 : 37 : 49.268 Ticks_test_2 (GOLD- 3.20 ,M1)     OnBookEvent ; Time: 20548369 0 ms

2020.02 . 04 22 : 37 : 50.354 Ticks_test_2 (GOLD- 3.20 ,M1)     OnTick ; Time: 205484782 ms
2020.02 . 04 22 : 37 : 50.354 Ticks_test_2 (GOLD- 3.20 ,M1)     OnBookEvent ; Time: 205484782 ms

2020.02 . 04 22 : 37 : 51.064 Ticks_test_2 (GOLD- 3.20 ,M1)     OnTick ; Time: 205485484 ms
2020.02 . 04 22 : 37 : 51.064 Ticks_test_2 (GOLD- 3.20 ,M1)     OnBookEvent ; Time: 205485484 ms

2020.02 . 04 22 : 37 : 52.833 Ticks_test_2 (GOLD- 3.20 ,M1)     OnTick ; Time: 205487262 ms
2020.02 . 04 22 : 37 : 52.833 Ticks_test_2 (GOLD- 3.20 ,M1)     OnBookEvent ; Time: 205487262 ms

2020.02 . 04 22 : 38 : 01.932 Ticks_test_2 (GOLD- 3.20 ,M1)     OnTick ; Time: 205496357 ms
2020.02 . 04 22 : 38 : 01.932 Ticks_test_2 (GOLD- 3.20 ,M1)     OnBookEvent ; Time: 205496357 ms

2020.02 . 04 22 : 38 : 05.310 Ticks_test_2 (GOLD- 3.20 ,M1)     OnTick ; Time: 205499742 ms
2020.02 . 04 22 : 38 : 05.310 Ticks_test_2 (GOLD- 3.20 ,M1)     OnBookEvent ; Time: 205499742 ms

2020.02 . 04 22 : 38 : 07.706 Ticks_test_2 (GOLD- 3.20 ,M1)     OnTick ; Time: 205502129 ms
2020.02 . 04 22 : 38 : 07.706 Ticks_test_2 (GOLD- 3.20 ,M1)     OnBookEvent ; Time: 205502129 ms

2020.02 . 04 22 : 38 : 09.426 Ticks_test_2 (GOLD- 3.20 ,M1)     OnTick ; Time: 205503845 ms
2020.02 . 04 22 : 38 : 09.426 Ticks_test_2 (GOLD- 3.20 ,M1)     OnBookEvent ; Time: 205503845 ms

2020.02 . 04 22 : 38 : 10.035 Ticks_test_2 (GOLD- 3.20 ,M1)     OnTick ; Time: 205504453 ms
2020.02 . 04 22 : 38 : 10.035 Ticks_test_2 (GOLD- 3.20 ,M1)     OnBookEvent ; Time: 205504453 ms

2020.02 . 04 22 : 38 : 14.225 Ticks_test_2 (GOLD- 3.20 ,M1)     OnTick ; Time: 205508650 ms
2020.02 . 04 22 : 38 : 14.225 Ticks_test_2 (GOLD- 3.20 ,M1)     OnBookEvent ; Time: 205508650 ms

2020.02 . 04 22 : 38 : 14.252 Ticks_test_2 (GOLD- 3.20 ,M1)     OnTick ; Time: 205508681 ms
2020.02 . 04 22 : 38 : 14.252 Ticks_test_2 (GOLD- 3.20 ,M1)     OnBookEvent ; Time: 205508681 ms

2020.02 . 04 22 : 38 : 14.593 Ticks_test_2 (GOLD- 3.20 ,M1)     OnTick ; Time: 205509024 ms
2020.02 . 04 22 : 38 : 14.593 Ticks_test_2 (GOLD- 3.20 ,M1)     OnBookEvent ; Time: 205509024 ms

2020.02 . 04 22 : 38 : 15.105 Ticks_test_2 (GOLD- 3.20 ,M1)     OnTick ; Time: 205509523 ms
2020.02 . 04 22 : 38 : 15.105 Ticks_test_2 (GOLD- 3.20 ,M1)     OnBookEvent ; Time: 205509523 ms

2020.02 . 04 22 : 38 : 15.584 Ticks_test_2 (GOLD- 3.20 ,M1)     OnTick ; Time: 205510007 ms
2020.02 . 04 22 : 38 : 16.226 Ticks_test_2 (GOLD- 3.20 ,M1)     OnBookEvent ; Time: 205510647 ms

2020.02 . 04 22 : 38 : 16.232 Ticks_test_2 (GOLD- 3.20 ,M1)     OnTick ; Time: 205510662 ms
2020.02 . 04 22 : 38 : 16.232 Ticks_test_2 (GOLD- 3.20 ,M1)     OnBookEvent ; Time: 205510662 ms

2020.02 . 04 22 : 38 : 21.476 Ticks_test_2 (GOLD- 3.20 ,M1)     OnTick ; Time: 205515904 ms
2020.02 . 04 22 : 38 : 21.477 Ticks_test_2 (GOLD- 3.20 ,M1)     OnBookEvent ; Time: 205515904 ms

2020.02 . 04 22 : 38 : 22.403 Ticks_test_2 (GOLD- 3.20 ,M1)     OnTick ; Time: 205516824 ms
2020.02 . 04 22 : 38 : 22.404 Ticks_test_2 (GOLD- 3.20 ,M1)     OnBookEvent ; Time: 205516824 ms

2020.02 . 04 22 : 38 : 23.582 Ticks_test_2 (GOLD- 3.20 ,M1)     OnTick ; Time: 205518010 ms
2020.02 . 04 22 : 38 : 23.583 Ticks_test_2 (GOLD- 3.20 ,M1)     OnBookEvent ; Time: 205518010 ms

2020.02 . 04 22 : 38 : 24.707 Ticks_test_2 (GOLD- 3.20 ,M1)     OnTick ; Time: 205519133 ms
2020.02 . 04 22 : 38 : 24.708 Ticks_test_2 (GOLD- 3.20 ,M1)     OnBookEvent ; Time: 205519133 ms

2020.02 . 04 22 : 38 : 30.962 Ticks_test_2 (GOLD- 3.20 ,M1)     OnTick ; Time: 205525389 ms
2020.02 . 04 22 : 38 : 30.962 Ticks_test_2 (GOLD- 3.20 ,M1)     OnBookEvent ; Time: 205525389 ms

2020.02 . 04 22 : 38 : 31.188 Ticks_test_2 (GOLD- 3.20 ,M1)     OnTick ; Time: 205525607 ms
2020.02 . 04 22 : 38 : 31.189 Ticks_test_2 (GOLD- 3.20 ,M1)     OnBookEvent ; Time: 205525607 ms

2020.02 . 04 22 : 38 : 31.989 Ticks_test_2 (GOLD- 3.20 ,M1)     OnTick ; Time: 205526418 ms
2020.02 . 04 22 : 38 : 31.989 Ticks_test_2 (GOLD- 3.20 ,M1)     OnBookEvent ; Time: 205526418 ms

2020.02 . 04 22 : 38 : 32.048 Ticks_test_2 (GOLD- 3.20 ,M1)     OnTick ; Time: 205526481 ms
2020.02 . 04 22 : 38 : 32.048 Ticks_test_2 (GOLD- 3.20 ,M1)     OnBookEvent ; Time: 205526481 ms

2020.02 . 04 22 : 38 : 32.140 Ticks_test_2 (GOLD- 3.20 ,M1)     OnTick ; Time: 205526559 ms
2020.02 . 04 22 : 38 : 32.140 Ticks_test_2 (GOLD- 3.20 ,M1)     OnBookEvent ; Time: 205526559 ms

2020.02 . 04 22 : 38 : 32.153 Ticks_test_2 (GOLD- 3.20 ,M1)     OnTick ; Time: 205526574 ms
2020.02 . 04 22 : 38 : 32.153 Ticks_test_2 (GOLD- 3.20 ,M1)     OnBookEvent ; Time: 205526574 ms

2020.02 . 04 22 : 38 : 32.589 Ticks_test_2 (GOLD- 3.20 ,M1)     OnTick ; Time: 205527011 ms
2020.02 . 04 22 : 38 : 32.590 Ticks_test_2 (GOLD- 3.20 ,M1)     OnBookEvent ; Time: 205527011 ms

2020.02 . 04 22 : 38 : 39.930 Ticks_test_2 (GOLD- 3.20 ,M1)     OnTick ; Time: 205534359 ms
2020.02 . 04 22 : 38 : 39.931 Ticks_test_2 (GOLD- 3.20 ,M1)     OnBookEvent ; Time: 205534359 ms

2020.02 . 04 22 : 38 : 40.009 Ticks_test_2 (GOLD- 3.20 ,M1)     OnTick ; Time: 205534437 ms
2020.02 . 04 22 : 38 : 40.009 Ticks_test_2 (GOLD- 3.20 ,M1)     OnBookEvent ; Time: 205534437 ms
 
prostotrader :

글쎄요, 하지만 어때요?

한 차트에서 OnBook을 실행하고 다른 차트에서 OnTick을 실행했습니다.


OnTick과 OnBook의 56ms 차이

동일한 인쇄 차이 :)

다시 말하지만, 나는 정확히 확신하지 못합니다. 왜냐하면. 나는 잠을 자고 의심하고 싶다 - 경험이 많고 현명하다)

그러나 여기서 요점은 Symbol ()이 시간을 먹는다는 점에서 단지 기본적 인 것 같습니다)))

이것은 올바른 테스트입니다 - 확인하십시오 - 나는 너무 게으르다)

ul은 ulong glob입니다. 변하기 쉬운

 void OnBookEvent ( const string &symbol)
{
ul= GetTickCount ();
   if (( Symbol () != symbol) || (Mode != USE_BOOK)) return ;
   Print ( __FUNCTION__ , "; Time: " , ul, " ms" );
}
void OnTick ()
{
ul= GetTickCount ();
   if (Mode != USE_TICK) return ;
   Print ( __FUNCTION__ , "; Time: " , ul, " ms" );
}
//+------------------------------------------------------------------+
 
Aleksey Mavrin :

다시 말하지만, 나는 정확히 확신하지 못합니다. 왜냐하면. 나는 잠을 자고 의심하고 싶다 - 경험이 많고 현명하다)

그러나 여기서 요점은 Symbol ()이 시간을 먹는다는 점에서 단지 기본적 인 것 같습니다)))

이것은 올바른 테스트입니다 - 확인하십시오 - 내가 너무 게으르다)

ul은 ulong glob입니다. 변하기 쉬운

:), 잘 자

 
Aleksey Mavrin :

다시 말하지만, 나는 정확히 확신하지 못합니다. 왜냐하면. 나는 잠을 자고 의심하고 싶다 - 경험이 많고 현명하다)

그러나 여기서 요점은 Symbol ()이 시간을 먹는다는 점에서 단지 기본적 인 것 같습니다)))

이것은 올바른 테스트입니다 - 확인하십시오 - 내가 너무 게으르다)

ul은 ulong glob입니다. 변하기 쉬운

 string gSymbol;
int OnInit ()
{
gSymbol = Symbol (); 
return 0;
}

void OnBookEvent ( const string &symbol)
{
ul= GetTickCount ();
   if (( Symbol () != symbol) || (Mode != USE_BOOK)) return ;
   Print ( __FUNCTION__ , "; Time: " , ul, " ms" );
}
void OnTick ()
{
ul= GetTickCount ();
   if (( Symbol () != gSymbol) || (Mode != USE_TICK)) return ;   // можно попробовать привести оба обработчика к одинаковому коду
   Print ( __FUNCTION__ , "; Time: " , ul, " ms" );
}
//+------------------------------------------------------------------+

옵션으로 Symbol() 이 시간을 잡아먹는다는 두려움을 없애기 위해 두 핸들러가 같은 방식으로 "먹게" 합니다.