MT5 서버와 Windows 현지 시간 동기화 - 페이지 7 1234567891011121314...17 새 코멘트 fxsaber 2017.01.20 17:05 #61 prostotrader : 2017.01.13 10:00:03.979 Trades 'xxxxx': failed sell limit 1.00 ED-6.17 at 1.0813 [Market closed] 브로커 응답 2017.01 . 13 09 : 59 : 58.100 * reject (Market closed) for '*' (sell limit 1.00 ED- 6.17 at 1.0813 )( 1.0641 / 1.0814 / 1.0695 ) 분명히, 나는 교환 로그와 로컬 로그에서 같은 시간을보고 싶습니다. 개발자가 로그에 로컬뿐만 아니라 이벤트의 서버 시간까지 기록해야 하는 시점입니다. 그러면 동기화가 필요하지 않습니다. 그러나 현지 시간이 아닌 서버 시간에 초점을 맞춰 지정가 주문을 보냈습니다. 그리고 서버실은 이미 거래소 오픈 시간인 10시를 가리키고 있었다. 이는 서버 시간이 교환 시간과 동기화되지 않았음을 의미합니다. Sergey Chalyshev 2017.01.20 17:07 #62 prostotrader : 바로, 오늘 10시 이후 (동기화는 사전 판매 중이었습니다) 현지 시간은 Market Watch의 시간과 7초 차이가 났습니다. :( 내 코드를 시도하십시오. 동기화 후 자체 파괴를 추가했습니다. 코드 베이스에 넣어 잃어버리지 않도록 하겠습니다. prostotrader 2017.01.20 17:12 #63 Sergey Chalyshev : 새로운 견적이 나왔고 주문서가 변경되었습니다. 이것은 다른 이벤트입니다. 오더북 변경 시 매도 위 또는 매도 아래에 주문이 추가(제거)되면 OnBookEvent() 이벤트가 발생하지만 이것은 새로운 견적이 아니며 틱 히스토리에 들어가지 않으므로 마지막으로 알려진 서버 시간 변하지 않는다. 어떻게 더 설명해야 할지 모르겠어, 장난해? )) 젠장, 확실히, 내가 망쳤어, 인용문이 최고가 아닐 수도 있습니다! 그런 다음 SymbolInfoTick() 을 사용해야 합니다. Seryoga 감사합니다! 추가됨 MqlTick curr_tick; if ( SymbolInfoTick (symbol, curr_tick)) //if(CopyTicks(symbol,curr_tick,COPY_TICKS_INFO,0,1)==1) Sergey Chalyshev 2017.01.20 17:12 #64 fxsaber : 분명히, 나는 교환 로그와 로컬 로그에서 같은 시간을보고 싶습니다. 개발자가 로그에 로컬뿐만 아니라 이벤트의 서버 시간까지 기록해야 하는 시점입니다. 그러면 동기화가 필요하지 않습니다. 그러나 현지 시간이 아닌 서버 시간에 초점을 맞춰 지정가 주문을 보냈습니다. 그리고 서버실은 이미 거래소 오픈 시간인 10시를 가리키고 있었다. 이는 서버 시간이 교환 시간과 동기화되지 않았음을 의미합니다. 일반적으로 시간 동기화는 [시장 폐쇄] 에서 당신을 저장하지 않으며 , 거래소는 나중에 거래를 켜고 거래 시간 동안 거래를 중단할 수 있습니다 . 여기에는 다른 접근 방식이 필요합니다. prostotrader 2017.01.20 17:15 #65 fxsaber : 분명히, 나는 교환 로그와 로컬 로그에서 같은 시간을보고 싶습니다. 개발자가 로그에 로컬뿐만 아니라 이벤트의 서버 시간까지 기록해야 하는 시점입니다. 그러면 동기화가 필요하지 않습니다. 그러나 현지 시간이 아닌 서버 시간에 초점을 맞춰 지정가 주문을 보냈습니다. 그리고 서버실은 이미 거래소 오픈 시간인 10시를 가리키고 있었다. 이는 서버 시간이 교환 시간과 동기화되지 않았음을 의미합니다. 어떻게 서버 시간을 얻을 수 있습니까? 이렇게 거래시간을 확인합니다 //+------------------------------------------------------------------+ //| Expert Check traiding time function | //+------------------------------------------------------------------+ bool CheckTradingTime( MqlDateTime &tick_time){ datetime lk_time = TimeTradeServer (tick_time); if ( ( tick_time.day_of_week == int (FirstDay)) || ( tick_time.day_of_week == int (SecondDay))) //выходные { return ( false ); } #ifdef DEBUG if ((tick_time.hour >= 0 ) && (tick_time.hour < 6 )) // DEBUG 6-00 { return ( false ); } #else if ((tick_time.hour >= 0 ) && (tick_time.hour < 10 )) { return ( false ); } #endif // 13 * 3600 + 59 * 60 + 30 = 50370 - 13:59:30 // 14 * 3600 = 50400 - 14:00:00 // 14 * 3600 + 30 = 50430 - 14:00:30 // 14 * 3600 + 60 = 50460 - 14:01:00 // 18 * 3600 + 44 * 60 + 30 = 67470 - 18:44:30 // 18 * 3600 + 45 * 60 = 67500 - 18:45:00 // 18 * 3600 + 45 * 60 + 30 = 67530 - 18:45:30 // 18 * 3600 + 46 * 60 = 67560 - 18:46:00 // 19 * 3600 = 68400 - 19:00:00 // 19 * 3600 + 60 = 68460 - 19:01:00 // 23 * 3600 + 49 * 60 + 30 = 85770 - 23:49:30 // 23 * 3600 + 50 * 60 = 85800 - 23:50:00 // 23 * 3600 + 50 * 60 + 30 = 85830 - 23:50:30 // 23 * 3600 + 51 * 60 = 85860 - 23:51:00 //--- ulong trade_time = tick_time.hour * 3600 + tick_time.min * 60 + tick_time.sec; //--- //10:00:02 if (((trade_time >= time_st_mon) && (trade_time < 50370 )) || ((trade_time >= time_st_day) && (trade_time < 67470 )) || ((trade_time >= time_st_evn) && (trade_time < 85770 ))) { return ( true ); } return ( false ); } 그리고 TimeTradeServer() TimeCurrent()는 "오래된" 시간을 가질 수 있는 반면 현지 시간을 제공합니다:( Synchronise Windows local time Market closed 장 마감 Sergey Chalyshev 2017.01.20 17:32 #66 prostotrader : 그러나 나와 당신의 접근 방식의 차이는 큽니다. 제 경우에는 저유동성 상품(예: UUAH)에 대한 Expert Advisor를 사용하여 모든 선물의 주문서를 추가할 수 있습니다. 터미널에서 다른 전문가의 작업에 대해 생각하지 않고 사전 시장에서 틱을 얻을 보장. 즉, 모든 새 견적은 별도의 전문가 고문에게 "이동"됩니다. 추가됨 누구와도 간섭하지 않고 동기화만 "처리"합니다. 또한 별도의 Expert Advisor에서 다른 계측기의 틱을 받을 수 있으며 이는 사용자 지정 이벤트를 통해 수행해야 합니다. 그러나 나는 그것이 불필요하다고 생각합니다. 적어도 저는 필요하지 않습니다. prostotrader 2017.01.20 17:41 #67 Sergey Chalyshev : 또한 별도의 Expert Advisor에서 다른 계측기의 틱을 받을 수 있으며 이는 사용자 지정 이벤트를 통해 수행해야 합니다. 그러나 나는 그것이 불필요하다고 생각합니다. 적어도 저는 필요하지 않습니다. 그리고 당신은 내 것을 시도합니다 (청산되지 않음) 매일 거래 전 동기화 //+------------------------------------------------------------------+ //| 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.01" //--- 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; // input string BrInstr = "BR-2.17" ; //Brent input ENUM_DAY_OF_WEEK FirstDay = SATURDAY ; //Первый выходной input ENUM_DAY_OF_WEEK SecondDay = SUNDAY ; //Второй выходной //+------------------------------------------------------------------+ //| 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 () { 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 Convert To Time function | //+------------------------------------------------------------------+ bool ConvertToTime( const long n_value,_SYSTEMTIME &a_time) { a_time.wMilliseconds= ushort (n_value% 1000 ); ulong new_time= ulong ( double (n_value)/ 1000 ); MqlDateTime cur_time = { 0 }; TimeToStruct ( datetime (new_time),cur_time); if (cur_time.year> 0 ) { a_time.wDay= ushort (cur_time.day); a_time.wDayOfWeek= ushort (cur_time.day_of_week); a_time.wHour= ushort (cur_time.hour); a_time.wMinute= ushort (cur_time.min); a_time.wMonth = ushort (cur_time.mon); a_time.wSecond= ushort (cur_time.sec); a_time.wYear= ushort (cur_time.year); return ( true ); } return ( false ); } //+------------------------------------------------------------------+ //| Expert On book event function | //+------------------------------------------------------------------+ void OnBookEvent ( const string &symbol) { loc_time.wYear= 0 ; GetLocalTime(loc_time); if (loc_time.wYear> 0 ) { if (( int (loc_time.wDayOfWeek) == int (FirstDay)) || ( int (loc_time.wDayOfWeek) == int (SecondDay))) return ; if ((loc_time.wHour== 9 ) && (loc_time.wMinute>= 50 ) && (loc_time.wMinute<= 59 )) { MqlTick curr_tick; if ( SymbolInfoTick (symbol, curr_tick)) //if(CopyTicks(symbol,curr_tick,COPY_TICKS_INFO,0,1)==1) { MqlDateTime sv_time; TimeToStruct (curr_tick.time,sv_time); if (!is_sync) { if ((loc_time.wDayOfWeek== ushort (sv_time.day_of_week)) && (loc_time.wHour== ushort (sv_time.hour))) { long last_ping= long ( NormalizeDouble (( double ( TerminalInfoInteger ( TERMINAL_PING_LAST ))/ 1000 )/ 2 , 0 )); long mls_time= long (curr_tick.time_msc% 1000 ); if ((mls_time+last_ping)> 999 ) { mls_time= long (curr_tick.time_msc)+last_ping; if (!ConvertToTime(mls_time, loc_time)) return ; } else { loc_time.wMinute = ushort (sv_time.min); loc_time.wSecond = ushort (sv_time.sec); loc_time.wMilliseconds= ushort (mls_time); } 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, " Sync ms = " , loc_time.wMilliseconds); } } } } } else is_sync= false ; } } //+------------------------------------------------------------------+ Synchronise Windows local time new mql4 providing millisecond Market closed fxsaber 2017.01.20 18:12 #68 prostotrader : 그리고 당신은 내 것을 시도합니다 (청산되지 않음) 동일한 코드가 훨씬 더 간결할 수 있습니다. prostotrader 2017.01.20 18:17 #69 fxsaber : 동일한 코드가 훨씬 더 간결할 수 있습니다. 물론 사람마다 능력과 능력이 다릅니다. 당신의 것을 보는 것이 흥미 롭습니다. prostotrader 2017.01.20 21:11 #70 이 코드를 복조 MqlTick cur_tick, ct_tick[]; if ( SymbolInfoTick (symb_gold, cur_tick)) { int result = CopyTicks (symb_gold, ct_tick, COPY_TICKS_INFO , 0 , 10 ); if (result> 0 ) { Print (" SymbolInfoTick symbiol = ", symb_gold, " time = ", cur_tick.time, ".", cur_tick.time_msc% 1000 ); for ( int i = result- 1 ; i >= 0 ; i--) { Print (" CopyTicks symbol = ", symb_gold, " time ", string (i), " = ", ct_tick[i].time, ".", ct_tick[i].time_msc% 1000 ); } } } 그리고 그 결과에 약간 놀랐다 2017.01 . 21 00 : 07 : 41.444 Time_sync_forts (ED- 3.17 ,M1) SymbolInfoTick symbiol = GOLD- 3.17 time = 2017.01 . 20 22 : 14 : 48.0 2017.01 . 21 00 : 07 : 41.444 Time_sync_forts (ED- 3.17 ,M1) CopyTicks symbol = GOLD- 3.17 time 9 = 2017.01 . 20 22 : 13 : 36.774 2017.01 . 21 00 : 07 : 41.444 Time_sync_forts (ED- 3.17 ,M1) CopyTicks symbol = GOLD- 3.17 time 8 = 2017.01 . 20 22 : 13 : 36.774 2017.01 . 21 00 : 07 : 41.444 Time_sync_forts (ED- 3.17 ,M1) CopyTicks symbol = GOLD- 3.17 time 7 = 2017.01 . 20 22 : 13 : 36.774 2017.01 . 21 00 : 07 : 41.444 Time_sync_forts (ED- 3.17 ,M1) CopyTicks symbol = GOLD- 3.17 time 6 = 2017.01 . 20 22 : 11 : 14.395 2017.01 . 21 00 : 07 : 41.444 Time_sync_forts (ED- 3.17 ,M1) CopyTicks symbol = GOLD- 3.17 time 5 = 2017.01 . 20 22 : 09 : 47.452 2017.01 . 21 00 : 07 : 41.444 Time_sync_forts (ED- 3.17 ,M1) CopyTicks symbol = GOLD- 3.17 time 4 = 2017.01 . 20 22 : 09 : 47.452 2017.01 . 21 00 : 07 : 41.444 Time_sync_forts (ED- 3.17 ,M1) CopyTicks symbol = GOLD- 3.17 time 3 = 2017.01 . 20 22 : 08 : 34.290 2017.01 . 21 00 : 07 : 41.444 Time_sync_forts (ED- 3.17 ,M1) CopyTicks symbol = GOLD- 3.17 time 2 = 2017.01 . 20 22 : 07 : 29.704 2017.01 . 21 00 : 07 : 41.444 Time_sync_forts (ED- 3.17 ,M1) CopyTicks symbol = GOLD- 3.17 time 1 = 2017.01 . 20 22 : 07 : 29.704 2017.01 . 21 00 : 07 : 41.444 Time_sync_forts (ED- 3.17 ,M1) CopyTicks symbol = GOLD- 3.17 time 0 = 2017.01 . 20 22 : 06 : 35.386 2017.01 . 21 00 : 08 : 28.961 Time_sync_forts (ED- 3.17 ,M1) debugging terminated CopyTicks()가 마지막 틱을 저장하지 않는다는 것이 밝혀졌습니다. 추가됨 MqlTick cur_tick, ct_tick[]; if ( SymbolInfoTick (symb_gold, cur_tick)) { int result = CopyTicks (symb_gold, ct_tick, COPY_TICKS_TRADE , 0 , 10 ); if (result> 0 ) { Print (" SymbolInfoTick symbiol = ", symb_gold, " time = ", cur_tick.time, ".", cur_tick.time_msc% 1000 ); for ( int i = result- 1 ; i >= 0 ; i--) { Print (" CopyTicks symbol = ", symb_gold, " time ", string (i), " = ", ct_tick[i].time, ".", ct_tick[i].time_msc% 1000 ); } } } 결과 2017.01 . 21 00 : 15 : 54.670 Time_sync_forts (ED- 3.17 ,M1) SymbolInfoTick symbiol = GOLD- 3.17 time = 2017.01 . 20 22 : 14 : 48.0 2017.01 . 21 00 : 15 : 54.670 Time_sync_forts (ED- 3.17 ,M1) CopyTicks symbol = GOLD- 3.17 time 9 = 2017.01 . 20 21 : 59 : 59.658 2017.01 . 21 00 : 15 : 54.670 Time_sync_forts (ED- 3.17 ,M1) CopyTicks symbol = GOLD- 3.17 time 8 = 2017.01 . 20 21 : 57 : 54.512 2017.01 . 21 00 : 15 : 54.670 Time_sync_forts (ED- 3.17 ,M1) CopyTicks symbol = GOLD- 3.17 time 7 = 2017.01 . 20 21 : 57 : 54.512 2017.01 . 21 00 : 15 : 54.670 Time_sync_forts (ED- 3.17 ,M1) CopyTicks symbol = GOLD- 3.17 time 6 = 2017.01 . 20 21 : 57 : 54.245 2017.01 . 21 00 : 15 : 54.670 Time_sync_forts (ED- 3.17 ,M1) CopyTicks symbol = GOLD- 3.17 time 5 = 2017.01 . 20 21 : 57 : 54.245 2017.01 . 21 00 : 15 : 54.670 Time_sync_forts (ED- 3.17 ,M1) CopyTicks symbol = GOLD- 3.17 time 4 = 2017.01 . 20 21 : 57 : 00.562 2017.01 . 21 00 : 15 : 54.670 Time_sync_forts (ED- 3.17 ,M1) CopyTicks symbol = GOLD- 3.17 time 3 = 2017.01 . 20 21 : 56 : 45.159 2017.01 . 21 00 : 15 : 54.670 Time_sync_forts (ED- 3.17 ,M1) CopyTicks symbol = GOLD- 3.17 time 2 = 2017.01 . 20 21 : 56 : 13.601 2017.01 . 21 00 : 15 : 54.670 Time_sync_forts (ED- 3.17 ,M1) CopyTicks symbol = GOLD- 3.17 time 1 = 2017.01 . 20 21 : 55 : 16.852 2017.01 . 21 00 : 15 : 54.670 Time_sync_forts (ED- 3.17 ,M1) CopyTicks symbol = GOLD- 3.17 time 0 = 2017.01 . 20 21 : 54 : 16.303 MqlTick cur_tick, ct_tick[]; if ( SymbolInfoTick (symb_gold, cur_tick)) { int result = CopyTicks (symb_gold, ct_tick, COPY_TICKS_ALL , 0 , 10 ); if (result> 0 ) { Print (" SymbolInfoTick symbiol = ", symb_gold, " time = ", cur_tick.time, ".", cur_tick.time_msc% 1000 ); for ( int i = result- 1 ; i >= 0 ; i--) { Print (" CopyTicks symbol = ", symb_gold, " time ", string (i), " = ", ct_tick[i].time, ".", ct_tick[i].time_msc% 1000 ); } } } 결과 2017.01 . 21 00 : 17 : 55.966 Time_sync_forts (ED- 3.17 ,M1) SymbolInfoTick symbiol = GOLD- 3.17 time = 2017.01 . 20 22 : 14 : 48.0 2017.01 . 21 00 : 17 : 55.966 Time_sync_forts (ED- 3.17 ,M1) CopyTicks symbol = GOLD- 3.17 time 9 = 2017.01 . 20 22 : 13 : 36.774 2017.01 . 21 00 : 17 : 55.966 Time_sync_forts (ED- 3.17 ,M1) CopyTicks symbol = GOLD- 3.17 time 8 = 2017.01 . 20 22 : 13 : 36.774 2017.01 . 21 00 : 17 : 55.966 Time_sync_forts (ED- 3.17 ,M1) CopyTicks symbol = GOLD- 3.17 time 7 = 2017.01 . 20 22 : 13 : 36.774 2017.01 . 21 00 : 17 : 55.966 Time_sync_forts (ED- 3.17 ,M1) CopyTicks symbol = GOLD- 3.17 time 6 = 2017.01 . 20 22 : 11 : 14.395 2017.01 . 21 00 : 17 : 55.966 Time_sync_forts (ED- 3.17 ,M1) CopyTicks symbol = GOLD- 3.17 time 5 = 2017.01 . 20 22 : 09 : 47.452 2017.01 . 21 00 : 17 : 55.966 Time_sync_forts (ED- 3.17 ,M1) CopyTicks symbol = GOLD- 3.17 time 4 = 2017.01 . 20 22 : 09 : 47.452 2017.01 . 21 00 : 17 : 55.966 Time_sync_forts (ED- 3.17 ,M1) CopyTicks symbol = GOLD- 3.17 time 3 = 2017.01 . 20 22 : 08 : 34.290 2017.01 . 21 00 : 17 : 55.966 Time_sync_forts (ED- 3.17 ,M1) CopyTicks symbol = GOLD- 3.17 time 2 = 2017.01 . 20 22 : 07 : 29.704 2017.01 . 21 00 : 17 : 55.966 Time_sync_forts (ED- 3.17 ,M1) CopyTicks symbol = GOLD- 3.17 time 1 = 2017.01 . 20 22 : 07 : 29.704 2017.01 . 21 00 : 17 : 55.966 Time_sync_forts (ED- 3.17 ,M1) CopyTicks symbol = GOLD- 3.17 time 0 = 2017.01 . 20 22 : 06 : 35.386 아무도 설명 할 수 있습니까? 추가됨 RTS도 마찬가지입니다. 2017.01 . 21 00 : 20 : 42.464 Time_sync_forts (ED- 3.17 ,M1) debugging terminated 2017.01 . 21 00 : 21 : 11.589 Time_sync_forts (ED- 3.17 ,M1) SymbolInfoTick symbiol = RTS- 3.17 time = 2017.01 . 20 22 : 14 : 55.0 2017.01 . 21 00 : 21 : 11.589 Time_sync_forts (ED- 3.17 ,M1) CopyTicks symbol = RTS- 3.17 time 9 = 2017.01 . 20 22 : 12 : 41.619 2017.01 . 21 00 : 21 : 11.589 Time_sync_forts (ED- 3.17 ,M1) CopyTicks symbol = RTS- 3.17 time 8 = 2017.01 . 20 22 : 12 : 41.619 2017.01 . 21 00 : 21 : 11.589 Time_sync_forts (ED- 3.17 ,M1) CopyTicks symbol = RTS- 3.17 time 7 = 2017.01 . 20 22 : 12 : 41.619 2017.01 . 21 00 : 21 : 11.589 Time_sync_forts (ED- 3.17 ,M1) CopyTicks symbol = RTS- 3.17 time 6 = 2017.01 . 20 22 : 12 : 02.202 2017.01 . 21 00 : 21 : 11.589 Time_sync_forts (ED- 3.17 ,M1) CopyTicks symbol = RTS- 3.17 time 5 = 2017.01 . 20 22 : 11 : 00.754 2017.01 . 21 00 : 21 : 11.589 Time_sync_forts (ED- 3.17 ,M1) CopyTicks symbol = RTS- 3.17 time 4 = 2017.01 . 20 22 : 08 : 35.153 2017.01 . 21 00 : 21 : 11.589 Time_sync_forts (ED- 3.17 ,M1) CopyTicks symbol = RTS- 3.17 time 3 = 2017.01 . 20 22 : 08 : 23.548 2017.01 . 21 00 : 21 : 11.589 Time_sync_forts (ED- 3.17 ,M1) CopyTicks symbol = RTS- 3.17 time 2 = 2017.01 . 20 22 : 07 : 28.512 2017.01 . 21 00 : 21 : 11.589 Time_sync_forts (ED- 3.17 ,M1) CopyTicks symbol = RTS- 3.17 time 1 = 2017.01 . 20 22 : 07 : 28.512 2017.01 . 21 00 : 21 : 11.589 Time_sync_forts (ED- 3.17 ,M1) CopyTicks symbol = RTS- 3.17 time 0 = 2017.01 . 20 22 : 07 : 28.512 추가됨 그리고 그것은 포효에서도 마찬가지입니다. 2017.01 . 21 00 : 44 : 21.893 Time_sync_forts (ALRS- 3.17 ,H1) SymbolInfoTick symbiol = Si- 3.17 time = 2017.01 . 20 23 : 59 : 56.959 2017.01 . 21 00 : 44 : 21.895 Time_sync_forts (ALRS- 3.17 ,H1) CopyTicks symbol = Si- 3.17 time 9 = 2017.01 . 20 23 : 54 : 35.904 2017.01 . 21 00 : 44 : 21.895 Time_sync_forts (ALRS- 3.17 ,H1) CopyTicks symbol = Si- 3.17 time 8 = 2017.01 . 20 23 : 53 : 04.867 2017.01 . 21 00 : 44 : 21.895 Time_sync_forts (ALRS- 3.17 ,H1) CopyTicks symbol = Si- 3.17 time 7 = 2017.01 . 20 23 : 51 : 55.889 2017.01 . 21 00 : 44 : 21.895 Time_sync_forts (ALRS- 3.17 ,H1) CopyTicks symbol = Si- 3.17 time 6 = 2017.01 . 20 23 : 50 : 55.731 2017.01 . 21 00 : 44 : 21.895 Time_sync_forts (ALRS- 3.17 ,H1) CopyTicks symbol = Si- 3.17 time 5 = 2017.01 . 20 23 : 49 : 59.296 2017.01 . 21 00 : 44 : 21.895 Time_sync_forts (ALRS- 3.17 ,H1) CopyTicks symbol = Si- 3.17 time 4 = 2017.01 . 20 23 : 49 : 59.59 2017.01 . 21 00 : 44 : 21.895 Time_sync_forts (ALRS- 3.17 ,H1) CopyTicks symbol = Si- 3.17 time 3 = 2017.01 . 20 23 : 49 : 58.937 2017.01 . 21 00 : 44 : 21.895 Time_sync_forts (ALRS- 3.17 ,H1) CopyTicks symbol = Si- 3.17 time 2 = 2017.01 . 20 23 : 49 : 58.934 2017.01 . 21 00 : 44 : 21.895 Time_sync_forts (ALRS- 3.17 ,H1) CopyTicks symbol = Si- 3.17 time 1 = 2017.01 . 20 23 : 49 : 58.933 2017.01 . 21 00 : 44 : 21.895 Time_sync_forts (ALRS- 3.17 ,H1) CopyTicks symbol = Si- 3.17 time 0 = 2017.01 . 20 23 : 49 : 58.933 2017.01 . 21 00 : 44 : 24.151 Time_sync_forts (ALRS- 3.17 ,H1) debugging terminated Synchronise Windows local time BrainSystem: Trading System Development BrainSystem: 거래 시스템 개발 1234567891011121314...17 새 코멘트 트레이딩 기회를 놓치고 있어요: 무료 트레이딩 앱 복사용 8,000 이상의 시그널 금융 시장 개척을 위한 경제 뉴스 등록 로그인 공백없는 라틴 문자 비밀번호가 이 이메일로 전송될 것입니다 오류 발생됨 Google으로 로그인 웹사이트 정책 및 이용약관에 동의합니다. 계정이 없으시면, 가입하십시오 MQL5.com 웹사이트에 로그인을 하기 위해 쿠키를 허용하십시오. 브라우저에서 필요한 설정을 활성화하시지 않으면, 로그인할 수 없습니다. 사용자명/비밀번호를 잊으셨습니까? Google으로 로그인
브로커 응답
분명히, 나는 교환 로그와 로컬 로그에서 같은 시간을보고 싶습니다. 개발자가 로그에 로컬뿐만 아니라 이벤트의 서버 시간까지 기록해야 하는 시점입니다. 그러면 동기화가 필요하지 않습니다.
그러나 현지 시간이 아닌 서버 시간에 초점을 맞춰 지정가 주문을 보냈습니다. 그리고 서버실은 이미 거래소 오픈 시간인 10시를 가리키고 있었다. 이는 서버 시간이 교환 시간과 동기화되지 않았음을 의미합니다.
바로, 오늘 10시 이후 (동기화는 사전 판매 중이었습니다)
현지 시간은 Market Watch의 시간과 7초 차이가 났습니다. :(
새로운 견적이 나왔고 주문서가 변경되었습니다. 이것은 다른 이벤트입니다. 오더북 변경 시 매도 위 또는 매도 아래에 주문이 추가(제거)되면 OnBookEvent() 이벤트가 발생하지만 이것은 새로운 견적이 아니며 틱 히스토리에 들어가지 않으므로 마지막으로 알려진 서버 시간 변하지 않는다.
어떻게 더 설명해야 할지 모르겠어, 장난해? ))
젠장, 확실히, 내가 망쳤어, 인용문이 최고가 아닐 수도 있습니다!
그런 다음 SymbolInfoTick() 을 사용해야 합니다.
Seryoga 감사합니다!
추가됨
if ( SymbolInfoTick (symbol, curr_tick))
//if(CopyTicks(symbol,curr_tick,COPY_TICKS_INFO,0,1)==1)
분명히, 나는 교환 로그와 로컬 로그에서 같은 시간을보고 싶습니다. 개발자가 로그에 로컬뿐만 아니라 이벤트의 서버 시간까지 기록해야 하는 시점입니다. 그러면 동기화가 필요하지 않습니다.
그러나 현지 시간이 아닌 서버 시간에 초점을 맞춰 지정가 주문을 보냈습니다. 그리고 서버실은 이미 거래소 오픈 시간인 10시를 가리키고 있었다. 이는 서버 시간이 교환 시간과 동기화되지 않았음을 의미합니다.
일반적으로 시간 동기화는 [시장 폐쇄] 에서 당신을 저장하지 않으며 , 거래소는 나중에 거래를 켜고 거래 시간 동안 거래를 중단할 수 있습니다 .
여기에는 다른 접근 방식이 필요합니다.
분명히, 나는 교환 로그와 로컬 로그에서 같은 시간을보고 싶습니다. 개발자가 로그에 로컬뿐만 아니라 이벤트의 서버 시간까지 기록해야 하는 시점입니다. 그러면 동기화가 필요하지 않습니다.
그러나 현지 시간이 아닌 서버 시간에 초점을 맞춰 지정가 주문을 보냈습니다. 그리고 서버실은 이미 거래소 오픈 시간인 10시를 가리키고 있었다. 이는 서버 시간이 교환 시간과 동기화되지 않았음을 의미합니다.
어떻게 서버 시간을 얻을 수 있습니까?
이렇게 거래시간을 확인합니다
//| Expert Check traiding time function |
//+------------------------------------------------------------------+
bool CheckTradingTime( MqlDateTime &tick_time)
{
datetime lk_time = TimeTradeServer (tick_time);
if ( ( tick_time.day_of_week == int (FirstDay)) ||
( tick_time.day_of_week == int (SecondDay))) //выходные
{
return ( false );
}
#ifdef DEBUG
if ((tick_time.hour >= 0 ) && (tick_time.hour < 6 )) // DEBUG 6-00
{
return ( false );
}
#else
if ((tick_time.hour >= 0 ) && (tick_time.hour < 10 ))
{
return ( false );
}
#endif
// 13 * 3600 + 59 * 60 + 30 = 50370 - 13:59:30
// 14 * 3600 = 50400 - 14:00:00
// 14 * 3600 + 30 = 50430 - 14:00:30
// 14 * 3600 + 60 = 50460 - 14:01:00
// 18 * 3600 + 44 * 60 + 30 = 67470 - 18:44:30
// 18 * 3600 + 45 * 60 = 67500 - 18:45:00
// 18 * 3600 + 45 * 60 + 30 = 67530 - 18:45:30
// 18 * 3600 + 46 * 60 = 67560 - 18:46:00
// 19 * 3600 = 68400 - 19:00:00
// 19 * 3600 + 60 = 68460 - 19:01:00
// 23 * 3600 + 49 * 60 + 30 = 85770 - 23:49:30
// 23 * 3600 + 50 * 60 = 85800 - 23:50:00
// 23 * 3600 + 50 * 60 + 30 = 85830 - 23:50:30
// 23 * 3600 + 51 * 60 = 85860 - 23:51:00
//---
ulong trade_time = tick_time.hour * 3600 + tick_time.min * 60 + tick_time.sec;
//--- //10:00:02
if (((trade_time >= time_st_mon) && (trade_time < 50370 )) ||
((trade_time >= time_st_day) && (trade_time < 67470 )) ||
((trade_time >= time_st_evn) && (trade_time < 85770 )))
{
return ( true );
}
return ( false );
}
그리고 TimeTradeServer()
TimeCurrent()는 "오래된" 시간을 가질 수 있는 반면 현지 시간을 제공합니다:(
그러나 나와 당신의 접근 방식의 차이는 큽니다.
제 경우에는 저유동성 상품(예: UUAH)에 대한 Expert Advisor를 사용하여 모든 선물의 주문서를 추가할 수 있습니다.
터미널에서 다른 전문가의 작업에 대해 생각하지 않고 사전 시장에서 틱을 얻을 보장.
즉, 모든 새 견적은 별도의 전문가 고문에게 "이동"됩니다.
추가됨
누구와도 간섭하지 않고 동기화만 "처리"합니다.
또한 별도의 Expert Advisor에서 다른 계측기의 틱을 받을 수 있으며 이는 사용자 지정 이벤트를 통해 수행해야 합니다.
그러나 나는 그것이 불필요하다고 생각합니다. 적어도 저는 필요하지 않습니다.
또한 별도의 Expert Advisor에서 다른 계측기의 틱을 받을 수 있으며 이는 사용자 지정 이벤트를 통해 수행해야 합니다.
그러나 나는 그것이 불필요하다고 생각합니다. 적어도 저는 필요하지 않습니다.
그리고 당신은 내 것을 시도합니다 (청산되지 않음)
매일 거래 전 동기화
//| 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.01"
//---
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;
//
input string BrInstr = "BR-2.17" ; //Brent
input ENUM_DAY_OF_WEEK FirstDay = SATURDAY ; //Первый выходной
input ENUM_DAY_OF_WEEK SecondDay = SUNDAY ; //Второй выходной
//+------------------------------------------------------------------+
//| 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 ()
{
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 Convert To Time function |
//+------------------------------------------------------------------+
bool ConvertToTime( const long n_value,_SYSTEMTIME &a_time)
{
a_time.wMilliseconds= ushort (n_value% 1000 );
ulong new_time= ulong ( double (n_value)/ 1000 );
MqlDateTime cur_time = { 0 };
TimeToStruct ( datetime (new_time),cur_time);
if (cur_time.year> 0 )
{
a_time.wDay= ushort (cur_time.day);
a_time.wDayOfWeek= ushort (cur_time.day_of_week);
a_time.wHour= ushort (cur_time.hour);
a_time.wMinute= ushort (cur_time.min);
a_time.wMonth = ushort (cur_time.mon);
a_time.wSecond= ushort (cur_time.sec);
a_time.wYear= ushort (cur_time.year);
return ( true );
}
return ( false );
}
//+------------------------------------------------------------------+
//| Expert On book event function |
//+------------------------------------------------------------------+
void OnBookEvent ( const string &symbol)
{
loc_time.wYear= 0 ;
GetLocalTime(loc_time);
if (loc_time.wYear> 0 )
{
if (( int (loc_time.wDayOfWeek) == int (FirstDay)) ||
( int (loc_time.wDayOfWeek) == int (SecondDay))) return ;
if ((loc_time.wHour== 9 ) && (loc_time.wMinute>= 50 ) && (loc_time.wMinute<= 59 ))
{
MqlTick curr_tick;
if ( SymbolInfoTick (symbol, curr_tick))
//if(CopyTicks(symbol,curr_tick,COPY_TICKS_INFO,0,1)==1)
{
MqlDateTime sv_time;
TimeToStruct (curr_tick.time,sv_time);
if (!is_sync)
{
if ((loc_time.wDayOfWeek== ushort (sv_time.day_of_week)) &&
(loc_time.wHour== ushort (sv_time.hour)))
{
long last_ping= long ( NormalizeDouble (( double ( TerminalInfoInteger ( TERMINAL_PING_LAST ))/ 1000 )/ 2 , 0 ));
long mls_time= long (curr_tick.time_msc% 1000 );
if ((mls_time+last_ping)> 999 )
{
mls_time= long (curr_tick.time_msc)+last_ping;
if (!ConvertToTime(mls_time, loc_time)) return ;
}
else
{
loc_time.wMinute = ushort (sv_time.min);
loc_time.wSecond = ushort (sv_time.sec);
loc_time.wMilliseconds= ushort (mls_time);
}
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, " Sync ms = " , loc_time.wMilliseconds);
}
}
}
}
}
else is_sync= false ;
}
}
//+------------------------------------------------------------------+
그리고 당신은 내 것을 시도합니다 (청산되지 않음)
동일한 코드가 훨씬 더 간결할 수 있습니다.
물론 사람마다 능력과 능력이 다릅니다.
당신의 것을 보는 것이 흥미 롭습니다.
이 코드를 복조
if ( SymbolInfoTick (symb_gold, cur_tick))
{
int result = CopyTicks (symb_gold, ct_tick, COPY_TICKS_INFO , 0 , 10 );
if (result> 0 )
{
Print (" SymbolInfoTick symbiol = ", symb_gold, " time = ", cur_tick.time, ".", cur_tick.time_msc% 1000 );
for ( int i = result- 1 ; i >= 0 ; i--)
{
Print (" CopyTicks symbol = ", symb_gold, " time ", string (i), " = ", ct_tick[i].time, ".", ct_tick[i].time_msc% 1000 );
}
}
}
그리고 그 결과에 약간 놀랐다
2017.01 . 21 00 : 07 : 41.444 Time_sync_forts (ED- 3.17 ,M1) CopyTicks symbol = GOLD- 3.17 time 9 = 2017.01 . 20 22 : 13 : 36.774
2017.01 . 21 00 : 07 : 41.444 Time_sync_forts (ED- 3.17 ,M1) CopyTicks symbol = GOLD- 3.17 time 8 = 2017.01 . 20 22 : 13 : 36.774
2017.01 . 21 00 : 07 : 41.444 Time_sync_forts (ED- 3.17 ,M1) CopyTicks symbol = GOLD- 3.17 time 7 = 2017.01 . 20 22 : 13 : 36.774
2017.01 . 21 00 : 07 : 41.444 Time_sync_forts (ED- 3.17 ,M1) CopyTicks symbol = GOLD- 3.17 time 6 = 2017.01 . 20 22 : 11 : 14.395
2017.01 . 21 00 : 07 : 41.444 Time_sync_forts (ED- 3.17 ,M1) CopyTicks symbol = GOLD- 3.17 time 5 = 2017.01 . 20 22 : 09 : 47.452
2017.01 . 21 00 : 07 : 41.444 Time_sync_forts (ED- 3.17 ,M1) CopyTicks symbol = GOLD- 3.17 time 4 = 2017.01 . 20 22 : 09 : 47.452
2017.01 . 21 00 : 07 : 41.444 Time_sync_forts (ED- 3.17 ,M1) CopyTicks symbol = GOLD- 3.17 time 3 = 2017.01 . 20 22 : 08 : 34.290
2017.01 . 21 00 : 07 : 41.444 Time_sync_forts (ED- 3.17 ,M1) CopyTicks symbol = GOLD- 3.17 time 2 = 2017.01 . 20 22 : 07 : 29.704
2017.01 . 21 00 : 07 : 41.444 Time_sync_forts (ED- 3.17 ,M1) CopyTicks symbol = GOLD- 3.17 time 1 = 2017.01 . 20 22 : 07 : 29.704
2017.01 . 21 00 : 07 : 41.444 Time_sync_forts (ED- 3.17 ,M1) CopyTicks symbol = GOLD- 3.17 time 0 = 2017.01 . 20 22 : 06 : 35.386
2017.01 . 21 00 : 08 : 28.961 Time_sync_forts (ED- 3.17 ,M1) debugging terminated
CopyTicks()가 마지막 틱을 저장하지 않는다는 것이 밝혀졌습니다.
추가됨
if ( SymbolInfoTick (symb_gold, cur_tick))
{
int result = CopyTicks (symb_gold, ct_tick, COPY_TICKS_TRADE , 0 , 10 );
if (result> 0 )
{
Print (" SymbolInfoTick symbiol = ", symb_gold, " time = ", cur_tick.time, ".", cur_tick.time_msc% 1000 );
for ( int i = result- 1 ; i >= 0 ; i--)
{
Print (" CopyTicks symbol = ", symb_gold, " time ", string (i), " = ", ct_tick[i].time, ".", ct_tick[i].time_msc% 1000 );
}
}
}
결과
2017.01 . 21 00 : 15 : 54.670 Time_sync_forts (ED- 3.17 ,M1) CopyTicks symbol = GOLD- 3.17 time 9 = 2017.01 . 20 21 : 59 : 59.658
2017.01 . 21 00 : 15 : 54.670 Time_sync_forts (ED- 3.17 ,M1) CopyTicks symbol = GOLD- 3.17 time 8 = 2017.01 . 20 21 : 57 : 54.512
2017.01 . 21 00 : 15 : 54.670 Time_sync_forts (ED- 3.17 ,M1) CopyTicks symbol = GOLD- 3.17 time 7 = 2017.01 . 20 21 : 57 : 54.512
2017.01 . 21 00 : 15 : 54.670 Time_sync_forts (ED- 3.17 ,M1) CopyTicks symbol = GOLD- 3.17 time 6 = 2017.01 . 20 21 : 57 : 54.245
2017.01 . 21 00 : 15 : 54.670 Time_sync_forts (ED- 3.17 ,M1) CopyTicks symbol = GOLD- 3.17 time 5 = 2017.01 . 20 21 : 57 : 54.245
2017.01 . 21 00 : 15 : 54.670 Time_sync_forts (ED- 3.17 ,M1) CopyTicks symbol = GOLD- 3.17 time 4 = 2017.01 . 20 21 : 57 : 00.562
2017.01 . 21 00 : 15 : 54.670 Time_sync_forts (ED- 3.17 ,M1) CopyTicks symbol = GOLD- 3.17 time 3 = 2017.01 . 20 21 : 56 : 45.159
2017.01 . 21 00 : 15 : 54.670 Time_sync_forts (ED- 3.17 ,M1) CopyTicks symbol = GOLD- 3.17 time 2 = 2017.01 . 20 21 : 56 : 13.601
2017.01 . 21 00 : 15 : 54.670 Time_sync_forts (ED- 3.17 ,M1) CopyTicks symbol = GOLD- 3.17 time 1 = 2017.01 . 20 21 : 55 : 16.852
2017.01 . 21 00 : 15 : 54.670 Time_sync_forts (ED- 3.17 ,M1) CopyTicks symbol = GOLD- 3.17 time 0 = 2017.01 . 20 21 : 54 : 16.303
if ( SymbolInfoTick (symb_gold, cur_tick))
{
int result = CopyTicks (symb_gold, ct_tick, COPY_TICKS_ALL , 0 , 10 );
if (result> 0 )
{
Print (" SymbolInfoTick symbiol = ", symb_gold, " time = ", cur_tick.time, ".", cur_tick.time_msc% 1000 );
for ( int i = result- 1 ; i >= 0 ; i--)
{
Print (" CopyTicks symbol = ", symb_gold, " time ", string (i), " = ", ct_tick[i].time, ".", ct_tick[i].time_msc% 1000 );
}
}
}
결과
2017.01 . 21 00 : 17 : 55.966 Time_sync_forts (ED- 3.17 ,M1) CopyTicks symbol = GOLD- 3.17 time 9 = 2017.01 . 20 22 : 13 : 36.774
2017.01 . 21 00 : 17 : 55.966 Time_sync_forts (ED- 3.17 ,M1) CopyTicks symbol = GOLD- 3.17 time 8 = 2017.01 . 20 22 : 13 : 36.774
2017.01 . 21 00 : 17 : 55.966 Time_sync_forts (ED- 3.17 ,M1) CopyTicks symbol = GOLD- 3.17 time 7 = 2017.01 . 20 22 : 13 : 36.774
2017.01 . 21 00 : 17 : 55.966 Time_sync_forts (ED- 3.17 ,M1) CopyTicks symbol = GOLD- 3.17 time 6 = 2017.01 . 20 22 : 11 : 14.395
2017.01 . 21 00 : 17 : 55.966 Time_sync_forts (ED- 3.17 ,M1) CopyTicks symbol = GOLD- 3.17 time 5 = 2017.01 . 20 22 : 09 : 47.452
2017.01 . 21 00 : 17 : 55.966 Time_sync_forts (ED- 3.17 ,M1) CopyTicks symbol = GOLD- 3.17 time 4 = 2017.01 . 20 22 : 09 : 47.452
2017.01 . 21 00 : 17 : 55.966 Time_sync_forts (ED- 3.17 ,M1) CopyTicks symbol = GOLD- 3.17 time 3 = 2017.01 . 20 22 : 08 : 34.290
2017.01 . 21 00 : 17 : 55.966 Time_sync_forts (ED- 3.17 ,M1) CopyTicks symbol = GOLD- 3.17 time 2 = 2017.01 . 20 22 : 07 : 29.704
2017.01 . 21 00 : 17 : 55.966 Time_sync_forts (ED- 3.17 ,M1) CopyTicks symbol = GOLD- 3.17 time 1 = 2017.01 . 20 22 : 07 : 29.704
2017.01 . 21 00 : 17 : 55.966 Time_sync_forts (ED- 3.17 ,M1) CopyTicks symbol = GOLD- 3.17 time 0 = 2017.01 . 20 22 : 06 : 35.386
아무도 설명 할 수 있습니까?
추가됨
RTS도 마찬가지입니다.
2017.01 . 21 00 : 21 : 11.589 Time_sync_forts (ED- 3.17 ,M1) SymbolInfoTick symbiol = RTS- 3.17 time = 2017.01 . 20 22 : 14 : 55.0
2017.01 . 21 00 : 21 : 11.589 Time_sync_forts (ED- 3.17 ,M1) CopyTicks symbol = RTS- 3.17 time 9 = 2017.01 . 20 22 : 12 : 41.619
2017.01 . 21 00 : 21 : 11.589 Time_sync_forts (ED- 3.17 ,M1) CopyTicks symbol = RTS- 3.17 time 8 = 2017.01 . 20 22 : 12 : 41.619
2017.01 . 21 00 : 21 : 11.589 Time_sync_forts (ED- 3.17 ,M1) CopyTicks symbol = RTS- 3.17 time 7 = 2017.01 . 20 22 : 12 : 41.619
2017.01 . 21 00 : 21 : 11.589 Time_sync_forts (ED- 3.17 ,M1) CopyTicks symbol = RTS- 3.17 time 6 = 2017.01 . 20 22 : 12 : 02.202
2017.01 . 21 00 : 21 : 11.589 Time_sync_forts (ED- 3.17 ,M1) CopyTicks symbol = RTS- 3.17 time 5 = 2017.01 . 20 22 : 11 : 00.754
2017.01 . 21 00 : 21 : 11.589 Time_sync_forts (ED- 3.17 ,M1) CopyTicks symbol = RTS- 3.17 time 4 = 2017.01 . 20 22 : 08 : 35.153
2017.01 . 21 00 : 21 : 11.589 Time_sync_forts (ED- 3.17 ,M1) CopyTicks symbol = RTS- 3.17 time 3 = 2017.01 . 20 22 : 08 : 23.548
2017.01 . 21 00 : 21 : 11.589 Time_sync_forts (ED- 3.17 ,M1) CopyTicks symbol = RTS- 3.17 time 2 = 2017.01 . 20 22 : 07 : 28.512
2017.01 . 21 00 : 21 : 11.589 Time_sync_forts (ED- 3.17 ,M1) CopyTicks symbol = RTS- 3.17 time 1 = 2017.01 . 20 22 : 07 : 28.512
2017.01 . 21 00 : 21 : 11.589 Time_sync_forts (ED- 3.17 ,M1) CopyTicks symbol = RTS- 3.17 time 0 = 2017.01 . 20 22 : 07 : 28.512
추가됨
그리고 그것은 포효에서도 마찬가지입니다.
2017.01 . 21 00 : 44 : 21.895 Time_sync_forts (ALRS- 3.17 ,H1) CopyTicks symbol = Si- 3.17 time 9 = 2017.01 . 20 23 : 54 : 35.904
2017.01 . 21 00 : 44 : 21.895 Time_sync_forts (ALRS- 3.17 ,H1) CopyTicks symbol = Si- 3.17 time 8 = 2017.01 . 20 23 : 53 : 04.867
2017.01 . 21 00 : 44 : 21.895 Time_sync_forts (ALRS- 3.17 ,H1) CopyTicks symbol = Si- 3.17 time 7 = 2017.01 . 20 23 : 51 : 55.889
2017.01 . 21 00 : 44 : 21.895 Time_sync_forts (ALRS- 3.17 ,H1) CopyTicks symbol = Si- 3.17 time 6 = 2017.01 . 20 23 : 50 : 55.731
2017.01 . 21 00 : 44 : 21.895 Time_sync_forts (ALRS- 3.17 ,H1) CopyTicks symbol = Si- 3.17 time 5 = 2017.01 . 20 23 : 49 : 59.296
2017.01 . 21 00 : 44 : 21.895 Time_sync_forts (ALRS- 3.17 ,H1) CopyTicks symbol = Si- 3.17 time 4 = 2017.01 . 20 23 : 49 : 59.59
2017.01 . 21 00 : 44 : 21.895 Time_sync_forts (ALRS- 3.17 ,H1) CopyTicks symbol = Si- 3.17 time 3 = 2017.01 . 20 23 : 49 : 58.937
2017.01 . 21 00 : 44 : 21.895 Time_sync_forts (ALRS- 3.17 ,H1) CopyTicks symbol = Si- 3.17 time 2 = 2017.01 . 20 23 : 49 : 58.934
2017.01 . 21 00 : 44 : 21.895 Time_sync_forts (ALRS- 3.17 ,H1) CopyTicks symbol = Si- 3.17 time 1 = 2017.01 . 20 23 : 49 : 58.933
2017.01 . 21 00 : 44 : 21.895 Time_sync_forts (ALRS- 3.17 ,H1) CopyTicks symbol = Si- 3.17 time 0 = 2017.01 . 20 23 : 49 : 58.933
2017.01 . 21 00 : 44 : 24.151 Time_sync_forts (ALRS- 3.17 ,H1) debugging terminated