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

 
kaus_bonus :

답변 해주셔서 감사합니다.

일반적으로 결과는 내 게시물에 표시한 대로입니다.

또한 내 앞에 작은 속임수 인 SSD가 있습니다. 실제로 노멀로 테스트 해봤습니다.

치트가 아니라 두 시스템 모두 동일한 조건입니다.


그러나 MT4와 MT5 사이의 결과는 거의 200배 차이가 납니다( 서버 데이터 ?? 및 ping?과의 전체 동기화의 필수 제어 로 인해).

MT4에서 약 0.6ms, 내가 알아낼 것입니다. 분명히 데이터는 이미 사전 준비되어 있으므로 이 수치에는 실제 비용이 표시되지 않습니다.

MT4는 완전히 다른 이념을 가지고 있으며, 사실 백그라운드에서 터미널은 MQL4 코드 외부의 시스템 수준에서 각 스크립트/전문가에 대해 엄청난 양의 데이터를 복사합니다. 따라서 MQL4의 측정은 데이터를 얻기 위한 리소스의 실제 비용을 표시하지 않는 경우가 많습니다. 물론 비용이 있지만 다른 수준에 있습니다. 시스템이 자체적으로 비용을 부담합니다.

작업이 무제한 데이터 스트림(깊은 기록, 수만 개의 도구)으로 확장 가능한 경우 MT4 메커니즘(각 로봇에 대한 시장 데이터의 복사본 을 구축하기 위해)을 사용할 수 없다는 것이 분명합니다. 따라서 직접 Open/High/Low/Close 액세스를 제거하고 CopyXXX 기능으로 전환하여 MQL5를 근본적으로 변경하고 개선해야 했습니다. MT5 데이터의 양을 고려할 때 6백만 바에 대해 EURUSD M1 사본을 구축하는 것은 Expert Advisor에게 너무 비쌉니다.

MT5/MQL5는 사전 백업 없이 모든 곳에서 주문형 데이터 로드 전략을 사용하므로 MQL5 코드에서 실제 비용을 측정할 수 있는 능력이 향상됩니다.

데이터베이스를 메모리로 올리고 동기화를 확인하고 113밀리초 내에 MT5에서 복잡한 개체의 캐시를 준비하는 것은 허용됩니다.

 
kaus_bonus :

예를 들어, 왜냐하면 MT에는 시장 스크리너가 없으므로 시장 개요에 기호를 추가하는 작은 스크립트를 찾았습니다. 동시에 가격은 CopyClose를 통해서만 사용할 수 있고 SymbolInfoDouble을 통해서도 MqlTick을 통해서도 사용할 수 없습니다. 기호가 개요에 추가될 때까지 가격은 사용할 수 없습니다. 그런 다음 터미널을 시작한 후 유사한 스크립트를 실행하면 "무한" 오래 실행됩니다. 매우 많은 수를 실행합니다. 이것은 단지 예입니다.

내역을 얻기 위해 마켓 워치에 상품을 추가할 필요는 없습니다. 기호 데이터에 액세스하면 백그라운드 데이터 동기화가 발생합니다.

이제 최신 데이터를 요청했음에도 불구하고 전체 차트 데이터베이스를 최대 깊이로 올리는 데 과도한 수준의 캐싱을 사용한다는 사실에 문제가 있습니다. 결과적으로 수백 개의 그래프를 확인하는 스크리너에게 큰 메모리 오버헤드가 발생합니다.

이 전략을 변경하고 요청의 가장 먼 날짜로부터 500바 이하로 데이터를 올리도록 작업이 이미 설정되었습니다. 이를 통해 시장 스크리너를 손쉽게 작성할 수 있습니다.

 
fxsaber :

어때요?


당신은 스스로에게 물었고, 스스로 대답했습니다. :) 글쎄요, 그렇습니다.
 
Алексей Тарабанов :

당신은 스스로에게 물었고, 스스로 대답했습니다. :) 글쎄요, 그렇습니다.
템플릿 운영자의 단축된 호출을 보지 못했습니다.
 
fxsaber :
템플릿 운영자의 단축된 호출을 보지 못했습니다.

백 년 동안 구조물을 다루지 않았습니다. 구조 배열의 요소를 전체적으로 초기화해야 하는 경우 이는 문자열 작업이 됩니다. 그리고 컴파일러에서 보고한 대로 이 변환된 문자열 의 정수 요소를 올바르게 시작했습니다. 구조 배열을 시작, 비교 또는 처리하려는 경우 MQL에서 해당 배열이 표현/저장되는 방식에 관심을 가지십시오. 복잡하지 않고 작업 속도가 크게 빨라집니다.
 
Алексей Тарабанов :
어떤 구문 표기법이 이에 대한 속기인지 알아야 합니다.
Struct. operator []< int >( 0 );
 
fxsaber :
어떤 구문 표기법이 이에 대한 속기인지 알아야 합니다.
구조체[0]
 
Комбинатор :
구조체[0]

누구에게 어떻게
 
Комбинатор :
구조체[0]
페이지를 오르지 않기 위해 코드를 복사합니다.

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

오류, 버그, 질문

fxsaber , 2017.04.12 14:27

 struct STRUCT
{
   template < typename T>
   void operator []( int ) {}
};

void OnStart ()
{
  STRUCT Struct;
  
  Struct. operator []< int >( 0 ); // Нормально
  Struct[ 0 ]< int >;             // Ошибка
}

이 두 호출은 서로 다릅니다

Struct. operator []< int >( 0 );
Struct. operator []< MqlTick >( 0 );

각각에 해당하는 약어가 있어야 합니다. 어느?

 
fxsaber :
어떤 구문 표기법이 이에 대한 속기인지 알아야 합니다.

어떤 기록도 당신이 원하는 것을 제공할 수 없습니다. 기본적으로. 의미적으로.