현지 시간과 신선한 틱 시간 사이에는 1분 30초의 차이가 있습니다. 할 일. - 페이지 3

 
pivomoe :

TimeCurrent() - 마지막 심볼 틱의 시간은 지연 시간보다 짧으므로 사용할 수 있습니다. 첫 번째 버전에서 현지 시간을 사용하는 것은 좋은 생각이 아닙니다.

와...음, 현재 버전도 실패한 것 같습니다.

TimeCurrent()의 정의 읽기:

시간 현재

서버의 마지막으로 알려진 시간, "시장 감시"에서 선택한 기호 중 하나에 대한 마지막 견적이 도착한 시간을 반환합니다.

그 중 하나는 가장 자주 변경되는 시간(간단함을 위해 - 가장 유동적임)이 표시된다는 것을 의미합니다. 그리고 이것은 당신에게 필요한 것이 아닙니다. SymbolInfoInteger ( ㅋ ㅋ, SYMBOL_TIME )가 필요합니다. 그렇게.

 
Alexey Kozitsyn :

와...음, 현재 버전도 실패한 것 같습니다.

TimeCurrent()의 정의 읽기:

그 중 하나는 가장 자주 변경되는 시간(간단함을 위해 - 가장 유동적임)이 표시된다는 것을 의미합니다. 그리고 이것은 당신에게 필요한 것이 아닙니다. SymbolInfoInteger( blah blah, SYMBOL_TIME )가 필요합니다. 그렇게.

이것이 내가 prostotrader를 위해 가지고 가려고 했던 것인데, 그것이 문제라고 생각합니다. 최신 버전에서는 모든 기호를 살펴보고 마지막으로 수신된 틱의 최대 시간을 사용합니다.

   for ( int i= 0 ; i<KolichestvoSimvolov; i++)     
   if ( InformaziaOPoslednemTike[i].LastTick.time_msc > VremaySamogoSvegegoTikaPoVsemSimvolam ) VremaySamogoSvegegoTikaPoVsemSimvolam= InformaziaOPoslednemTike[i].LastTick.time_msc;
알렉세이 코지친 :

17:59:00에 17:59:01에 누군가 진드기에 대한 정보를 받았지만 18:00에도 그것을받지 못했다면 큰 문제입니다.

그리고 여기에 질문이 있습니다. 문제는 무엇입니까(그리고 문제가 있습니까)? 오랫동안(모두에게) 틱을 주지 않는 브로커의 서버에서, 또는 오랫동안 받지 않는 MT5에서.

한편, "TimeCurrent"와 마지막 틱의 도착 시간 사이의 평균 시간은 5밀리초인 반면, 수십 초의 하락으로 오는 틱이 있습니다. 예를 들어, 18 25에서. 나는 45 초의 지연으로 진드기를 잡을 수있었습니다. 그리고 이것은 10개의 비유동 기호에 대한 것입니다.


+ 이를 위해 CopyTicks를 사용 하여 마지막 틱을 얻으면 용어의 문제가 악화될 수 있습니다.
 if ( CopyTicks ( Symbol (),ticks, COPY_TICKS_TRADE , 0 , 1 )== 1 ) 

때때로 느려질 뿐만 아니라 갑자기 1.5초 동안 수행할 수도 있습니다.

나는 또한 OnBookEvent가 하나의 심볼에 대한 거래에만 적합하다는 것을 이해할 수 있었습니다.

 
pivomoe :

이것이 내가 prostotrader를 위해 가지고 가려고 했던 것인데, 그것이 문제라고 생각합니다. 최신 버전에서는 모든 기호를 살펴보고 마지막으로 수신된 틱의 최대 시간을 사용합니다.

한편, "TimeCurrent"와 마지막 틱의 도착 시간 사이의 평균 시간은 5밀리초인 반면, 수십 초의 하락으로 오는 틱이 있습니다. 예를 들어, 18 25에서. 나는 45 초의 지연으로 진드기를 잡을 수있었습니다. 그리고 이것은 10개의 비유동 기호에 대한 것입니다.


