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

 
prostotrader :

코드 를 잘 보세요!

TimeTradeServer()날짜와 모든 것을 결정하는 데만 사용됩니다(이 검사는 "만일을 대비하여" 수행됨)!

TimeTradeServer() 는 모두 생략할 수 있습니다!

보았다. 동의합니다. 다소 잘못 작성했지만 제 생각에는 기능이 여전히 문제를 해결하지 못합니다. 솔직히 왜 그것이 필요한지 완전히 명확하지 않습니다. 당신처럼 보입니다 :

1. 틱에서 밀리초 수를 가져옵니다.

2. 진드기를 구성 요소로 나눕니다.

3. 그럼 다시 진드기를 모으세요!? 이것이 왜 필요한지 명확하지 않습니다. 원래 함수에 전달된 것과 동일한 값을 항상 얻게 됩니다. 아니면 내가 뭔가를 놓치고 있습니까?

4. 그런 다음 틱 시간을 이전 시간과 비교합니다.


서버 시간도 알아야 합니다. 서버 시간이 없으면 한 문자의 스트림이 다른 문자의 스트림에 비해 늦은지 여부를 결정할 수 없습니다.

저것들. 귀하의 코드는 서버 시간에 묶여 있지 않으며 서버 시간을 스레드 시간과 비교하지 않습니다. 이는 귀하가 해야 하는 일입니다. 한 심볼의 틱에서 오더북의 백로그를 이해하는 것이 아니라(이 토론에 참여했을 때 처음에 생각했던 것처럼), 서버에서 터미널로 많은 심볼을 통해 데이터를 전송하는 지연을 이해하기 위해.

 
Alexey Kozitsyn :

확인은 TimeGMTOffset을 통해 수행해야 하는 것 같습니다. 나중에 예시를 올리겠습니다.

그냥 우스꽝 스럽습니다. 당신은 경험이 풍부한 사람입니다 (초보자가 아님).

일반적으로 들어오는 틱 시간을 제외하고는 시간이 필요하지 않습니다!

마지막 틱의 시간(초기화 중)을 기억하고 이 시간으로 모든 비교를 수행합니다!

 
Alexey Kozitsyn :

보았다. 동의합니다. 다소 잘못 작성했지만 제 생각에는 기능이 여전히 문제를 해결하지 못합니다. 솔직히 왜 그것이 필요한지 완전히 명확하지 않습니다. 당신처럼 보입니다 :

3. 그럼 다시 진드기를 모으세요!? 이것이 왜 필요한지 나에게 명확하지 않습니다. 원래 함수에 전달된 것과 동일한 값을 항상 얻을 수 있습니다. 아니면 내가 뭔가를 놓치고 있습니까?


이 코드는 틱의 관련성과 틱 있는 시간을 확인하는 Expert Advisor에서 "제거"되었습니다.

거래 세션

추가됨

정확한 (밀리초) 시간(날짜 제외)을 결정하기 위해 "분할" 체크가 필요합니다. 왜냐하면 내 EA 세션의 설정에서

시간만 보여

 input string           TimeStMon    = "10:00:00" ;               //Время начала утренней сессии
input string           TimeStDay    = "14:05:00" ;               //Время начала дневной сессии
input string           TimeStEvn    = "19:05:00" ;               //Время начала вечерней сессии
 
prostotrader :

그냥 우스꽝 스럽습니다. 당신은 경험이 풍부한 사람입니다 (초보자가 아님).

일반적으로 들어오는 틱 시간을 제외하고는 시간이 필요하지 않습니다!

마지막 틱의 시간(초기화 중)을 기억하고 이 시간으로 모든 비교를 수행합니다!

나중에 예제를 작성하고 질문에 대해 더 자세히 알아볼 것입니다. 나는 아마도 내가 틀릴 수도 있고 (pivomoe처럼) 당신이 옳다는 것을 배제하지 않습니다.

 
prostotrader :

이 코드는 틱의 관련성과 틱 있는 시간을 확인하는 Expert Advisor에서 "제거"되었습니다.

거래 세션

추가됨

내 EA 세션의 설정에서 정확한 시간(날짜 제외)을 결정하려면 "분류" 체크가 필요합니다.

시간만 보여

정확히는 내 잼이 간과되었습니다.

 
Alexey Kozitsyn :

정확히는 내 잼이 간과되었습니다.

예, TS가 처음에 그가 얻고자 하는 것을 결정하지 않았기 때문입니다(또는 그들이 올바르게 이해하지 못했을 수도 있음).

여기에서 실행하고 확인하십시오.

 //+------------------------------------------------------------------+
