MT5와 속도 - 페이지 90

 

거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼

MT5와 속도

fxsaber , 2021.03.10 14:53

Market Review가 야기하는 제동을 보여주는 예시.

프로세서 열의 값을 확인하십시오(오른쪽에서 두 번째).


비디오 카드에서 시장 개요를 처리해야 할까요?

 
BillionerClub :

비디오 카드에서 시장 개요를 처리해야 할까요?

특히 MT가 가상 머신에 있는 경우(가장 드문 경우는 아님).

 
BillionerClub :

비디오 카드에서 시장 개요를 처리해야 할까요?

터미널에는 FPS(초당 프레임 수) 제한이 없습니다. Market Watch에서는 300fps 이상일 수 있습니다.

fps > 50인 거래 터미널의 모든 시각화는 컴퓨팅 리소스 의 낭비입니다.

 
BillionerClub :

비디오 카드에서 시장 개요를 처리해야 할까요?

오히려 SysListView32를 기반으로 하지 않는 것이 좋습니다. SysListView32는 그 자체로는 스마트하지 않지만 렌더링을 위한 자체 요소가 있지만 스크롤, 정렬 등 구현의 모든 "매력"이 있습니다 . 또 다른 질문 - 이 형식으로 작업할 때 정말 필요한가요? 그런 다음 작업 기간 동안 끄면 이 문제에 대한 수정 옵션이 됩니다(문제인 경우).

 
그래픽 개체에 대해 누락된 속성 캐시를 찾았습니다.
 #include <fxsaber\Benchmark\Benchmark.mqh> // https://www.mql5.com/ru/code/31279

void OnStart ()
{
   const string Name = "ObjectName" ;
  
   ObjectCreate ( 0 , Name, OBJ_BITMAP_LABEL , 0 , 0 , 0 );
  
   for ( int i = 0 ; i < 10 ; i++)
    _B(:: ObjectGetInteger ( 0 , Name, OBJPROP_COLOR ), 100 ); // Повторное обращение к тому же объекту должно быть быстрым, но этого не происходит.
    
   ObjectDelete ( 0 , Name);
  
   Print (:: ObjectSetInteger ( 0 , Name, OBJPROP_COLOR , 0 )); // true для удаленного объекта!
}


결과.

 Alert : Bench_Stack = 0 , 100 <= Time[Test9.mq5 555 in OnStart : :: ObjectGetInteger ( 0 ,Name, OBJPROP_COLOR )] = 9361 mcs.
Alert : Bench_Stack = 0 , 100 <= Time[Test9.mq5 555 in OnStart : :: ObjectGetInteger ( 0 ,Name, OBJPROP_COLOR )] = 396 mcs.
Alert : Bench_Stack = 0 , 100 <= Time[Test9.mq5 555 in OnStart : :: ObjectGetInteger ( 0 ,Name, OBJPROP_COLOR )] = 1399 mcs.
Alert : Bench_Stack = 0 , 100 <= Time[Test9.mq5 555 in OnStart : :: ObjectGetInteger ( 0 ,Name, OBJPROP_COLOR )] = 987 mcs.
Alert : Bench_Stack = 0 , 100 <= Time[Test9.mq5 555 in OnStart : :: ObjectGetInteger ( 0 ,Name, OBJPROP_COLOR )] = 1111 mcs.
Alert : Bench_Stack = 0 , 100 <= Time[Test9.mq5 555 in OnStart : :: ObjectGetInteger ( 0 ,Name, OBJPROP_COLOR )] = 1040 mcs.
Alert : Bench_Stack = 0 , 100 <= Time[Test9.mq5 555 in OnStart : :: ObjectGetInteger ( 0 ,Name, OBJPROP_COLOR )] = 639 mcs.
Alert : Bench_Stack = 0 , 100 <= Time[Test9.mq5 555 in OnStart : :: ObjectGetInteger ( 0 ,Name, OBJPROP_COLOR )] = 796 mcs.
true


그것은 매우 비싸다. 글쎄, 동시에 ObjectSet 기능의 오류.

검색 문자열 : Osibka 026.

 
fxsaber :

글쎄, 동시에 ObjectSet 기능의 오류.

검색 문자열 : Osibka 026.

객체 작업은 비동기식입니다.

 
Andrey Khatimlianskii :

객체 작업은 비동기식입니다.

ObjectSet은 항상 true를 반환해야 합니다.

 
fxsaber :

ObjectSet은 항상 true를 반환해야 합니다.

도움말 읽기:

https://www.mql5.com/ru/docs/objects/objectsetinteger

반환 값

그래픽 개체의 속성을 변경하는 명령이 그래픽에 성공적으로 전송된 경우에만 true를 반환하고, 그렇지 않으면 false를 반환합니다. 오류 에 대한 자세한 정보를 얻으려면 GetLastError() 함수를 호출해야 합니다.


Документация по MQL5: Графические объекты / ObjectSetInteger
Документация по MQL5: Графические объекты / ObjectSetInteger
  • www.mql5.com
ObjectSetInteger - Графические объекты - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
fxsaber :

ObjectSet은 항상 true를 반환해야 합니다.

논리를 사용하여 같은 결론에 도달할 수 없습니다.

 
Andrey Khatimlianskii :

안토니 :

false - ChartID 에 실수를 한 경우에만 해당됩니다. 그래프(영)는 항상 참입니다.

false를 호출하려면 많은 노력이 필요합니다.

사유: