실시간 틱 - 페이지 21

 
Aleksey Mavrin :

오늘의 사진입니다. 물론 OnBuk Tick이 일치하는지 여부는 확인되지 않았지만 OnTick이 OnBuk보다 앞서면 해당하는 것이 다음이거나 조금 늦을 것이라는 희망으로 다음을 찍은 것입니다.

물론 추가 확인 없이 최대값은 지표나 이상값이 아니거나 실제로 OnBuk이 어딘가에서 느려집니다.


그러나 이것을 누가 설명할 수 있습니까? 왜 그렇게 많은 OnTick이 인쇄되지 않고 그 사이에 OnBuk 하나가 들어맞지 않습니까?


" 코드가 무릎 위에 있고 아마도 곡선일 것입니다. 결과를 보겠습니다. "

 //+------------------------------------------------------------------+
//| BookEvent function                                               |
//+------------------------------------------------------------------+
void OnBookEvent ( const string &symbol)
{ 
   if ((Mode != USE_BOOK) || (symbol != Symbol ())) return ;
  TimeArrayBook[curBook]= GetMicrosecondCount ();
  curBook++
 }
void OnTick ()
{
   if (Mode != USE_TICK) return ;
  TimeArrayTick[curTick]= GetMicrosecondCount ();
  curTick++
}

타이머도 필요없고...

 
하지만 topikstarter가 그의 질문에 대한 답변에 만족하는지 궁금합니다.
 
prostotrader :

" 코드가 무릎 위에 있고 아마도 곡선일 것입니다. 결과를 보겠습니다. "

타이머도 필요없고...

그 이유가 코드의 오류 때문이라는 것을 찾지 못했습니다. 또는 질문을 잘못 이해했습니다. 방금 He 함수에 표시를 인쇄했는데 타이머 없이 여전히 OnBook이 없는 틱 무리가 있습니다.
 
Aleksey Mavrin :
그 이유가 코드의 오류 때문이라는 것을 찾지 못했습니다. 또는 질문을 잘못 이해했습니다. 방금 He 함수에 표시를 인쇄했는데 타이머 없이 여전히 OnBook이 없는 틱 무리가 있습니다.

1. 어떻게 어드바이저를 시작했는지 전혀 이해하지 못합니다.

2. Andrey와 내가 작성한 2개의 코드가 있습니다.

서로 확인 합니다. 그래서 왜 당신의 것을 귀찮게 합니까?

3. Andrey와 나는 파생상품 시장에서 Expert Advisors를 시작했고 당신은 주식 시장에서 시작했습니다.

터미널에 펀드에 결함이 있을 수 있습니다(저는 주식 시장에서 MT5를 출시하지도 않았습니다).

개인적으로 저는 펀드에서 Quick을 통해 거래합니다.

 
prostotrader :

1. 어떻게 어드바이저를 시작했는지 전혀 이해하지 못합니다.

2. Andrey와 내가 작성한 2개의 코드가 있습니다.

서로 확인합니다. 그래서 왜 당신의 것을 귀찮게 합니까?

3. Andrey와 나는 파생상품 시장에서 Expert Advisors를 시작했고 당신은 주식 시장에서 시작했습니다.

터미널에 펀드에 결함이 있을 수 있습니다(저는 주식 시장에서 MT5를 출시하지도 않았습니다).

개인적으로 저는 펀드에서 Quick을 통해 거래합니다.

A, 분명하다. 내일 급하게 해봐야겠습니다. 왜 펀드에 MT5를 사용하지 않습니까? 단점은 무엇입니까?
Z.s. 코드가 3줄 있음) 처리기에서 대기열 속도가 느려지지 않도록 검사 없이 단순히 모스크바 시간을 수정하고 타이머에 인쇄하고 지연 시간을 계산합니다. 귀하의 코드에서 나는 또한 철저히 이해하지 못했습니다. 결론은 이미 일반적인 작동 원리에 대해 명확합니다.
 