+ 이에 대해 CopyTicks를 사용하여 마지막 틱을 얻으면 용어의 문제가 악화될 수 있습니다.

때때로 느려질 뿐만 아니라 갑자기 1.5초 동안 수행할 수도 있습니다.

나는 또한 OnBookEvent가 하나의 기호에 대한 거래에만 적합하다는 것을 이해했습니다.

항해했다. 주문서가 각 통화 쌍에 대해 별도로 구성되어 데이터에 따라 다른 쌍을 거래할 수 없다는 것을 방금 깨달았습니다.

다른 주문서의 데이터를 지정한 특정 순서로 정렬하는 것이 새로운 틱에 대한 데이터가 다른 통화 쌍의 주문장에 도착하는 순서와 전혀 일치하지 않는다는 것을 곧 깨닫게 되기를 바랄 뿐입니다.

따라서 주문에서 EURUSD 유리가 먼저 확인되고 BTCUSD가 마지막이며 그 사이에 서로 다른 유동성을 나타내는 수십 개의 기호가 있는 경우 틱 도착 시간은 다음과 같이 보일 수 있습니다.

18:50:00.000; 18:48:59.018; 18:51:00.001; 18:47:59.000 등등. 어떤 음모론도 없이 주식 MT와 중개인. 프로그래밍된 것은 수신된 것입니다.

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

항해했다. 이제 막 주문서가 각 통화 쌍에 대해 별도로 구성되어 데이터에 따라 다른 쌍을 거래할 수 없다는 것을 깨달았습니다.

다른 주문서의 데이터를 지정한 특정 순서로 정렬하는 것이 새로운 틱에 대한 데이터가 다른 통화 쌍의 주문장에 도착하는 순서와 전혀 일치하지 않는다는 것을 곧 깨닫게 되기를 바랄 뿐입니다.

따라서 주문에서 EURUSD 유리가 먼저 확인되고 BTCUSD가 마지막이며 그 사이에 서로 다른 유동성을 나타내는 수십 개의 기호가 있는 경우 틱 도착 시간은 다음과 같이 보일 수 있습니다.

18:50:00.000; 18:48:59.018; 18:51:00.001; 18:47:59.000 등등. 어떤 음모론도 없이 주식 MT와 중개인. 프로그래밍된 것은 수신된 것입니다.

OnBookEvent를 통해 새로운 진드기를 잡기 위해 나는 그것이 "더 정확하다"고 썼던 prostotrade 의 조언을 받았습니다. 나는 유리 자체를 전혀 언급하지 않고 시장 리뷰의 모든 기호에 대한 업데이트를 구독합니다. 나는 본질적으로 주문서가 업데이트된 기호를 결정하기 위해서만 OnBookEven 을 사용합니다. 다음은 새로운 틱을 확인하는 것입니다. 그런 다음 EA가 새로운 안티 레코드를 설정했는지 확인합니다. 전체 기능 다음과 같습니다 .

 void OnBookEvent ( const string &symbol)
  {   
   if ( MestoPoluchenieTikov == ON_TIMER ) return ;
//--- Ищем индекс символа для которого полученно событие OnBookEvent
   int IndeksSimvola= - 1 ;
   for (   int i= 0 ;  i < KolichestvoSimvolov; i++ )
   if (  symbol == GCInformaziaOPoslednemTike[i].Simvol  ) { IndeksSimvola= i; break ; }
   
   if ( IndeksSimvola== - 1 ){ Print ( __FUNCTION__ , "Не удалось найти символ по которому полученно событие OnBookEvent " ); ExpertRemove (); return ;}
   
   bool PoluchiliNoviiTick= false ;
          
     //--- Получаем тик заданным в настройках способом.
   if ( SposobPoluchenieTikov == SYMBOL_INFO_TICK  ) PoluchiliNoviiTick= PolychaemNoviiTickSymbolInfoTick(GCInformaziaOPoslednemTike[IndeksSimvola]);
   if ( SposobPoluchenieTikov == COPY_TICKS       )  PoluchiliNoviiTick= PolychaemNoviiTickCopyTicks(GCInformaziaOPoslednemTike[IndeksSimvola]);    
       
     //--- Смотрим не установлены ли новые рекорды.  
   if (  PoluchiliNoviiTick ) PitaemsayObnovitRekordi( GCInformaziaOPoslednemTike, IndeksSimvola );                 
   
   ObnovlaemInformacyyNaGrafikeEslePora();
 
  }   