//|                                                         Time.mq5 |
//|                                                   Copyright 2019 |
//|                                                                  |
//+------------------------------------------------------------------+
enum FRESH_TICK
{
  UNKNOWN_TICK,
  NEW_TICK,
  CUR_TICK,
  OLD_TICK
};
//
MqlTick stored_ticks[];
bool is_book;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit ()
{
   int result = CopyTicks ( Symbol (), stored_ticks, COPY_TICKS_ALL , 0 , 1 );
   if (result > 0 )
  {
    is_book = MarketBookAdd ( Symbol ());
     if (is_book == false ) return ( INIT_FAILED );
  } else return ( INIT_FAILED );
   return ( INIT_SUCCEEDED );
}
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
{
   if (is_book == true ) MarketBookRelease ( Symbol ()); 
}
//+------------------------------------------------------------------+
// Expert Book event function                                        |
//+------------------------------------------------------------------+  
void OnBookEvent ( const string &symbol)
{
   if (symbol == Symbol ())
  {
     MqlTick a_ticks[];
     int result = CopyTicks (symbol, a_ticks, COPY_TICKS_ALL , 0 , 1 );
     if (result > 0 )
    {
      FRESH_TICK tick_state = CheckTickTime(a_ticks[ 0 ]);
       switch (tick_state)
      {
       case UNKNOWN_TICK: Print ( EnumToString (UNKNOWN_TICK), " - Тик не определен." ); //Тик не определен
       break ;
       case NEW_TICK: Print ( EnumToString (NEW_TICK), " - Новый тик" );     //Торговое время, можно отсылать ордера;
       break ;
       case CUR_TICK: Print ( EnumToString (CUR_TICK), " - Текущий тик" );     //По усмотрению разработчика;
       break ;
       case OLD_TICK: Print ( EnumToString (OLD_TICK), " - Старый тик" );     //По усмотрению разработчика;
       break ;
      }
    }  
  }
}
//+------------------------------------------------------------------+
//| Expert Check Market Time function                                |
//+------------------------------------------------------------------+
FRESH_TICK CheckTickTime( MqlTick &a_tick)
{
   if (a_tick.time_msc > stored_ticks[ 0 ].time_msc)
  {
    stored_ticks[ 0 ] = a_tick;
     return (NEW_TICK);
  }
   else
  {
     if (stored_ticks[ 0 ].time_msc == a_tick.time_msc)
    {
       if ((stored_ticks[ 0 ].ask == a_tick.ask) && (stored_ticks[ 0 ].bid == a_tick.bid) &&
         (stored_ticks[ 0 ].flags == a_tick.flags) && (stored_ticks[ 0 ].last == a_tick.last) &&
         (stored_ticks[ 0 ].time == a_tick.time) && (stored_ticks[ 0 ].volume == a_tick.volume) &&
         (stored_ticks[ 0 ].volume_real == a_tick.volume_real))
        {
           return (CUR_TICK);
        }
         else return (OLD_TICK);
        
    }
     else return (OLD_TICK);
  }
   return (UNKNOWN_TICK);
} 
      
 
prostotrader :

예, TC가 처음에 수신하려는 항목을 결정하지 않았을 뿐입니다.

여기에서 실행하고 확인하십시오.

Mikhail, 새로운 진드기의 도착에 대해 질문이 없습니다 / 오래된 진드기를 확인하십시오. 귀하의 코드에도. 질문이 다릅니다. 다음 상황을 확인해야 합니다.

 14 : 53 : 10.277     ProverkaAktyalnostiTikov (RTS- 3.19 ,H1)   Получен НОВЫЙ тик по символу                     GAZR- 3.19 time_msc= 2019.03 . 20 14 : 53 : 11.638
14 : 53 : 10.277     ProverkaAktyalnostiTikov (RTS- 3.19 ,H1)   ХОТЯ до этого был получeн тик                     RTS- 3.19 time_msc  2019.03 . 20 14 : 53 : 13.695
 
Alexey Kozitsyn :

Mikhail, 새로운 진드기의 도착에 대해 질문이 없습니다 / 오래된 진드기를 확인하십시오. 귀하의 코드에도. 질문이 다릅니다. 다음 상황을 확인해야 합니다.

수정한 코드(위 참조)가 나타납니다(OLD_TICK).

그리고 새 패키지에 "이전" 틱이 있을 수 있다는 사실을 알고 있는 개발자는 자신의 재량에 따라 이를 사용해야 합니다.

 
prostotrader :

수정한 코드(위 참조)가 나타납니다(OLD_TICK).

그것은 중요하지 않습니다 ... 다른 캐릭터의 스트림.

 
Alexey Kozitsyn :

그것은 중요하지 않습니다 ... 다른 캐릭터의 스트림.

그렇다면 무엇이 필요한지 전혀 이해하지 못하겠습니다????

현재 시간 이 SERVER라면 방송 전까지 잊어버려야 합니다!
또는 TimeTradeServer()를 사용하십시오.

사유: