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

 
Anatoli Kazharski :

이 문제는 모든 지표에서 나타납니다. 표준 배송 포함. 예를 들어 이동 평균:

//---

그리고 여러 막대가 형성된 후 :

//---

직접 재현해 보십시오. 나 혼자만 이 문제가 있는지 알아내야 합니다.


예 확인:

Terminal        MetaTrader 5 x64 build 1687 started (MetaQuotes Software Corp.)
Terminal        Windows 10 (Build 16299 ), x64 based PC, IE 11.00 , UAC, Intel Core i3- 3120 M  @ 2.50 GHz, RAM: 4473 / 8077 Mb, HDD: 330591 / 475588 Mb, GMT+ 02 : 00
Terminal        C:\Users\barab\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075

생기:

표시기가 움직이지 않음

 
이 주제와 관련이 없는 댓글은 " BUY_LIMIT, ORDER_TIME_DAY "(으)로 이동되었습니다.
 
Vladimir Karputov :

예 확인:

생기:

고맙습니다. 서비스 데스크의 응용 프로그램에 대한 메시지에 대한 링크를 추가로 추가했습니다. 이 버그에 대한 긴급 수정이 필요하며 모든 작업이 중지되었습니다.
 

fxsaber :

두 터미널 모두 무역과 우편이라는 두 개의 탭이 있습니다. 항상 활성화하려면 "무역"이 필요합니다. 그러나 브로커로부터 내부 이메일이 도착하면(예: 부분 채우기) 탭이 "메일"로 전환됩니다.

이 진짜 쓰레기를 끄는 방법? 글쎄, 그런 Navyaschi 통지는 없어야하며 브로커의 완전히 평범한 편지조차도 발생한 주문 실행의 특성에 대해 하루에 수십 번 자동으로보고합니다. 나는 때때로 "Mail"로의 전환이 있고 때로는 그렇지 않은 이유를 이해하지 못합니다.

어떻게 잘라? "메일" 탭을 읽지 않았기 때문입니다. 이것은 스팸입니다. 간단히 말해서 스팸에 대한 터미널 GUI의 이러한 반응은 짜증납니다.


WinApi를 사용하면 거래, 잔액 등 원하는 탭으로 전환하는 기능을 구현할 수 있다고 생각합니다.
직접 구현하거나 프리랜스로 주문하십시오. 아직 장인이 있기를 바랍니다.

 
Sergey Dzyublik :

WinApi를 사용하면 거래, 잔액 등 원하는 탭으로 전환하는 기능을 구현할 수 있다고 생각합니다.
직접 구현하거나 프리랜스로 주문하십시오. 아직 장인이 있기를 바랍니다.

나 자신도 그러한 변태를 행했다. 사용자 친화적인 GUI를 원합니다.

 
Aleksey Vyazmikin :

다시 말하지만 그는 기억이 없습니다 ...

아직 7GB의 RAM이 남아 있지만. 이게 뭔가요?

서비스 데스크에서 티켓을 엽니다. 전문가 및 최적화 설정 을 연결합니다.

+ 운영 체제, 비트 깊이, 시스템 구성을 설명합니다.

 
Alexey Da :

서비스 데스크에서 티켓을 엽니다. 전문가 및 최적화 설정 을 연결합니다.

+ 운영 체제, 비트 깊이, 시스템 구성을 설명합니다.


예, 나는이 모든 것을 재현하는 방법을 모릅니다. 지난 주에는 매일 그러한 메시지가 나타났지만 고문은 전혀 작동하지 않았습니다. 그리고 요전날 최적화와 함께 ... 모든 프로그램을 닫은 후에 모든 것이 작동했습니다.

프로그램 간의 충돌이 아닐까요? 나는 Opera 브라우저가 열릴 때 버그가 항상 거기에 있다는 것을 알아 차렸다.

 

이 스레드 에서 MT4 및 MT5에서 Comment() 명령의 속도에 대해 흥미로운 사실을 발견했습니다. MT5에서 이 명령은 MT4보다 ~2000배(!!!) 느리게 작동합니다.

다음은 두 플랫폼에서 작동하는 테스트 코드입니다.

 #property script_show_inputs
#include <Canvas\Canvas.mqh>

input uint    FontSize= 12 ;                                   // размер шрифта
input uint    Count= 1000 ;                                     // размерность цикла
input ENUM_COLOR_FORMAT format= COLOR_FORMAT_ARGB_NORMALIZE ; //Способ обработки цвета

