오류, 버그, 질문 - 페이지 2733

 
Geess :

문자열 배열 대신 uchar 배열만 전달합니다. 더 쉽습니다.
예를 들어 다음과 같이 변환할 수 있습니다.

MQL4 및 MQL5에서 동일하게 작동

dll에서 MQL로 값을 반환해야 하며, 어쨌든 MQL 측에서는 데이터 수신을 위한 버퍼를 준비해야 합니다.

일반적으로 설명하는 데 시간이 오래 걸리고 이미 모든 작업을 수행했으며 방금 상담하기로 결정했습니다.

고맙습니다

 
네임스페이스에 오버로드된 함수의 우선 순위 호출과 관련된 MT5 버그(빌드 2402) 문제:
1) 전역 네임스페이스의 함수가 오버로드된 경우
2) 시스템 기능에 과부하가 걸렸을 때.

 void func(){
   printf ( "1" );
}
      
namespace A{
   void func(){
       printf ( "2" );
   }
   bool OrderSend ( const MqlTradeRequest &trader_request, MqlTradeResult &trade_result){
       printf ( "2" );
       return true ;
   }
      
   class B{
       public :      
       void test(){
         func();                             // PRINT: 1    Expected result: 2
         
         MqlTradeRequest request;
         MqlTradeResult result;
         OrderSend (request, result);         // Compile Error: 'OrderSend' - override system function. Expected result: 2
      }
   };
};

void OnStart (){    
   A::B b;
   b.test();
}
 

안녕하세요!

알려주십시오. 전문 스나이퍼가 있습니다. MT4 Alpari의 새 빌드에서는 작동하지 않습니다. 어떻게든 고칠 수 있습니까? 일정에도 나오지 않습니다. 빌드 1090에서 작동합니다.

그러나 1090 빌드의 MT4 터미널은 인터넷에 연결되지 않으며 "Old Version"이라고 씁니다.

 
valera_nur :

안녕하세요!

알려주십시오. 전문 스나이퍼가 있습니다. MT4 Alpari의 새 빌드에서는 작동하지 않습니다. 어떻게든 고칠 수 있습니까? 일정에도 나오지 않습니다. 빌드 1090에서 작동합니다.

그러나 1090 빌드의 MT4 터미널은 인터넷에 연결되지 않으며 "Old Version"이라고 씁니다.

전문가 소스 파일이 있으면 프리랜서에 문의하십시오. 그들은 거기에 도움이 될 것입니다.

물론 전문가의 저자에게 직접 연락하는 것이 가장 좋습니다.

 

.Net의 WinForms에서 창에 그래픽 테이블을 생성하고 MQL4에 대한 기본 호출을 위한 코드를 이식하는 MQL5용 dll을 작성했습니다.

표의 5열 5행 그래픽 업데이트 속도를 평가하는 속도 측정

   for ( int j = 0 ; j < 3 ; j++)
   {
       uint start = GetTickCount ();
       for ( int i = 0 ; i < 100000 ; i++)
      {
         string s = ( string )(i) + ";" + ( string )(i + 1 ) + ";" + ( string )(i + 2 ) + ";" + ( string )(i + 3 ) + ";" +  ( string )(i + 4 ) + "\n" +
                    ( string )(i) + ";" +  ( string )(i + 1 ) + ";" + ( string )(i + 2 ) + ";" + ( string )(i + 3 ) + ";" + ( string )(i + 4 ) + "\n" +
                    ( string )(i) + ";" +  ( string )(i + 1 ) + ";" + ( string )(i + 2 ) + ";" + ( string )(i + 3 ) + ";" + ( string )(i + 4 ) + "\n" +
                    ( string )(i) + ";" +  ( string )(i + 1 ) + ";" + ( string )(i + 2 ) + ";" + ( string )(i + 3 ) + ";" + ( string )(i + 4 ) + "\n" +
                    ( string )(i) + ";" +  ( string )(i + 1 ) + ";" + ( string )(i + 2 ) + ";" + ( string )(i + 3 ) + ";" + ( string )(i + 4 ) + "\n" ;
         TBL_FillAllTable(htbl, s);
      }
       uint time = GetTickCount () - start;
       PrintFormat ( "Цикл  %d время = %d ms" , j, time);
   }

.....
void TBL_FillAllTable(int handle, string data, string  ColSeparator = ";", string RowSeparator = "\n")
{
#ifdef __MQL4__   refreshalldata(handle,data,ColSeparator,RowSeparator); #endif
#ifdef __MQL5__   SHARPTABLE::refreshalldata(handle, data,ColSeparator, RowSeparator); #endif
}
//+------------------------------------------------------------------+

MQL5:

2020.05.05 22:55:33.220 tbl_tst (EURUSD,H1) 사이클 0 시간 = 143563ms

2020.05.05 22:57:55.370 tbl_tst (EURUSD,H1) 사이클 1 시간 = 142156ms

2020.05.05 23:00:19.121 tbl_tst (EURUSD,H1) 사이클 2 시간 = 143750ms

MQL4:

2020.05.05 22:51:25.359 tbl_tst EURUSD,H1: 사이클 2 시간 = 66813ms

2020.05.05 22:50:18.551 tbl_tst EURUSD,H1: 사이클 1 시간 = 69219ms

2020.05.05 22:49:09.332 tbl_tst EURUSD,H1: 사이클 0 시간 = 67062ms


dll 코드 99% 일대일, https://www.mql5.com/en/articles/249 기사의 예와 함께 MQL4용으로 이식됨


나는 그것이 큰 차이라고 생각한다.

파일:
tst_winforms.jpg  239 kb
 
확인하고 100% 재현할 수 있도록 라이브러리 코드 + 전체 MQL 코드를 첨부하세요.
 
Renat Fatkhullin :
확인하고 100% 재현할 수 있도록 라이브러리 코드 + 전체 MQL 코드를 첨부하세요.

여기 테스트 스크립트가 있습니다

원칙적으로 PM에게 프로젝트 와 VS를 보낼 수 있습니다.

 

위의 테스트는 다음에서 실행되었습니다.

2020.05.05 23:46:03.512 Terminal MetaTrader 5 x64 build 2402 started for MetaQuotes Software Corp.

2020.05.05 23:46:03.515 단말기 Windows 10 빌드 18363, Intel Core i3 M 380 @ 2.53GHz, 0/2Gb 메모리, 149/237Gb 디스크, IE 11, UAC, GMT+4

또한 랩톱에 업데이트되지 않은 터미널이 있습니다.

2020.05.05 23:37:15.336 단말기 MetaTrader 5 - FXOpen x64 빌드 2280 시작(FXOpen Investments Inc.)

2020.05.05 23:37:15.338 단말기 Windows 10(빌드 18363) x64, IE 11, UAC, Intel Core i3 M 380 @ 2.53GHz, 메모리: 1071/2804Mb, 디스크: 149/237Gb, GMT+4

이전 빌드에 첨부한 코드를 실행하면 더 나은 테스트 시간을 얻을 수 있습니다.

2020.05.05 23:40:09.553 tbl_tst (EURUSD,H1) 사이클 0 시간 = 68938ms

2020.05.05 23:41:17.911 tbl_tst (EURUSD,H1) 사이클 1 시간 = 68343ms

2020.05.05 23:42:26.912 tbl_tst (EURUSD,H1) 사이클 2 시간 = 69000ms

 
Igor Makanu :

위의 테스트는 다음에서 실행되었습니다.

또한 랩톱에 업데이트되지 않은 터미널이 있습니다.

이전 빌드에 첨부한 코드를 실행하면 더 나은 테스트 시간을 얻을 수 있습니다.

2020.05.05 23:40:09.553 tbl_tst (EURUSD,H1) 사이클 0 시간 = 68938ms

2020.05.05 23:41:17.911 tbl_tst (EURUSD,H1) 사이클 1 시간 = 68343ms

2020.05.05 23:42:26.912 tbl_tst (EURUSD,H1) 사이클 2 시간 = 69000ms

나는 MT4에서와 같은 2404에서 동일한 속도를 가지고 있습니다.

 
Geess :

나는 MT4에서와 같은 2404에서 동일한 속도를 가지고 있습니다.

MT5가 PC 리소스에 대해 더 까다로워졌다는 의혹이 있습니다. 내일 PC를 확인하겠습니다. 노트북은 다소 약합니다((

예, 여기에 또 다른 것이 있습니다. 새 빌드의 PC 구성 라인이 혼란스럽습니다. 위의 내용은 내 게시물입니다. 어떤 이유에서인지 새 빌드는 랩톱의 메모리에 대해 썼습니다.

0 / 2Gb 메모리

발사 조건은 동일했고 ME와 하나의 터미널만 발사되었습니다.

추신: 하지만 WinForm에서 데이터 업데이트 속도가 1ms 미만입니다....예기치 않게;)