오류, 버그, 질문 - 페이지 1989 1...198219831984198519861987198819891990199119921993199419951996...3184 새 코멘트 fxsaber 2017.09.05 08:12 #19881 테스터의 성능은 거래 서버에 크게 의존합니다. 테스터 설정: USD 상계, Core1만 포함 . 조언자 #include <TesterBenchmark.mqh> // https://www.mql5.com/ru/code/18804 input int Interval = 60 ; input int AmountLastDeals = 5 ; input double Lots = 1 ; double CorrectLot( const double Lot ) { static const double StepVol = SymbolInfoDouble ( _Symbol , SYMBOL_VOLUME_STEP ); static const double MaxVol = SymbolInfoDouble ( _Symbol , SYMBOL_VOLUME_MAX ); static const double MinVol = SymbolInfoDouble ( _Symbol , SYMBOL_VOLUME_MIN ); const double Vol = StepVol * ( int )(Lot / StepVol + 0.5 ); return ((Vol < MinVol) ? MinVol : ((Vol > MaxVol) ? MaxVol : Vol)); } void OnTick () { if (! PositionGetTicket ( 0 )) { if ( HistorySelect ( 0 , TimeCurrent ())) { const int Total = HistoryDealsTotal () - 1 ; double SumProfit = 0 ; double SumLots = 0 ; for ( int i = Total, Count = 0 ; (i >= 0 ) && (Count < AmountLastDeals); i--) { const ulong Ticket = HistoryDealGetTicket (i); if (( ENUM_DEAL_ENTRY ) HistoryDealGetInteger (Ticket, DEAL_ENTRY ) == DEAL_ENTRY_OUT ) { SumProfit += HistoryDealGetDouble (Ticket, DEAL_PROFIT ) * (AmountLastDeals - Count); SumLots += HistoryDealGetDouble (Ticket, DEAL_VOLUME ) * (AmountLastDeals - Count); Count++; } } SumLots /= (AmountLastDeals * ( 1 + AmountLastDeals)) >> 1 ; MqlTradeRequest Request = { 0 }; Request.action = TRADE_ACTION_DEAL ; Request.symbol = _Symbol ; Request.type = ((Total >= 0 ) && (( ENUM_DEAL_TYPE ) HistoryDealGetInteger ( HistoryDealGetTicket (Total), DEAL_TYPE ) == DEAL_TYPE_SELL )) ? ORDER_TYPE_SELL : ORDER_TYPE_BUY ;; Request.volume = (SumProfit >= 0 ) ? Lots : CorrectLot(SumLots); Request.price = SymbolInfoDouble (Request.symbol, (Request.type == ORDER_TYPE_BUY ) ? SYMBOL_ASK : SYMBOL_BID ); // MqlTradeCheckResult CheckResult; // if (OrderCheck(Request, CheckResult)) { MqlTradeResult Result; const bool AntiWarning = OrderSend (Request, Result); } } } else if ( TimeCurrent () - PositionGetInteger ( POSITION_TIME ) >= Interval) { MqlTradeRequest Request = { 0 }; MqlTradeResult Result; Request.action = TRADE_ACTION_DEAL ; Request.position = PositionGetInteger ( POSITION_TICKET ); Request.symbol = PositionGetString ( POSITION_SYMBOL ); Request.type = ( ENUM_ORDER_TYPE )( 1 - PositionGetInteger ( POSITION_TYPE )); Request.volume = PositionGetDouble ( POSITION_VOLUME ); Request.price = PositionGetDouble ( POSITION_PRICE_CURRENT ); const bool AntiWarning = OrderSend (Request, Result); } } FIBOGroup-MT5 서버 에 대한 결과 ------ OnTesterInit i = 0 Pass = 0 OnTester = 7.994 s.: Count = 15925124 , 1992134.6 unit/sec, Agent = C:\Program Files\Alpari Limited MT5\Tester\Agent- 127.0 . 0.1 - 3000 build = 1653 i = 1 Pass = 1 OnTester = 7.831 s.: Count = 15925124 , 2033600.3 unit/sec, Agent = C:\Program Files\Alpari Limited MT5\Tester\Agent- 127.0 . 0.1 - 3000 build = 1653 i = 2 Pass = 2 OnTester = 7.811 s.: Count = 15925124 , 2038807.3 unit/sec , Agent = C:\Program Files\Alpari Limited MT5\Tester\Agent- 127.0 . 0.1 - 3000 build = 1653 i = 3 Pass = 3 OnTester = 7.825 s.: Count = 15925124 , 2035159.6 unit/sec, Agent = C:\Program Files\Alpari Limited MT5\Tester\Agent- 127.0 . 0.1 - 3000 build = 1653 i = 4 Pass = 4 OnTester = 7.831 s.: Count = 15925124 , 2033600.3 unit/sec, Agent = C:\Program Files\Alpari Limited MT5\Tester\Agent- 127.0 . 0.1 - 3000 build = 1653 i = 5 Pass = 5 OnTester = 7.832 s.: Count = 15925124 , 2033340.7 unit/sec, Agent = C:\Program Files\Alpari Limited MT5\Tester\Agent- 127.0 . 0.1 - 3000 build = 1653 iMin = 2 Results[iMin] = 7.811 s. iMax = 0 Results[iMax] = 7.994 s. Amount = 6 Mean = 7.854 s. - 90.11 % OnTesterDeinit ------ Interval = 52.296 s., Count = 0 , 0.0 unit/sec MetaQuotes-Demo 에 대한 결과 OnTesterInit i = 0 Pass = 0 OnTester = 1.497 s.: Count = 2456073 , 1640663.3 unit/sec, Agent = C:\Program Files\Alpari Limited MT5\Tester\Agent- 127.0 . 0.1 - 3000 build = 1653 i = 1 Pass = 1 OnTester = 1.494 s.: Count = 2456073 , 1643957.8 unit/sec, Agent = C:\Program Files\Alpari Limited MT5\Tester\Agent- 127.0 . 0.1 - 3000 build = 1653 i = 2 Pass = 2 OnTester = 1.496 s.: Count = 2456073 , 1641760.0 unit/sec, Agent = C:\Program Files\Alpari Limited MT5\Tester\Agent- 127.0 . 0.1 - 3000 build = 1653 i = 3 Pass = 3 OnTester = 1.493 s.: Count = 2456073 , 1645058.9 unit/sec , Agent = C:\Program Files\Alpari Limited MT5\Tester\Agent- 127.0 . 0.1 - 3000 build = 1653 i = 4 Pass = 4 OnTester = 1.499 s.: Count = 2456073 , 1638474.3 unit/sec, Agent = C:\Program Files\Alpari Limited MT5\Tester\Agent- 127.0 . 0.1 - 3000 build = 1653 i = 5 Pass = 5 OnTester = 1.498 s.: Count = 2456073 , 1639568.1 unit/sec, Agent = C:\Program Files\Alpari Limited MT5\Tester\Agent- 127.0 . 0.1 - 3000 build = 1653 iMin = 3 Results[iMin] = 1.493 s. iMax = 4 Results[iMax] = 1.499 s. Amount = 6 Mean = 1.496 s. - 49.11 % OnTesterDeinit ------ Interval = 18.279 s., Count = 0 , 0.0 unit/sec FIBOGroup-MT5 Server 의 총 틱 수는 15925124이고 테스터의 성능은 2038807.3 unit/sec입니다. MetaQuotes-Demo에서 틱 수는 2456073이고 테스터의 성능은 1645058.9 unit/sec입니다. 저것들. 두 번째 서버에서는 테스터의 성능이 20% 떨어졌습니다. 그러나 테스터는 거래 서버에 의존해서는 안됩니다! 문제 없이 재현되었습니다. Alexey Viktorov 2017.09.05 08:16 #19882 Alexey Kozitsyn : 도움이 되지 않았습니다 :) 알겠습니다. 왜 SD에서 답을 얻어야 할까요? 마찬가지로, 그러한 목발은 받아 들일 수 없습니다! 기이한. 게시하기 전에 10분 동안 찌르고 주기적으로 차트 기간 을 전환하고 표시기 매개변수에서 true를 false로 변경합니다. 문제가 보이지 않습니다. 물론 이것은 목발이기 때문에 이것이 임시 해결책이라고 말한 이유입니다. Vitaly Muzichenko 2017.09.05 08:22 #19883 Alexey Kozitsyn : 도움이 되지 않았습니다 :) 알겠습니다. 왜 SD에서 답을 얻어야 할까요? 마찬가지로, 그러한 목발은 받아 들일 수 없습니다! 문제 없이 작동합니다. 물론 먼저 출력 버퍼를 정의한 다음 색상 버퍼 를 정의한 다음 이제 완료되는 것이 논리적입니다. [삭제] 2017.09.05 08:23 #19884 Vitaly Muzichenko : 문제 없이 작동합니다. 물론 출력 버퍼를 먼저 정의한 다음 컬러 버퍼를 정의한 다음 이제 완료되는 것이 논리적입니다. Vitaly, 먼저 문제의 본질을 이해하십시오. 설정이 활성화되면 모든 것이 잘 작동합니다. 문제는 설정이 꺼져 있을 때 시작됩니다. [삭제] 2017.09.05 08:28 #19885 Alexey Viktorov : 귀하의 버전은 더 안정적으로 작동하며 거의 항상 정확합니다(TF를 전환하지 않는 경우). 그리고 당신이 전환하고 되돌아가면 ... 다시, 주석이 시작될 것입니다. Evgeny Chernyshev 2017.09.05 08:32 #19886 fxsaber : (string)NormalizeDouble(0.99872, 5)은 매우 긴 결과입니다. 오류가 없습니다. 십진수 표기법의 일부 숫자는 이중으로 정확하게 표현할 수 없습니다. 다음 코드는 정상적인 결과를 생성합니다. DoubleToString (0.99872, 5) fxsaber 2017.09.05 08:33 #19887 Evgeny Chernyshev : 오류가 없습니다. 십진수 표기법의 일부 숫자는 이중으로 정확하게 표현할 수 없습니다. 다음 코드는 정상적인 결과를 생성합니다. DoubleToString(0.99872, 5) 이해했습니다 감사합니다! Alexey Viktorov 2017.09.05 08:38 #19888 Alexey Kozitsyn : Vitaly, 먼저 문제의 본질을 이해하십시오. 설정이 활성화되면 모든 것이 잘 작동합니다. 문제는 설정이 꺼져 있을 때 시작됩니다. Alexey, 죄송합니다. 다른 수정 사항을 놓쳤습니다. //if(inpUseArrows) // Если отображать нужно // { SetPlotParametersArrow( 0 , 0 ,bufArrowUp, false , "test up" , EMPTY , clrLime , 233 , 10 ); SetPlotParametersArrow( 1 , 1 ,bufArrowDn, false , "test dn" , EMPTY , clrRed , 234 ,- 10 ); // } 해당 글에서도 빨간 표시로 수정했습니다. [삭제] 2017.09.05 08:45 #19889 Alexey Viktorov : Alexey, 죄송합니다. 다른 수정 사항을 놓쳤습니다. 해당 게시물에서도 빨간 표시로 수정했습니다. 그게 요점입니다! 방금 끄고 모든 배열이 모든 그래프에 사용되는 것으로 나타났습니다. 시리즈. 그러나 요점은 사용자에게 필요한 경우 그래프의 일부를 비활성화할 수 있는 기회를 제공하는 것입니다. 시리즈. 그리고 필요한 경우 켜십시오! Alexey Viktorov 2017.09.05 08:53 #19890 Alexey Kozitsyn : 그게 요점입니다! 방금 끄고 모든 배열이 모든 그래프에 사용되는 것으로 나타났습니다. 시리즈. 그러나 요점은 사용자에게 필요한 경우 그래프의 일부를 비활성화할 수 있는 기회를 제공하는 것입니다. 시리즈. 그리고 필요한 경우 켜십시오! 글쎄, 그래픽 시리즈의 수는 TF를 전환할 때 변경되지 않는 코드의 맨 처음에 결정됩니다. mql5에서는 무적입니다. 데이터 창 에서 그래픽 시리즈 표시를 제외하는 한 가지 트릭이 더 있지만 다음을 수행해야 합니다. PlotIndexSetString (plotIndex, PLOT_LABEL , NULL); mql4에서는 작동합니다. mql5에서와 같이 확인이 필요합니다. 아직 확인하지 않았습니다. 아니요... mql5에서는 작동하지 않습니다. 효과가있다 PlotIndexSetInteger ( 0 , PLOT_SHOW_DATA , true ); PlotIndexSetInteger ( 1 , PLOT_SHOW_DATA , true ); if (!inpUseArrows) // Если отображать не нужно { PlotIndexSetInteger ( 0 , PLOT_SHOW_DATA , false ); PlotIndexSetInteger ( 1 , PLOT_SHOW_DATA , false ); } 1...198219831984198519861987198819891990199119921993199419951996...3184 새 코멘트 트레이딩 기회를 놓치고 있어요: 무료 트레이딩 앱 복사용 8,000 이상의 시그널 금융 시장 개척을 위한 경제 뉴스 등록 로그인 공백없는 라틴 문자 비밀번호가 이 이메일로 전송될 것입니다 오류 발생됨 Google으로 로그인 웹사이트 정책 및 이용약관에 동의합니다. 계정이 없으시면, 가입하십시오 MQL5.com 웹사이트에 로그인을 하기 위해 쿠키를 허용하십시오. 브라우저에서 필요한 설정을 활성화하시지 않으면, 로그인할 수 없습니다. 사용자명/비밀번호를 잊으셨습니까? Google으로 로그인
테스터의 성능은 거래 서버에 크게 의존합니다.
테스터 설정:
USD 상계, Core1만 포함 .
조언자
FIBOGroup-MT5 서버 에 대한 결과
MetaQuotes-Demo 에 대한 결과
FIBOGroup-MT5 Server 의 총 틱 수는 15925124이고 테스터의 성능은 2038807.3 unit/sec입니다. MetaQuotes-Demo에서 틱 수는 2456073이고 테스터의 성능은 1645058.9 unit/sec입니다. 저것들. 두 번째 서버에서는 테스터의 성능이 20% 떨어졌습니다. 그러나 테스터는 거래 서버에 의존해서는 안됩니다!
문제 없이 재현되었습니다.
도움이 되지 않았습니다 :) 알겠습니다. 왜 SD에서 답을 얻어야 할까요? 마찬가지로, 그러한 목발은 받아 들일 수 없습니다!
기이한. 게시하기 전에 10분 동안 찌르고 주기적으로 차트 기간 을 전환하고 표시기 매개변수에서 true를 false로 변경합니다. 문제가 보이지 않습니다. 물론 이것은 목발이기 때문에 이것이 임시 해결책이라고 말한 이유입니다.
도움이 되지 않았습니다 :) 알겠습니다. 왜 SD에서 답을 얻어야 할까요? 마찬가지로, 그러한 목발은 받아 들일 수 없습니다!
문제 없이 작동합니다. 물론 먼저 출력 버퍼를 정의한 다음 색상 버퍼 를 정의한 다음 이제 완료되는 것이 논리적입니다.
문제 없이 작동합니다. 물론 출력 버퍼를 먼저 정의한 다음 컬러 버퍼를 정의한 다음 이제 완료되는 것이 논리적입니다.
(string)NormalizeDouble(0.99872, 5)은 매우 긴 결과입니다.
오류가 없습니다. 십진수 표기법의 일부 숫자는 이중으로 정확하게 표현할 수 없습니다.
다음 코드는 정상적인 결과를 생성합니다.
DoubleToString (0.99872, 5)
오류가 없습니다. 십진수 표기법의 일부 숫자는 이중으로 정확하게 표현할 수 없습니다.
다음 코드는 정상적인 결과를 생성합니다.
DoubleToString(0.99872, 5)
이해했습니다 감사합니다!
Vitaly, 먼저 문제의 본질을 이해하십시오. 설정이 활성화되면 모든 것이 잘 작동합니다. 문제는 설정이 꺼져 있을 때 시작됩니다.
Alexey, 죄송합니다. 다른 수정 사항을 놓쳤습니다.
해당 글에서도 빨간 표시로 수정했습니다.
Alexey, 죄송합니다. 다른 수정 사항을 놓쳤습니다.
해당 게시물에서도 빨간 표시로 수정했습니다.
그게 요점입니다! 방금 끄고 모든 배열이 모든 그래프에 사용되는 것으로 나타났습니다. 시리즈. 그러나 요점은 사용자에게 필요한 경우 그래프의 일부를 비활성화할 수 있는 기회를 제공하는 것입니다. 시리즈. 그리고 필요한 경우 켜십시오!
그게 요점입니다! 방금 끄고 모든 배열이 모든 그래프에 사용되는 것으로 나타났습니다. 시리즈. 그러나 요점은 사용자에게 필요한 경우 그래프의 일부를 비활성화할 수 있는 기회를 제공하는 것입니다. 시리즈. 그리고 필요한 경우 켜십시오!
글쎄, 그래픽 시리즈의 수는 TF를 전환할 때 변경되지 않는 코드의 맨 처음에 결정됩니다.
mql5에서는 무적입니다.
데이터 창 에서 그래픽 시리즈 표시를 제외하는 한 가지 트릭이 더 있지만 다음을 수행해야 합니다.
PlotIndexSetString (plotIndex, PLOT_LABEL , NULL);
mql4에서는 작동합니다. mql5에서와 같이 확인이 필요합니다. 아직 확인하지 않았습니다.
아니요... mql5에서는 작동하지 않습니다. 효과가있다