void OnStart ()
  {
   CCanvas Text;
   ulong ColorScreen= ChartGetInteger ( 0 , CHART_COLOR_BACKGROUND , 0 );

   Text.FontSet( "Arial" ,FontSize);
   string str= "Необходимо подождать.Выполняется проход цикла №: = " ;
   int H=Text.TextHeight(str);
   int W=Text.TextWidth(str+ "00000" );
   if (!Text.CreateBitmapLabel( 0 , 0 , "FONT" , 2 , 130 ,W,H,format)) Print ( "Error creating canvas: " , GetLastError ());

   ulong t1= 1 ,t2= 1 ,t0;
   uint j= 0 ;
   color clr=( color )ARGB( 255 , 255 ^GETRGBR(ColorScreen), 255 ^GETRGBG(ColorScreen), 255 ^GETRGBB(ColorScreen));
   t0= GetMicrosecondCount ();
   for (j= 0 ;j<Count;j++)
     {
       Comment (str+ IntegerToString (j));
       if ( IsStopped ()) break ;
     }
   t1= GetMicrosecondCount ()-t0;

   t0= GetMicrosecondCount ();
   for ( j= 0 ;j<Count;j++)
     {
      Text.Erase(( color )ColorScreen);
      Text. TextOut ( 0 , 0 ,str+ IntegerToString (j),clr);
      Text.Update();
       if ( IsStopped ()) break ;
     }
   t2= GetMicrosecondCount ()-t0;
      Text.Erase(( color )ColorScreen);
      Text. TextOut ( 0 , 0 , "Время Comment = " + IntegerToString (t1)+ " Время Canvas = " + IntegerToString (t2),clr);
      Text.Update();
       Sleep ( 30000 );
     
   Text.Destroy();
   Comment ( "" );
  }
//+------------------------------------------------------------------+

이거 괜찮아?

파일:
 
Nikolai Semko :

이 스레드 에서 MT4 및 MT5에서 Comment() 명령의 속도에 대해 흥미로운 사실을 발견했습니다. MT5에서 이 명령은 MT4보다 ~2000배(!!!) 느리게 작동합니다.

다음은 두 플랫폼에서 작동하는 테스트 코드입니다.

이거 괜찮아?

예, 모든 것이 옳고 정확합니다.

MT4에서 주석 기능은 차트에 표시하지 않고 내부 주석 텍스트 필드를 변경하기만 하면 됩니다. 즉, 주석은 언젠가는 차트의 다음 일반 도면에 나타나지만 주석 자체의 변경으로 인해 차트가 다시 그려지는 것은 아닙니다. 주석을 빠르게 변경하면 차트에 변경 사항이 표시되지 않습니다.

MT5에서 주석 기능은 차트에 주석을 표시하는 것이 우선 순위이기 때문에 명시적으로 차트가 다시 그려지도록 합니다. 그렇지 않으면 기능이 쓸모가 없습니다.

차이점은 바로 이것입니다.


Comment를 호출한 후 MT4에서 ChartRedraw()가 강제 실행되면 동작은 여전히 MT5와 같지 않습니다. Metatrader 4의 ChartRedraw()는 주석 값을 무시하고 마지막 프레임에서 차트를 업데이트할지 여부를 자체적으로 결정합니다. 물론 차트 데이터 무효화를 일으키는 초당 수백 개의 따옴표가 없는 경우 ChartRedraw는 "변경되지 않은 차트를 그리는 이유"를 결정하고 프레임 그리기를 건너뜁니다.

Metatrader 5도 동일한 시스템을 가지고 있지만 무조건 렌더링을 우선시하는 경우가 더 많습니다.

터미널은 그래픽 응용 프로그램이며 초당 수백 프레임을 전달할 수 있으며 성능을 향상시키기 위해 디스플레이 절약 모드에서 작동합니다.


따라서 벤치마크를 수행할 때 추가 결론은 다음과 같습니다.

  • ChartRedraw 호출은 차트의 실제 그림으로 간주할 수 없습니다.

  • 당신은 항상 "프레임이 그려진 이유"와 "단말이 프레임을 다시 그리기로 결정하도록 시장의 내부 그림을 무효화합니까?"라는 진술을 알고 증명해야합니다.

  • 벤치마크 중에 여러 가지 결론을 내릴 수는 없습니다.

  • MT5에는 차트의 개체를 변경하는 데 더 정확한 시스템이 있으며 읽기/쓰기 명령을 혼합한 결과를 명확하게 이해해야 합니다.
    읽기/쓰기 명령을 혼합하지 말고 대량 읽기 및 대량 쓰기 명령을 별도로 수행하는 것이 좋습니다.

  • 벤치마크에서 차트를 자주 다시 그리면 결과가 그래픽 카드에 크게 의존하게 됩니다.
    실제로 일부 테스트에서는 알고리즘이나 기능이 아니라 그래픽 카드를 테스트할 수 있습니다. 랩톱과 데스크톱 컴퓨터에서의 테스트는 단순히 3-5배 느린 비디오 카드 때문에 여러 배 다른 결과를 보여줄 수 있습니다.

이러한 실수는 항상 이루어집니다.

 
Renat Fatkhullin :

예, 모든 것이 옳고 정확합니다.

자세한 답변 정말 감사합니다. 대략 그렇게 생각했습니다. 모든 것이 논리적입니다.