mql5 언어의 특징, 미묘함 및 작업 방법 - 페이지 103 1...96979899100101102103104105106107108109110...247 새 코멘트 Alexey Navoykov 2018.09.21 15:43 #1021 니콜라이 셈코 : WinAPI를 사용하여 두 터미널을 연결할 때 kernel32.dll 대신 user32.dll을 사용하는 것이 더 빠를 수 있다고 말하고 싶었습니다. 내가 만난 모든 구현은 kernel32.dll을 사용했습니다. 글쎄요, 한 라이브러리가 다른 라이브러리보다 더 빨리 임포트(또는 작동)해야 할 이유가 없습니다. 그러나 가져온 함수 를 호출할 때 일반적인 오버헤드에 대한 질문은 조사해야 합니다. 아마도 이것은 현재 버전의 MQL에서는 더 이상 관련이 없지만, 이전 MQL4에서 기억하는 한 이러한 비용은 기능 자체의 속도와 비교할 때 눈에 띄게 나타났습니다. Nikolai Semko 2018.09.21 16:12 #1022 fxsaber : 네. 아 ... 글쎄, 내 변덕이라고 생각하십시오. 나는 속도를 좋아합니다. 빠른 사람이 먼저이고 CPU 부하가 적기 때문에 결정을 내리는 데 더 많은 리소스와 시간이 필요하기 때문입니다. Andrey Khatimlianskii 2018.10.09 21:18 #1023 fxsaber : 다중 문자 OnTick의 빠른 구현 50개 기기에서 스파이를 사용하는 빈 Expert Advisor를 실행하면 메시지가 로그에 쏟아지기 시작합니다. 2018.10 . 09 22 : 49 : 24.730 Spy (AUDNZD,W1) indicator is too slow, 4281 ms. rewrite the indicator, please 500ms의 사용자 지정 이벤트 전송 빈도에 대한 표시기에 필터를 추가하면 오류가 덜 자주 발생하지만 사라지지는 않습니다. 나 뿐인가요? 어드바이저 코드: #define ForEach(index,array) for ( int index= 0 , max_ ##index=ArraySize(array); index<max_ ##index; index++) string Symbols[]; int OnInit () { ArrayResize ( Symbols, SymbolsTotal ( true ) ); ForEach( i, Symbols ) { Symbols[i] = SymbolName (i, true ); if ( Symbols[i] != _Symbol ) iCustom ( Symbols[i], PERIOD_W1 , "Spy.ex5" , ChartID (), i ); } return ( INIT_SUCCEEDED ); } void OnChartEvent ( const int id, const long &lparam, const double &dparam, const string &sparam) { if ( id == CHARTEVENT_CUSTOM ) OnTickMS( Symbols[ ( int )lparam ] ); } void OnTick () { CheckSignal( _Symbol ); } void OnTickMS( const string &Symb) { CheckSignal( Symb ); } void CheckSignal( const string symbol) { //Comment( symbol, ": ", // DoubleToString( SymbolInfoDouble( symbol, SYMBOL_BID ), 5 ), " / ", // DoubleToString( SymbolInfoDouble( symbol, SYMBOL_ASK ), 5 ) ); return ; } 프로파일러 는 iCustom의 95% 시간을 보여주고 OnChartEvent는 거의 아무것도 걸리지 않습니다. 프로세서(i5-3570)는 75%로 로드됩니다. fxsaber 2018.10.09 21:35 #1024 안드레이 카팀리안스키 : 50개 기기에서 스파이를 사용하는 빈 Expert Advisor를 실행하면 메시지가 로그에 쏟아지기 시작합니다. 나 뿐인가요? 처음에 이러한 오류 중 몇 가지를 잡았습니다. 그들은 더 떨어지지 않았다. 프로파일러 는 iCustom의 95% 시간을 보여주고 OnChartEvent는 거의 아무것도 걸리지 않습니다. 프로세서(i5-3570)는 75%로 로드됩니다. 릴리스 버전에서 CPU는 ~3%입니다. Andrey Khatimlianskii 2018.10.09 22:12 #1025 fxsaber : 처음에 이러한 오류 중 몇 가지를 잡았습니다. 그들은 더 떨어지지 않았다. 릴리스 버전에서 CPU는 ~3%입니다. "최적화 = 1"로 지표와 어드바이저를 모두 수집했는데 오류가 쏟아져 나옵니다. Andrey Khatimlianskii 2018.10.09 22:17 #1026 표시기에 두 번째 일시 중지를 추가했습니다. int OnCalculate ( const int rates_total, const int prev_calculated, const int , const double &[] ) { static datetime prev = 0 ; if ( TimeCurrent () <= prev ) return (rates_total); prev = TimeCurrent (); 오류가 남아 있습니다. Oleksii Chepurnyi 2018.10.10 06:08 #1027 지시자 #property indicator_chart_window #property indicator_plots 0 input long Chart = 0 ; // идентификатор графика-получателя события input int Index = 0 ; ulong timer = GetMicrosecondCount (); //=================================================================== //| //+------------------------------------------------------------------ int OnCalculate ( const int rates_total, const int prev_calculated, const int , const double &[] ) { if ( GetMicrosecondCount () - timer < 1 e6 ) return ( rates_total ); timer = GetMicrosecondCount (); if ( prev_calculated ) { ResetLastError (); if ( EventChartCustom ( Chart, 0 , Index, 0 , NULL )) Print ( GetMicrosecondCount () - timer ); else Print ( ( string ) _LastError + " " + ( string )( GetMicrosecondCount () - timer) ); } return ( rates_total ); } //+------------------------------------------------------------------ 조언자 #property strict //+------------------------------------------------------------------ #define ForEach(index,array) for ( int index= 0 , max_ ##index=ArraySize(array); index<max_ ##index; index++) //+------------------------------------------------------------------ string Symbols[]; //=================================================================== //| Expert initialization function //+------------------------------------------------------------------ int OnInit () { ArrayResize ( Symbols, SymbolsTotal ( true ) ); ForEach( i, Symbols ) { Symbols[i] = SymbolName (i, true ); if ( Symbols[i] != _Symbol ) iCustom ( Symbols[i], PERIOD_W1 , "Spy.ex5" , ChartID (), i ); // MQL5\Indicators\Spy.ex5 } return ( INIT_SUCCEEDED ); } //=================================================================== //| Expert deinitialization function //+------------------------------------------------------------------ void OnDeinit ( const int reason) { ArrayFree ( Symbols ); } //=================================================================== //| ChartEvent function //+------------------------------------------------------------------ void OnChartEvent ( const int id, const long &lparam, const double &dparam, const string &sparam) { } //=================================================================== //| Expert tick function //+------------------------------------------------------------------ void OnTick () { } //+------------------------------------------------------------------ 일시 중지를 늘리는 것은 별로 도움이 되지 않습니다. 3초에 무너지기 시작했습니다. 알 수 없는 이유로 어느 시점에서 EventChartCustom 이 작동을 멈춥니다. 약 3초 동안 죽고 오류 4001이 발생합니다. 파일: 20181010.log 276 kb Andrey Khatimlianskii 2018.10.10 06:52 #1028 올렉시 체푸르니 : 지시자 조언자 일시 중지를 늘리는 것은 별로 도움이 되지 않습니다. 3초에 무너지기 시작했습니다. 알 수 없는 이유로 어느 시점에서 EventChartCustom이 작동을 멈춥니다. 약 3초 동안 죽고 오류 4001이 발생합니다. 네, 그게 문제인 것 같습니다. 다른 사람이 그것을 재현 했습니까? fxsaber 2018.10.10 07:15 #1029 안드레이 카팀리안스키 : 다른 사람이 그것을 재현 했습니까? 재생할 수 없음 #define ForEach(index,array) for ( int index= 0 , max_ ##index=ArraySize(array); index<max_ ##index; index++) string Symbols[]; int Counter[]; int OnInit () { ArrayResize (Counter, ArrayResize ( Symbols, SymbolsTotal ( true ) )); ArrayInitialize (Counter, 0 ); ForEach( i, Symbols ) { Symbols[i] = SymbolName (i, true ); if ( Symbols[i] != _Symbol ) if ( iCustom ( Symbols[i], PERIOD_W1 , "Spy.ex5" , ChartID (), i ) == INVALID_HANDLE ) Alert (Symbols[i]); } return ( INIT_SUCCEEDED ); } void OnChartEvent ( const int id, const long &lparam, const double &dparam, const string &sparam) { static int Count = 0 ; if ( id == CHARTEVENT_CUSTOM ) { Counter[( int )lparam]++; string Str = ( string )Count++ + "\nMarketWatch:" ; for ( int i = 0 ; i < ArraySize (Counter); i++) Str += "\n" + ( string )i + ": " + Symbols[i] + " " + ( string )Counter[i]; Comment (Str); } } 작업 시간 - 정상 비행. Andrey Khatimlianskii 2018.10.10 11:53 #1030 fxsaber : 재생할 수 없음 작업 시간 - 정상 비행. Market Watch에는 몇 개의 상품이 있습니까? 1...96979899100101102103104105106107108109110...247 새 코멘트 사유: 취소 트레이딩 기회를 놓치고 있어요: 무료 트레이딩 앱 복사용 8,000 이상의 시그널 금융 시장 개척을 위한 경제 뉴스 등록 로그인 공백없는 라틴 문자 비밀번호가 이 이메일로 전송될 것입니다 오류 발생됨 Google으로 로그인 웹사이트 정책 및 이용약관에 동의합니다. 계정이 없으시면, 가입하십시오 MQL5.com 웹사이트에 로그인을 하기 위해 쿠키를 허용하십시오. 브라우저에서 필요한 설정을 활성화하시지 않으면, 로그인할 수 없습니다. 사용자명/비밀번호를 잊으셨습니까? Google으로 로그인
WinAPI를 사용하여 두 터미널을 연결할 때 kernel32.dll 대신 user32.dll을 사용하는 것이 더 빠를 수 있다고 말하고 싶었습니다. 내가 만난 모든 구현은 kernel32.dll을 사용했습니다.
글쎄요, 한 라이브러리가 다른 라이브러리보다 더 빨리 임포트(또는 작동)해야 할 이유가 없습니다.
그러나 가져온 함수 를 호출할 때 일반적인 오버헤드에 대한 질문은 조사해야 합니다. 아마도 이것은 현재 버전의 MQL에서는 더 이상 관련이 없지만, 이전 MQL4에서 기억하는 한 이러한 비용은 기능 자체의 속도와 비교할 때 눈에 띄게 나타났습니다.
네.
아 ... 글쎄, 내 변덕이라고 생각하십시오.
나는 속도를 좋아합니다. 빠른 사람이 먼저이고 CPU 부하가 적기 때문에 결정을 내리는 데 더 많은 리소스와 시간이 필요하기 때문입니다.
다중 문자 OnTick의 빠른 구현
50개 기기에서 스파이를 사용하는 빈 Expert Advisor를 실행하면 메시지가 로그에 쏟아지기 시작합니다.
500ms의 사용자 지정 이벤트 전송 빈도에 대한 표시기에 필터를 추가하면 오류가 덜 자주 발생하지만 사라지지는 않습니다.
나 뿐인가요?
어드바이저 코드:
프로파일러 는 iCustom의 95% 시간을 보여주고 OnChartEvent는 거의 아무것도 걸리지 않습니다. 프로세서(i5-3570)는 75%로 로드됩니다.
50개 기기에서 스파이를 사용하는 빈 Expert Advisor를 실행하면 메시지가 로그에 쏟아지기 시작합니다.
나 뿐인가요?
처음에 이러한 오류 중 몇 가지를 잡았습니다. 그들은 더 떨어지지 않았다.
프로파일러 는 iCustom의 95% 시간을 보여주고 OnChartEvent는 거의 아무것도 걸리지 않습니다. 프로세서(i5-3570)는 75%로 로드됩니다.
릴리스 버전에서 CPU는 ~3%입니다.
처음에 이러한 오류 중 몇 가지를 잡았습니다. 그들은 더 떨어지지 않았다.
릴리스 버전에서 CPU는 ~3%입니다.
"최적화 = 1"로 지표와 어드바이저를 모두 수집했는데 오류가 쏟아져 나옵니다.
표시기에 두 번째 일시 중지를 추가했습니다.
오류가 남아 있습니다.
지시자
조언자
일시 중지를 늘리는 것은 별로 도움이 되지 않습니다. 3초에 무너지기 시작했습니다.
알 수 없는 이유로 어느 시점에서 EventChartCustom 이 작동을 멈춥니다. 약 3초 동안 죽고 오류 4001이 발생합니다.
지시자
조언자
일시 중지를 늘리는 것은 별로 도움이 되지 않습니다. 3초에 무너지기 시작했습니다.
알 수 없는 이유로 어느 시점에서 EventChartCustom이 작동을 멈춥니다. 약 3초 동안 죽고 오류 4001이 발생합니다.
네, 그게 문제인 것 같습니다.
다른 사람이 그것을 재현 했습니까?
다른 사람이 그것을 재현 했습니까?
재생할 수 없음
작업 시간 - 정상 비행.
재생할 수 없음
작업 시간 - 정상 비행.
Market Watch에는 몇 개의 상품이 있습니까?