알렉세이 타라바노프 :

다른 주문서의 데이터를 지정한 특정 순서로 정렬하는 것이 새로운 틱에 대한 데이터가 다른 통화 쌍의 주문장에 도착하는 순서와 전혀 일치하지 않는다는 것을 곧 깨닫게 되기를 바랄 뿐입니다.

내가 이해하는 한 MarketBookGet을 사용하여 유리를 얻지 못하면 아무 것도 정렬하지 않습니다. 아마도 두 번째 페이지에서 내 코드를 보지 않았을 것입니다.

 
pivomoe :

OnBookEvent를 통해 새로운 진드기를 잡기 위해 나는 그것이 "더 정확하다"고 썼던 prostotrade 의 조언을 받았습니다. 나는 유리 자체를 전혀 언급하지 않고 시장 리뷰의 모든 기호에 대한 업데이트를 구독합니다. 나는 본질적으로 주문서가 업데이트된 기호를 결정하기 위해서만 OnBookEven 을 사용합니다. 다음은 새로운 틱을 확인하는 것입니다. 그런 다음 EA가 새로운 안티 레코드를 설정했는지 확인합니다. 전체 기능 다음과 같습니다 .

내가 이해하는 한 MarketBookGet을 사용하여 유리를 얻지 못하면 아무 것도 정렬하지 않습니다. 아마도 두 번째 페이지에서 내 코드를 보지 않았을 것입니다.

MT의 신호는 이전 신호가 처리될 때까지 처리되지 않습니다.

 
pivomoe :

OnBookEvent를 통해 새로운 진드기를 잡기 위해 나는 그것이 "더 정확하다"고 썼던 prostotrade 의 조언을 받았습니다. 나는 유리 자체를 전혀 언급하지 않고 시장 리뷰의 모든 기호에 대한 업데이트를 구독합니다. 나는 본질적으로 주문서가 업데이트된 기호를 결정하기 위해서만 OnBookEven 을 사용합니다. 다음은 새로운 틱을 확인하는 것입니다. 그런 다음 EA가 새로운 안티 레코드를 설정했는지 확인합니다. 전체 기능 다음과 같습니다 .

내가 이해하는 한 MarketBookGet을 사용하여 유리를 얻지 못하면 아무 것도 정렬하지 않습니다. 아마도 두 번째 페이지에서 내 코드를 보지 않았을 것입니다.

보지 않았다.

 
pivomoe :

논리로 모든 것이 괜찮습니다. 지나가는 사람들의 말을 듣지 마십시오.

1. 3-5개의 기구를 남겨두십시오(그 중 하나는 액체가 아님). 재생되나요?

2. 인터넷을 사용하는 다른 소프트웨어 없이 깨끗한 컴퓨터에서 실행합니다. 다시 일어날까요?

3. 다른 Expert Advisors(도구당 1개)에서 지연을 분산시키십시오.

문제가 리소스에 있지 않은 경우(하나의 터미널에 할당되는 스레드 수에 약간의 제한이 있음) 버그를 수정해야 합니다.

 
Andrey Khatimlianskii :

논리로 모든 것이 괜찮습니다. 지나가는 사람들의 말을 듣지 마십시오.

1. 3-5개의 기구를 남겨두십시오(그 중 하나는 액체가 아님). 재생되나요?

2. 인터넷을 사용하는 다른 소프트웨어 없이 깨끗한 컴퓨터에서 실행합니다. 다시 일어날까요?