Aleksey Mavrin :
1. 아, 분명히. 내일 급하게 해봐야겠습니다. 왜 펀드에 MT5를 사용하지 않습니까? 단점은 무엇입니까?
Z.s. 코드가 3줄 있음) 처리기에서 대기열 속도가 느려지지 않도록 검사 없이 단순히 모스크바 시간을 수정하고 타이머에 인쇄하고 지연 시간을 계산합니다. 귀하의 코드에서 나는 또한 철저히 이해하지 못했습니다. 결론은 이미 일반적인 작동 원리에 대해 명확합니다.

1. 2차 이후부터는 브로커에서 단말이 지급되며, 주식( 주식포트폴리오 )만 매매하는 전략은 없습니다.

2. 누적된 GetMicrosecondCount ()를 표시하려는 경우

OnDeinit()에서 타이머 없이 수행하면 EA가 종료될 때 모든 것이 인쇄됩니다.

 void OnDeinit ( const int reason)
{
   if (Mode == USE_BOOK)
  {
     if (is_book == true ) MarketBookRelease ( Symbol ());
  } 
   if (reason == REASON_REMOVE )
  {
   //Распечатываем данные
  } 
}
 
prostotrader :

2. 누적된 GetMicrosecondCount ()를 표시하려는 경우

OnDeinit()에서 타이머 없이 수행하면 EA가 종료될 때 모든 것이 인쇄됩니다.

예, 이것도 가능합니다. 처음에는 명확성을 위해 이 작업을 수행했습니다. 그러나 타이머 때문에 OnTicks는 건너뛸 수 있지만 OnBooks는 건너뛸 수 없으며 보장됩니다. 내가 뭔가를 고려하지 않았을 수도 있고, 모든 Tiki가 주문서에서 변경을 시작하지는 않을 수도 있습니다. 온북?
 
Aleksey Mavrin :
예, 이것도 가능합니다. 처음에는 명확성을 위해 이 작업을 수행했습니다. 그러나 타이머 때문에 OnTicks는 건너뛸 수 있지만 OnBooks는 건너뛸 수 없으며 보장됩니다. 내가 뭔가를 고려하지 않았을 수도 있고, 모든 Tiki가 주문서에서 변경을 시작하지는 않을 수도 있습니다. 온북?

그리고 더 나아가

카운터를 확인해야 합니다.

 void OnBookEvent ( const string &symbol)
{ 
   if (curBook >= 65534) return ;
   if ((Mode != USE_BOOK) || (symbol != Symbol ())) return ;
  TimeArrayBook[curBook]= GetMicrosecondCount ();
  curBook++
 }
void OnTick ()
{
   if (curTick >= 65534) return ;
   if (Mode != USE_TICK) return ;
  TimeArrayTick[curTick]= GetMicrosecondCount ();
  curTick++
}

그리고 array 를 선언 할 때 다음을 수행해야 합니다.

 ulong TimeArrayBook[
INT_MAX];

а инициализировать так
ArrayInitialize(TimeArrayBook, 0);

	          
 
prostotrader :

그리고 더 나아가

카운터를 확인해야 합니다.

그리고 초기화시 숫자가 65536이 아니라 65535 가 되어야 합니다.

아니요, 필요하지 않습니다. 이것은 아무것도 확인하지 않기 위해 의도적으로 수행됩니다. 그들은 Ushort입니다. 배열의 크기는 여백과 함께 나왔지만 결국 아무 영향도 미치지 않았습니다.
 
Aleksey Mavrin :

그러나 이것을 누가 설명할 수 있습니까? 왜 그렇게 많은 OnTick이 인쇄되지 않고 그 사이에 OnBuk 하나가 들어맞지 않습니까?

로그 시간을 보십시오. 이 모든 일이 1ms 안에 일어났고 다음(같은 ms에서) 많은 OnBooks가 발생했습니다.

모든 이벤트를 카운터로 계산할 수 있지만 시각적으로도 더 많은 OnBook이 있다는 것이 분명합니다.

사유: