MT5 서버와 Windows 현지 시간 동기화 - 페이지 3

 
fxsaber :
핑은 반으로 나누어야 합니다. 앞뒤로 필요하지 않고 뒤로만 해야 합니다.

MQ가 여기에만 포함된다면 어떻게 될까요?

추가됨

수정됨

추가됨

어드바이저의 보다 확실한 작업을 위해

Market Watch에서 현재의 높은 유동성을 추가해야 합니다.

RTS, Si, BR과 같은 선물

파일:
 

또한 저녁 정리에 동기화를 추가해야 합니다.

추가됨

메이드 및 인 클리어링

파일:
 

청산에 수정이 있었습니다(리얼)

2017.01 . 18 18 : 56 : 11.852 Time_sync_forts (URKA- 3.17 ,H1)  Local time sync is done.


그러나 결과는 전혀 유쾌하지 않았습니다.

49초의 지연이 있었습니다 :(

내일 프리마켓 해봐야지....

 
미칼라스, 당신은 내 우상입니다! :-)
 
Dennis Kirichenko :
미칼라스, 당신은 내 우상입니다! :-)
삼촌! 당신이 필요로하는 무엇?
 

그것이 바로 "개가 묻혀있다"는 것입니다.

Print ( "Local time sync is done. Symbol = " , symbol, " Sync min = " , loc_time.wMinute,
                           " Sync sec = " , loc_time.wSecond, " Sync mcs = " , loc_time.wMilliseconds);

2017.01 . 18 20 : 05 : 01.743 Time_sync_forts (RTS- 3.17 ,M1)   Local time sync is done. Symbol = RTS- 3.17 Sync min = 5 Sync sec = 1 Sync mcs = 428
2017.01 . 18 20 : 05 : 01.869 Time_sync_forts (RTS- 3.17 ,M1)   Local time sync is done. Symbol = Si- 3.17 Sync min = 5 Sync sec = 1 Sync mcs = 475
2017.01 . 18 20 : 05 : 01.890 Time_sync_forts (RTS- 3.17 ,M1)   Local time sync is done. Symbol = BR- 2.17 Sync min = 5 Sync sec = 2 Sync mcs = 61
2017.01 . 18 20 : 05 : 01.918 Time_sync_forts (RTS- 3.17 ,M1)   Local time sync is done. Symbol = BR- 2.17 Sync min = 5 Sync sec = 2 Sync mcs = 61
2017.01 . 18 20 : 05 : 01.942 Time_sync_forts (RTS- 3.17 ,M1)   Local time sync is done. Symbol = RTS- 3.17 Sync min = 5 Sync sec = 1 Sync mcs = 428
2017.01 . 18 20 : 05 : 01.942 Time_sync_forts (RTS- 3.17 ,M1)   Local time sync is done. Symbol = Si- 3.17 Sync min = 5 Sync sec = 1 Sync mcs = 475
2017.01 . 18 20 : 05 : 01.983 Time_sync_forts (RTS- 3.17 ,M1)   Local time sync is done. Symbol = RTS- 3.17 Sync min = 5 Sync sec = 2 Sync mcs = 156
2017.01 . 18 20 : 05 : 02.055 Time_sync_forts (RTS- 3.17 ,M1)   Local time sync is done. Symbol = BR- 2.17 Sync min = 5 Sync sec = 2 Sync mcs = 61
2017.01 . 18 20 : 05 : 02.081 Time_sync_forts (RTS- 3.17 ,M1)   Local time sync is done. Symbol = RTS- 3.17 Sync min = 5 Sync sec = 2 Sync mcs = 156
2017.01 . 18 20 : 05 : 02.081 Time_sync_forts (RTS- 3.17 ,M1)   Local time sync is done. Symbol = Si- 3.17 Sync min = 5 Sync sec = 1 Sync mcs = 475
2017.01 . 18 20 : 05 : 02.121 Time_sync_forts (RTS- 3.17 ,M1)   Local time sync is done. Symbol = RTS- 3.17 Sync min = 5 Sync sec = 2 Sync mcs = 156
2017.01 . 18 20 : 05 : 02.216 Time_sync_forts (RTS- 3.17 ,M1)   Local time sync is done. Symbol = BR- 2.17 Sync min = 5 Sync sec = 2 Sync mcs = 385
2017.01 . 18 20 : 05 : 02.242 Time_sync_forts (RTS- 3.17 ,M1)   Local time sync is done. Symbol = BR- 2.17 Sync min = 5 Sync sec = 2 Sync mcs = 385
2017.01 . 18 20 : 05 : 02.255 Time_sync_forts (RTS- 3.17 ,M1)   Local time sync is done. Symbol = RTS- 3.17 Sync min = 5 Sync sec = 2 Sync mcs = 156
2017.01 . 18 20 : 05 : 02.255 Time_sync_forts (RTS- 3.17 ,M1)   Local time sync is done. Symbol = Si- 3.17 Sync min = 5 Sync sec = 1 Sync mcs = 475
2017.01 . 18 20 : 05 : 02.314 Time_sync_forts (RTS- 3.17 ,M1)   Local time sync is done. Symbol = Si- 3.17 Sync min = 5 Sync sec = 1 Sync mcs = 475
2017.01 . 18 20 : 05 : 02.405 Time_sync_forts (RTS- 3.17 ,M1)   Local time sync is done. Symbol = Si- 3.17 Sync min = 5 Sync sec = 1 Sync mcs = 475
2017.01 . 18 20 : 05 : 02.432 Time_sync_forts (RTS- 3.17 ,M1)   Local time sync is done. Symbol = RTS- 3.17 Sync min = 5 Sync sec = 2 Sync mcs = 156
2017.01 . 18 20 : 05 : 02.432 Time_sync_forts (RTS- 3.17 ,M1)   Local time sync is done. Symbol = Si- 3.17 Sync min = 5 Sync sec = 2 Sync mcs = 614
 