3. 다른 Expert Advisors(도구당 1개)에서 지연을 분산시키십시오.

문제가 리소스에 있지 않은 경우(하나의 터미널에 할당되는 스레드 수에 약간의 제한이 있음) 버그를 수정해야 합니다.

답변 해주셔서 감사합니다. 오늘 저는 이 문제를 해결하는 데 약간의 진전을 이루었습니다. SymbolInfo() 호출 사이에 Sleep() 명령으로 처리됩니다. 이전에는 쉬지 않고 전체 시장 검토를 순환했습니다. 오늘 파티에서 40자 테스트해봤습니다. Sleep(5) 이면 약 2초 전에 왔어야 하는 "새 진드기"가 포착되었습니다. 그러나 Sleep(10) 에서는 400밀리초의 지연으로 모든 것이 완벽합니다(이 Sleep(10) ( 40 characters *10 ) 로 인해). 나는 저녁에 가장 액체 상태인 4가지에 대해 테스트하려고 했습니다. Sleep(1)을 사용하면 지연이 없습니다....모든 것이 완벽합니다. 리뷰의 기호가 충분하지 않은 경우 일시 중지 없이 SymbolInfo를 사용할 수 있습니다. 그리고 캐릭터가 많으면 일시정지를 사용해야 합니다.

이제 답변은 다음과 같습니다.

1) 저녁에 액체 위에서 놀지 마십시오.

2) 40글자부터는 소프트웨어를 꺼도 반복됩니다.

3) 나는 당신이 제안하는 것을 이해하지 못했습니다. 하나의 터미널에서 한 번에 두 명의 Expert Advisors로부터 새로운 틱을 잡으시겠습니까?

ZY 이제 나는 SymbolInfo의 호출을 편의상 파헤칩니다. 예를 들어, 우리는 시장 리뷰에서 하나의 기호라도 3.5밀리초보다 더 자주 새 틱을 제공할 수 없다는 것을 알아냈습니다(실제로 저녁에 발생했습니다).

 
pivomoe :

1) 저녁에 액체 위에서 놀지 마십시오.

2) 40글자부터는 소프트웨어를 꺼도 반복됩니다.

3) 나는 당신이 제안하는 것을 이해하지 못했습니다. 하나의 터미널에서 한 번에 두 명의 Expert Advisors로부터 새로운 틱을 잡으시겠습니까?

ZY 이제 나는 SymbolInfo 호출을 편의상 파헤칩니다. 예를 들어, 우리는 시장 리뷰에서 하나의 기호라도 3.5밀리초보다 더 자주 새 틱을 제공할 수 없다는 것을 알아냈습니다(실제로 저녁에 발생했습니다).

1. 하나의 비유동성 추가 시도

3. 한 명의 Expert Advisor에서 한 기기에 대한 패스를 포착합니다. 그리고 40명의 고문을 운영합니다.

 
pivomoe :

답변 해주셔서 감사합니다. 오늘 저는 이 문제를 해결하는 데 약간의 진전을 이루었습니다. SymbolInfo() 호출 사이에 Sleep() 명령으로 처리됩니다. 이전에는 쉬지 않고 전체 시장 검토를 순환했습니다. 오늘 파티에서 40자 테스트해봤습니다. Sleep(5) 이면 약 2초 전에 왔어야 하는 "새 진드기"가 포착되었습니다. 그러나 Sleep(10) 에서는 400밀리초의 지연으로 모든 것이 완벽합니다(이 Sleep(10) ( 40 characters *10 ) 로 인해). 나는 파티에서 가장 유동적인 4가지에 대해 테스트하려고 했습니다. Sleep(1)을 사용하면 지연이 없습니다....모든 것이 완벽합니다. 리뷰의 기호가 충분하지 않은 경우 일시 중지 없이 SymbolInfo를 사용할 수 있습니다. 그리고 캐릭터가 많으면 일시정지를 사용해야 합니다.

지연을 포착하는 코드를 제공하십시오. 바로 여기, 코드 삽입 버튼을 통해.