MT5와 속도 - 페이지 64 1...575859606162636465666768697071...94 새 코멘트 fxsaber 2020.10.30 11:56 #631 Anton : Idle-CPU, RannForex-Server, 다른 기호가 있는 6개의 차트에서 Expert Advisor를 실행합니다. 컴퓨터로 돌아와보니 이것저것 많이 나오더라구요. 2020.10 . 30 13 : 50 : 21.852 Test9 (GBPUSD,H1) SymbolInfoTick max bad time: 2.008 ms; avr bad time: 2.008 ms; bad iterations: 1 total iterations: 10000000 2020.10 . 30 13 : 50 : 22.142 Test9 (EURUSD,H1) GetBid max bad time: 1.125 ms; avr bad time: 1.125 ms; bad iterations: 1 total iterations: 10000000 2020.10 . 30 13 : 50 : 23.072 Test9 (USDCHF,H1) SymbolInfoTick max bad time: 2.245 ms; avr bad time: 2.245 ms; bad iterations: 1 total iterations: 10000000 2020.10 . 30 13 : 50 : 23.288 Test9 (USDCAD,H1) GetBid max bad time: 1.298 ms; avr bad time: 1.182 ms; bad iterations: 2 total iterations: 10000000 2020.10 . 30 13 : 50 : 23.297 Test9 (AUDCAD,H1) GetBid max bad time: 0.977 ms; avr bad time: 0 ms; bad iterations: 0 total iterations: 10000000 2020.10 . 30 13 : 50 : 24.393 Test9 (EURUSD,H1) SymbolInfoTick max bad time: 3.400 ms; avr bad time: 2.862 ms; bad iterations: 2 total iterations: 10000000 나는 이런 나쁜 시간 조건을 가지고 있습니다. if (end> 1000 ) { avr_time+=end; counter++; } 위협 포럼 회원의 객관성을 위해 코드를 첨부했습니다. 파일: Test9.mq5 6 kb Anton 2020.10.30 12:54 #632 fxsaber : Idle-CPU, RannForex-Server, 다른 기호가 있는 6개의 차트에서 Expert Advisor를 실행합니다. 컴퓨터로 돌아와보니 이것저것 많이 나오더라구요. 내가 올바르게 이해한다면 이 테스트에서는 6개의 루프형 Expert Advisors가 4개의 CPU 코어에서 작동하고 각각은 100%에서 하나의 코어를 로드하려고 합니다. 저것들. 이것은 확실히 정상적인 작업 조건과는 거리가 먼 스트레스 테스트입니다. 이러한 조건에서 1000만 요청당 1-2ms의 1 또는 2 버스트가 우수한 결과입니다. 그리고 다시 한 번 말씀드립니다. 부하가 클수록 터미널이 아닌 OS 작업 스케줄러의 효율성을 더 많이 테스트해야 합니다. 자신을 속이지 마십시오. fxsaber 2020.10.30 14:04 #633 pivomoe : SymbolInfoTick에서 제공하는 틱의 관련성에 대해 질문이 있습니다. 상황: 1. TimeCurretn()을 수행합니다. 시간 18:00:00 2. 잘못 정의된 기호에 대해 SymbolInfoTick을 만듭니다. 17:58:00의 시간으로 틱을 얻습니다. 3.수면(1) 4. 잘못 정의된 기호에 SymbolInfoTick 만들기. 우리는 17:59:00 시간에 틱을 얻습니다. 즉, 네 번째 단락에서 TimeCurretn()과 1분 차이가 나는 새로운 틱을 얻었습니다. 이 상황에서 문제가 있다고 보십니까? 그런 상황에 덜 자주 빠지는 방법? 테스트 고문. // Проверочный советник на корректность последовательного прихода тиков в MT5. #include <TypeToBytes.mqh> // https://www.mql5.com/ru/code/16280 string Symbols[]; MqlTick LastTicks[]; // Последние тики из Обзора рынка. const int Size2 = ArrayResize (Symbols, SymbolsTotal ( true )); int OnInit () { for ( int i = 0 ; i < Size2; i++) Symbols[i] = SymbolName (i, true ); GetMarketWatch(LastTicks); return (! EventSetMillisecondTimer ( 1 )); } // Получает тики из Обзора рынка. void GetMarketWatch( MqlTick &Ticks[] ) { for ( int i = ArrayResize (Ticks, Size2) - 1 ; i >= 0 ; i--) SymbolInfoTick (Symbols[i], Ticks[i]); } // Возвращает индекс самого свежего тика. int GetLastTick( const MqlTick &Ticks[] ) { long LastTime = 0 ; int Pos = 0 ; for ( int i = 0 ; i < Size2; i++) if (Ticks[i].time_msc > LastTime) { LastTime = Ticks[i].time_msc; Pos = i; } return (Pos); } // Возвращает индекс измененного тика с наименьшим временем. int GetFirstFreshTick( const MqlTick &PrevTicks[], const MqlTick &NewTicks[] ) { long LastTime = LONG_MAX ; int Pos = - 1 ; for ( int i = 0 ; i < Size2; i++) if ((_R(PrevTicks[i]) != NewTicks[i]) && (NewTicks[i].time_msc < LastTime)) { LastTime = NewTicks[i].time_msc; Pos = i; } return (Pos); } // Распечатка тика. void PrintTick( const string Str, const MqlTick &Ticks[], const int Pos ) { Print (Str + " " + Symbols[Pos] + ":" ); ArrayPrint (Ticks, 5 , NULL , Pos, 1 ); } void OnTimer () { MqlTick NewTicks[]; GetMarketWatch(NewTicks); // Получили все тики из Обзора рынка const int FirstFreshPos = GetFirstFreshTick(LastTicks, NewTicks); // Взяли самый ранний тик из вновь пришедших. if (FirstFreshPos != - 1 ) // Если пришедшие тики были. { const int LastPos = GetLastTick(LastTicks); // Взяли самый свежий тик с предыдущего запроса Обзора рынка. if (NewTicks[FirstFreshPos].time_msc < LastTicks[LastPos].time_msc) // Если нарушена временная последовательность. { Alert ( "BUG?" ); // Сообщаем об этом. PrintTick( "PrevTick" , LastTicks, LastPos); PrintTick( "NewTick" , NewTicks, FirstFreshPos); } ArraySwap (LastTicks, NewTicks); // Запоминаем последний опрос Обзора рынка. } } 경고가 없습니다. 결과(6개 차트에 출시됨). 2020.10 . 30 16 : 08 : 51.130 Test9 (GBPUSD,H1) Alert : BUG? 2020.10 . 30 16 : 08 : 51.130 Test9 (GBPUSD,H1) PrevTick EURAUD: 2020.10 . 30 16 : 08 : 51.130 Test9 (GBPUSD,H1) [time] [bid] [ask] [last] [volume] [time_msc] [flags] [volume_real] 2020.10 . 30 16 : 08 : 51.130 Test9 (GBPUSD,H1) [ 0 ] 2020.10 . 30 16 : 08 : 56 1.65631 1.65637 0.0000 0 1604074136 152 6 0.00000 2020.10 . 30 16 : 08 : 51.130 Test9 (GBPUSD,H1) NewTick EURSGD: 2020.10 . 30 16 : 08 : 51.130 Test9 (GBPUSD,H1) [time] [bid] [ask] [last] [volume] [time_msc] [flags] [volume_real] 2020.10 . 30 16 : 08 : 51.130 Test9 (GBPUSD,H1) [ 0 ] 2020.10 . 30 16 : 08 : 56 1.59391 1.59404 0.0000 0 1604074136 149 4 0.00000 2020.10 . 30 16 : 09 : 14.707 Test9 (USDCHF,H1) Alert : BUG? 2020.10 . 30 16 : 09 : 14.707 Test9 (USDCHF,H1) PrevTick EURGBP: 2020.10 . 30 16 : 09 : 14.707 Test9 (USDCHF,H1) [time] [bid] [ask] [last] [volume] [time_msc] [flags] [volume_real] 2020.10 . 30 16 : 09 : 14.707 Test9 (USDCHF,H1) [ 0 ] 2020.10 . 30 16 : 09 : 19 0.90135 0.90138 0.0000 0 1604074159 733 4 0.00000 2020.10 . 30 16 : 09 : 14.707 Test9 (USDCHF,H1) NewTick XAUUSD: 2020.10 . 30 16 : 09 : 14.707 Test9 (USDCHF,H1) [time] [bid] [ask] [last] [volume] [time_msc] [flags] [volume_real] 2020.10 . 30 16 : 09 : 14.707 Test9 (USDCHF,H1) [ 0 ] 2020.10 . 30 16 : 09 : 19 1882.94000 1882.97000 0.0000 0 1604074159 728 6 0.00000 2020.10 . 30 16 : 09 : 19.935 Test9 (GBPUSD,H1) Alert : BUG? 2020.10 . 30 16 : 09 : 19.935 Test9 (GBPUSD,H1) PrevTick AUDNZD: 2020.10 . 30 16 : 09 : 19.935 Test9 (GBPUSD,H1) [time] [bid] [ask] [last] [volume] [time_msc] [flags] [volume_real] 2020.10 . 30 16 : 09 : 19.935 Test9 (GBPUSD,H1) [ 0 ] 2020.10 . 30 16 : 09 : 24 1.06010 1.06012 0.0000 0 1604074164 946 4 0.00000 2020.10 . 30 16 : 09 : 19.935 Test9 (GBPUSD,H1) NewTick USDNOK: 2020.10 . 30 16 : 09 : 19.935 Test9 (GBPUSD,H1) [time] [bid] [ask] [last] [volume] [time_msc] [flags] [volume_real] 2020.10 . 30 16 : 09 : 19.935 Test9 (GBPUSD,H1) [ 0 ] 2020.10 . 30 16 : 09 : 24 9.50256 9.50288 0.0000 0 1604074164 945 2 0.00000 2020.10 . 30 16 : 09 : 23.612 Test9 (USDJPY,H1) Alert : BUG? 2020.10 . 30 16 : 09 : 23.612 Test9 (USDJPY,H1) PrevTick USDCAD: 2020.10 . 30 16 : 09 : 23.612 Test9 (USDJPY,H1) [time] [bid] [ask] [last] [volume] [time_msc] [flags] [volume_real] 2020.10 . 30 16 : 09 : 23.612 Test9 (USDJPY,H1) [ 0 ] 2020.10 . 30 16 : 09 : 28 1.33050 1.33052 0.0000 0 1604074168 639 2 0.00000 2020.10 . 30 16 : 09 : 23.612 Test9 (USDJPY,H1) NewTick XAUUSD: 2020.10 . 30 16 : 09 : 23.612 Test9 (USDJPY,H1) [time] [bid] [ask] [last] [volume] [time_msc] [flags] [volume_real] 2020.10 . 30 16 : 09 : 23.612 Test9 (USDJPY,H1) [ 0 ] 2020.10 . 30 16 : 09 : 28 1883.11000 1883.18000 0.0000 0 1604074168 634 4 0.00000 문제가 있습니다. 얼마나 심각한지 말하기 어렵습니다. fxsaber 2020.10.30 14:22 #634 Anton : 내가 올바르게 이해한다면 이 테스트에서는 6개의 루프형 Expert Advisors가 4개의 CPU 코어에서 작동하고 각각은 100%에서 하나의 코어를 로드하려고 합니다. 저것들. 이것은 확실히 정상적인 작업 조건과는 거리가 먼 스트레스 테스트입니다. EA 스트레스 테스트인가요? 꽁꽁 얼었으니까 물어봐 #include <fxsaber\BenchMark\Benchmark.mqh> // https://www.mql5.com/ru/code/31279 void GetMarketWatch( MqlTick &Ticks[] ) { for ( int i = ArrayResize (Ticks, Size2) - 1 ; i >= 0 ; i--) _B( SymbolInfoTick (Symbols[i], Ticks[i]) , 100 ) ; } 경고의 바다를 발행합니다. 2020.10 . 30 16 : 18 : 53.713 Test9 (USDJPY,H1) Alert : Bench_Stack = 0 , 100 <= Time[Test9.mq5 107 in GetMarketWatch: SymbolInfoTick (Symbols[i],Ticks[i])] = 166 mcs. 2020.10 . 30 16 : 18 : 53.729 Test9 (USDJPY,H1) Alert : Bench_Stack = 0 , 100 <= Time[Test9.mq5 107 in GetMarketWatch: SymbolInfoTick (Symbols[i],Ticks[i])] = 120 mcs. 2020.10 . 30 16 : 18 : 53.901 Test9 (EURUSD,H1) Alert : Bench_Stack = 0 , 100 <= Time[Test9.mq5 107 in GetMarketWatch: SymbolInfoTick (Symbols[i],Ticks[i])] = 127 mcs. 2020.10 . 30 16 : 18 : 53.917 Test9 (EURUSD,H1) Alert : Bench_Stack = 0 , 100 <= Time[Test9.mq5 107 in GetMarketWatch: SymbolInfoTick (Symbols[i],Ticks[i])] = 131 mcs. 2020.10 . 30 16 : 18 : 55.141 Test9 (USDCHF,H1) Alert : Bench_Stack = 0 , 100 <= Time[Test9.mq5 107 in GetMarketWatch: SymbolInfoTick (Symbols[i],Ticks[i])] = 104 mcs. 2020.10 . 30 16 : 18 : 55.204 Test9 (EURUSD,H1) Alert : Bench_Stack = 0 , 100 <= Time[Test9.mq5 107 in GetMarketWatch: SymbolInfoTick (Symbols[i],Ticks[i])] = 107 mcs. fxsaber 2020.10.30 14:29 #635 그 과정에서 ArrayPrint 로그에 대한 순차 출력 버그가 발견되었습니다. 2020.10 . 30 16 : 26 : 05.320 Test9 (USDCAD,H1) PrevTick AUDCAD: 2020.10 . 30 16 : 26 : 05.320 Test9 (GBPUSD,H1) NewTick XAUEUR: 2020.10 . 30 16 : 26 : 05.320 Test9 (GBPUSD,H1) [time] [bid] [ask] [last] [volume] [time_msc] [flags] [volume_real] 2020.10 . 30 16 : 26 : 05.320 Test9 (USDCAD,H1) [time] [bid] [ask] [last] [volume] [time_msc] [flags] [volume_real] 2020.10 . 30 16 : 26 : 05.320 Test9 (GBPUSD,H1) [ 0 ] 2020.10 . 30 16 : 26 : 10 1612.03000 1612.43000 0.0000 0 1604075170357 4 0.00000 2020.10 . 30 16 : 26 : 05.320 Test9 (USDCAD,H1) [ 0 ] 2020.10 . 30 16 : 26 : 10 0.93785 0.93790 0.0000 0 1604075170359 4 0.00000 이것은 실수임이 분명합니다. 왜냐하면. 그런 소스. 거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼 MT5와 속도 fxsaber , 2020.10.30 15:04 // Распечатка тика. void PrintTick( const string Str, const MqlTick &Ticks[], const int Pos ) { Print (Str + " " + Symbols[Pos] + ":" ); ArrayPrint (Ticks, 5 , NULL , Pos, 1 ); } PrintTick( "PrevTick" , LastTicks, LastPos); PrintTick( "NewTick" , NewTicks, FirstFreshPos); 이것은 꽤 흔한 실수입니다. ArrayPrint의 현재 구현에서 문자열은 여러 Print를 차례로 호출하여 인쇄됩니다. 그리고 먼저 모든 데이터로 하나의 큰 문자열을 만든 다음 하나의 Print를 통해 표시해야 합니다. pivomoe 2020.10.30 15:25 #636 매초마다 경고가 여러 번 트리거되었습니다. 17 : 59 : 50.126 Temp (SILV- 9.21 ,H1) [time] [bid] [ask] [last] [volume] [time_msc] [flags] [volume_real] KD 0 17 : 59 : 50.126 Temp (SILV- 9.21 ,H1) [ 0 ] 2020.10 . 30 17 : 59 : 49 155.38000 155.39000 155.38000 3 1604080789146 0 3.00000 CH 0 17 : 59 : 50.141 Temp (SILV- 9.21 ,H1) Alert : BUG? JO 0 17 : 59 : 50.141 Temp (SILV- 9.21 ,H1) PrevTick Si- 12.20 : LE 0 17 : 59 : 50.141 Temp (SILV- 9.21 ,H1) [time] [bid] [ask] [last] [volume] [time_msc] [flags] [volume_real] OK 0 17 : 59 : 50.141 Temp (SILV- 9.21 ,H1) [ 0 ] 2020.10 . 30 17 : 59 : 49 79741.00000 79742.00000 79743.00000 1 1604080789200 0 1.00000 QF 0 17 : 59 : 50.141 Temp (SILV- 9.21 ,H1) NewTick ROSN: FS 0 17 : 59 : 50.141 Temp (SILV- 9.21 ,H1) [time] [bid] [ask] [last] [volume] [time_msc] [flags] [volume_real] HR 0 17 : 59 : 50.141 Temp (SILV- 9.21 ,H1) [ 0 ] 2020.10 . 30 17 : 59 : 49 349.80000 349.95000 349.85000 57 1604080789179 0 57.00000 fxsaber 2020.11.03 17:14 #637 컴퓨터에 있었다, 어떤 계산도 하지 않았다. CPU를 로드한 것이 없습니다. 2020.11 . 03 16 : 04 : 01.137 Alert : Bench_Stack = 3 , 100 <= Time[NewTicks.mqh 33 in NEWTICKS::GetMarketWatchTick: :: SymbolInfoTick ( _Symbol ,Tick)] = 48764 mcs. 2020.11 . 03 18 : 31 : 04.622 Alert : Bench_Stack = 3 , 100 <= Time[NewTicks.mqh 33 in NEWTICKS::GetMarketWatchTick: :: SymbolInfoTick ( _Symbol ,Tick)] = 4143 mcs. 2020.11 . 03 19 : 00 : 34.117 Bench_Stack = 2 , 100 <= Time[NewTicks.mqh 33 in NEWTICKS::GetMarketWatchTick: :: SymbolInfoTick ( _Symbol ,Tick)] = 1069 mcs. 2020.11 . 03 19 : 00 : 34.117 Bench_Stack = 2 , 100 <= Time[NewTicks.mqh 33 in NEWTICKS::GetMarketWatchTick: :: SymbolInfoTick ( _Symbol ,Tick)] = 1100 mcs. 2020.11 . 03 19 : 01 : 49.199 Alert : Bench_Stack = 3 , 100 <= Time[NewTicks.mqh 33 in NEWTICKS::GetMarketWatchTick: :: SymbolInfoTick ( _Symbol ,Tick)] = 19301 mcs. SymbolInfoTick은 실행하는 데 19ms와 48ms가 걸렸습니다 . 지속 시간이 수백 마이크로초인 수십 가지 경우. 그러나 그는 그것들을 가져오지 않았습니다. 분명히 재생하려면 하루 동안 전투 고문을 실행 한 다음 시청해야합니다. 제 생각에는 그러한 지연의 개시자가 무엇인지 파악하는 것은 비현실적입니다. pivomoe 2020.11.03 21:24 #638 페이지 상단의 Test9 코드를 살펴보았습니다. 왜 한 캐릭터에게 틱을 요청하기 위해 Sleep 없이 천만 번을 반복합니까? 그러한 테스트가 실제 거래와 어떤 관련이 있습니까? 내 생각에 테스트는 다음과 같아야 합니다. 시장 검토에서 각 기호의 틱을 요청합니다. Sleep(1) 등을 원으로 일시 중지합니다. 코드를 약간 변경하십시오. int OnInit () { string Symbols[]; int TotalSymbol= SymbolsTotal ( true ); ArrayResize (Symbols,TotalSymbol); for ( int i= 0 ;i<TotalSymbol;i++) Symbols[i]= SymbolName (i, true ); MqlTick Tick; //--- double temp= 0 ; ulong start,end,max_time= 0 ,avr_time= 0 ,counter= 0 ; int count= 1 e4; for ( int i= 0 ; ! IsStopped () && (i<count); i++) { Sleep ( 1 ); for ( int j= 0 ;j<TotalSymbol;j++) { start= GetMicrosecondCount (); SymbolInfoTick (Symbols[j], Tick); // temp++; end= GetMicrosecondCount ()-start; //--- if (end>max_time) max_time=end; if (end> 1000 ) { avr_time+=end; counter++; } } } Comment ( "SymbolInfoTick max bad time: " , DoubleToString (max_time/ 1000.0 , 3 ), " ms; avr bad time: " ,counter ? DoubleToString (avr_time/ 1000.0 /counter, 3 ): "0" , " ms; bad iterations: " ,counter, " total iterations: " ,count); Print ( "SymbolInfoTick max bad time: " , DoubleToString (max_time/ 1000.0 , 3 ), " ms; avr bad time: " ,counter ? DoubleToString (avr_time/ 1000.0 /counter, 3 ): "0" , " ms; bad iterations: " ,counter, " total iterations: " ,count); return INIT_FAILED ; } 리뷰에서 55자를 테스트하십시오. SymbolInfoTick max bad time: 0.212 ms; avr bad time: 0 ms; bad iterations: 0 total iterations: 10000 이제 SymbolInfoTick temp++ 대신 테스트해 보겠습니다. SymbolInfoTick max bad time: 0.102 ms; avr bad time: 0 ms; bad iterations: 0 total iterations: 10000 fxsaber 2020.11.03 22:14 #639 pivomoe : 페이지 상단의 Test9 코드를 살펴보았습니다. 왜 한 캐릭터에게 틱을 요청하기 위해 Sleep 없이 천만 번을 반복합니까? 평지에는 없습니다. 세부 정보 - 스레드를 읽습니다. pivomoe 2020.11.03 22:59 #640 fxsaber : 평지에는 없습니다. 세부 정보 - 스레드를 읽습니다. 이런 측정기법으로 temp++의 경우에도 최대 실행시간이 수십 마이크로초라는 게 귀찮지 않나요? 1...575859606162636465666768697071...94 새 코멘트 트레이딩 기회를 놓치고 있어요: 무료 트레이딩 앱 복사용 8,000 이상의 시그널 금융 시장 개척을 위한 경제 뉴스 등록 로그인 공백없는 라틴 문자 비밀번호가 이 이메일로 전송될 것입니다 오류 발생됨 Google으로 로그인 웹사이트 정책 및 이용약관에 동의합니다. 계정이 없으시면, 가입하십시오 MQL5.com 웹사이트에 로그인을 하기 위해 쿠키를 허용하십시오. 브라우저에서 필요한 설정을 활성화하시지 않으면, 로그인할 수 없습니다. 사용자명/비밀번호를 잊으셨습니까? Google으로 로그인
Anton :
Idle-CPU, RannForex-Server, 다른 기호가 있는 6개의 차트에서 Expert Advisor를 실행합니다. 컴퓨터로 돌아와보니 이것저것 많이 나오더라구요.
나는 이런 나쁜 시간 조건을 가지고 있습니다.
위협 포럼 회원의 객관성을 위해 코드를 첨부했습니다.
Idle-CPU, RannForex-Server, 다른 기호가 있는 6개의 차트에서 Expert Advisor를 실행합니다. 컴퓨터로 돌아와보니 이것저것 많이 나오더라구요.
내가 올바르게 이해한다면 이 테스트에서는 6개의 루프형 Expert Advisors가 4개의 CPU 코어에서 작동하고 각각은 100%에서 하나의 코어를 로드하려고 합니다. 저것들. 이것은 확실히 정상적인 작업 조건과는 거리가 먼 스트레스 테스트입니다.
이러한 조건에서 1000만 요청당 1-2ms의 1 또는 2 버스트가 우수한 결과입니다.
그리고 다시 한 번 말씀드립니다. 부하가 클수록 터미널이 아닌 OS 작업 스케줄러의 효율성을 더 많이 테스트해야 합니다. 자신을 속이지 마십시오.
SymbolInfoTick에서 제공하는 틱의 관련성에 대해 질문이 있습니다.
상황:
1. TimeCurretn()을 수행합니다. 시간 18:00:00
2. 잘못 정의된 기호에 대해 SymbolInfoTick을 만듭니다. 17:58:00의 시간으로 틱을 얻습니다.
3.수면(1)
4. 잘못 정의된 기호에 SymbolInfoTick 만들기. 우리는 17:59:00 시간에 틱을 얻습니다.
즉, 네 번째 단락에서 TimeCurretn()과 1분 차이가 나는 새로운 틱을 얻었습니다.
이 상황에서 문제가 있다고 보십니까?
그런 상황에 덜 자주 빠지는 방법?
테스트 고문.
경고가 없습니다. 결과(6개 차트에 출시됨).
문제가 있습니다. 얼마나 심각한지 말하기 어렵습니다.
내가 올바르게 이해한다면 이 테스트에서는 6개의 루프형 Expert Advisors가 4개의 CPU 코어에서 작동하고 각각은 100%에서 하나의 코어를 로드하려고 합니다. 저것들. 이것은 확실히 정상적인 작업 조건과는 거리가 먼 스트레스 테스트입니다.
EA 스트레스 테스트인가요? 꽁꽁 얼었으니까 물어봐
경고의 바다를 발행합니다.
그 과정에서 ArrayPrint 로그에 대한 순차 출력 버그가 발견되었습니다.
이것은 실수임이 분명합니다. 왜냐하면. 그런 소스.
거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼
MT5와 속도
fxsaber , 2020.10.30 15:04
매초마다 경고가 여러 번 트리거되었습니다.
SymbolInfoTick은 실행하는 데 19ms와 48ms가 걸렸습니다 . 지속 시간이 수백 마이크로초인 수십 가지 경우. 그러나 그는 그것들을 가져오지 않았습니다.
분명히 재생하려면 하루 동안 전투 고문을 실행 한 다음 시청해야합니다. 제 생각에는 그러한 지연의 개시자가 무엇인지 파악하는 것은 비현실적입니다.
페이지 상단의 Test9 코드를 살펴보았습니다. 왜 한 캐릭터에게 틱을 요청하기 위해 Sleep 없이 천만 번을 반복합니까? 그러한 테스트가 실제 거래와 어떤 관련이 있습니까?
내 생각에 테스트는 다음과 같아야 합니다. 시장 검토에서 각 기호의 틱을 요청합니다. Sleep(1) 등을 원으로 일시 중지합니다. 코드를 약간 변경하십시오.
리뷰에서 55자를 테스트하십시오.
이제 SymbolInfoTick temp++ 대신 테스트해 보겠습니다.
페이지 상단의 Test9 코드를 살펴보았습니다. 왜 한 캐릭터에게 틱을 요청하기 위해 Sleep 없이 천만 번을 반복합니까?
평지에는 없습니다. 세부 정보 - 스레드를 읽습니다.
평지에는 없습니다. 세부 정보 - 스레드를 읽습니다.
이런 측정기법으로 temp++의 경우에도 최대 실행시간이 수십 마이크로초라는 게 귀찮지 않나요?