이전 목발은 (설계상) 훨씬 더 우아했지만,

이걸로 해봐

//+------------------------------------------------------------------+
//|                                              Time_sync_forts.mq5 |
//|                                      Copyright 2017 prostotrader |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017 prostotrader"
#property link        "https://www.mql5.com"
#property version    "1.00"
//---
struct _SYSTEMTIME
  {
   ushort             wYear;
   ushort             wMonth;
   ushort             wDayOfWeek;
   ushort             wDay;
   ushort             wHour;
   ushort             wMinute;
   ushort             wSecond;
   ushort             wMilliseconds;
  };

_SYSTEMTIME loc_time;

#import "kernel32.dll"
void GetLocalTime(_SYSTEMTIME &sys_time);
bool SetLocalTime(_SYSTEMTIME &sys_time);
#import
//---
bool      is_sync;
string    symb_rts;
string    symb_si;
string    symb_gold;
string    symb_br;
string    symb_gazr;
string    symb_sbrf;
datetime last_time;
//
input string BrInstr= "BR-2.17" ; //Brent
//+------------------------------------------------------------------+
//| Expert set second symbol function                                |
//+------------------------------------------------------------------+
string SetSecSymbol( const string a_symbol, const string prefix)
  {
   int str_tire= 0 ;
   ushort let_symbol;
   int str_size= StringLen (a_symbol);

   for ( int i= 0 ; i<str_size; i++)
     {
      let_symbol= StringGetCharacter (a_symbol,i);

       if (let_symbol== '-' )
        {
         str_tire=i;
         break ;
        }
     }
   if (str_tire> 0 )
     {
       return (prefix + StringSubstr (a_symbol, str_tire, str_size - str_tire));
     }
   return ( "" );
  }
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit ()
  {
   last_time= TimeCurrent ();
   is_sync= false ;
   MarketBookAdd ( Symbol ());
//---  
   symb_rts=SetSecSymbol( Symbol (), "RTS" );
   if (! SymbolSelect (symb_rts, true ))
     {
       MessageBox (symb_rts+ " not found in the Market watch!" , "Error" , MB_OK | MB_ICONERROR );
       return ( INIT_FAILED );
     }
   else MarketBookAdd (symb_rts);
//---  
   symb_si=SetSecSymbol( Symbol (), "Si" );
   if (! SymbolSelect (symb_si, true ))
     {
       MessageBox (symb_si+ " not found in the Market watch!" , "Error" , MB_OK | MB_ICONERROR );
       return ( INIT_FAILED );
     }
   else MarketBookAdd (symb_si);
//---
   symb_gold=SetSecSymbol( Symbol (), "GOLD" );
   if (! SymbolSelect (symb_gold, true ))
     {
       MessageBox (symb_gold+ " not found in the Market watch!" , "Error" , MB_OK | MB_ICONERROR );
       return ( INIT_FAILED );
     }
   else MarketBookAdd (symb_gold);
//---
   symb_gazr=SetSecSymbol( Symbol (), "GAZR" );
   if (! SymbolSelect (symb_gazr, true ))
     {
       MessageBox (symb_gazr+ " not found in the Market watch!" , "Error" , MB_OK | MB_ICONERROR );
       return ( INIT_FAILED );
     }
   else MarketBookAdd (symb_gazr);
//---
   symb_sbrf=SetSecSymbol( Symbol (), "SBRF" );
   if (! SymbolSelect (symb_sbrf, true ))
     {
       MessageBox (symb_sbrf+ " not found in the Market watch!" , "Error" , MB_OK | MB_ICONERROR );
       return ( INIT_FAILED );
     }
   else MarketBookAdd (symb_sbrf);
//---
   symb_br=BrInstr;
   if (! SymbolSelect (symb_br, true ))
     {
       MessageBox (symb_br+ " not found in the Market watch!" , "Error" , MB_OK | MB_ICONERROR );
       return ( INIT_FAILED );
     }
   else MarketBookAdd (symb_br);
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {
   MarketBookRelease ( Symbol ());
   MarketBookRelease (symb_rts);
   MarketBookRelease (symb_br);
   MarketBookRelease (symb_si);
   MarketBookRelease (symb_gold);
   MarketBookRelease (symb_gazr);
   MarketBookRelease (symb_sbrf);
  }
//+------------------------------------------------------------------+
//| Expert On book event function                                    |
//+------------------------------------------------------------------+
void OnBookEvent ( const string &symbol)
  {
   loc_time.wYear= 0 ;
   GetLocalTime(loc_time);
   if (loc_time.wYear> 0 )
     {
       if (((loc_time.wHour== 9 ) && (loc_time.wMinute>= 50 ) && (loc_time.wMinute<= 59 )) ||
         ((loc_time.wHour== 14 ) && (loc_time.wMinute>= 0 ) && (loc_time.wMinute<= 4 )) ||
         ((loc_time.wHour== 18 ) && (loc_time.wMinute>= 45 ) && (loc_time.wMinute<= 59 )))
        {
         MqlDateTime sv_time;
         datetime cur_time= TimeCurrent (sv_time);
         if ( ulong (cur_time) == ulong (last_time)) return ;
         if ((loc_time.wDayOfWeek== ushort (sv_time.day_of_week)) &&
            (loc_time.wHour== ushort (sv_time.hour)))
           {
              
               if (!is_sync)
                 {
                  loc_time.wMinute = ushort (sv_time.min);
                  loc_time.wSecond = ushort (sv_time.sec);
                  loc_time.wMilliseconds= 0 ;
                   if (SetLocalTime(loc_time))
                    {
                     is_sync= true ;
                     Print ( "Local time sync is done. Symbol = " ,symbol, " Sync min = " ,loc_time.wMinute,
                           " Sync sec = " ,loc_time.wSecond);
                    }
                 }
              
           }
        }
       else
        {
         is_sync= false ;
         last_time= TimeCurrent ();
        }
     }
  }
//+------------------------------------------------------------------+
 
prostotrader :

이전 목발은 (설계상) 훨씬 더 우아했지만,

이걸로 해봐

OnBookEvent 에서는 아무 것도 작동하지 않습니다. OnTick 에서 동기화해야 합니다.

틱 시간을 사용하는 것으로 나타났고 주문서 변경 중에 데이터를 가져옵니다.

시간 OnBookEvent != OnTick

 
Sergey Chalyshev :

OnBookEvent 에서는 아무 것도 작동하지 않습니다. OnTick 에서 동기화해야 합니다.

틱 시간을 사용하는 것으로 나타났고 주문서 변경 중에 데이터를 가져옵니다.

시간 OnBookEvent != OnTick

아니, 세료자!

선택한 기호의 OnTick이 오지 않을 수 있지만 OnBookEvent()는 변경 사항에 대해 실행됩니다.

선택한 모든 악기의 안경.

 
prostotrader :

아니, 세료자!

선택한 기호의 OnTick이 오지 않을 수 있지만 OnBookEvent()는 변경 사항에 대해 실행됩니다.

선택한 모든 악기의 안경.

OnBookEvent()가 발생하지만 주문서 변경 시간은 어디에도 고정되어 있지 않습니다.

틱 도착 시간만 고정되어 있습니다. i.е. 입찰가를 변경하고 마지막으로 묻습니다.

유리가 바뀌었고 마지막 진드기가 도착한 시간을 구하는 것으로 나타났습니다.