앗 - 페이지 2

 
Interesting :

실제로 일반적인 접근 방식을 사용하면 MQL5에서 구현된 OOP(터미널 자체의 리소스와 함께)는 속도를 크게 향상시킵니다.

프로그램의 속도 또는 작성 속도에 대한 작업 속도는 무엇입니까?

 
Integer :

OOP 성능이 증가하지 않습니다. 그것의 이점 - 예를 들어, 일부 매개변수와 함께 호출되는 일종의 함수가 있으며(EMA 계산을 가정해 봅시다), 이 함수는 정적 변수를 사용하여 EMA의 이전 값을 저장합니다. 함수는 계산이 수행될 기준으로 마지막 값을 저장하기 때문에 다음 에 함수가 호출 될 때 더 이상 다른 매개변수(기호, 시간 프레임, 평활 기간)와 함께 호출할 수 없으므로 호출해야 하는 경우 매개변수가 다른 함수의 경우 다른 이름을 사용하여 복사본을 만들거나 정적 변수 대신 참조로 전달되는 전역 변수를 사용해야 합니다. 이것은 객체를 사용하는 것이 더 편리한 유일한 경우입니다. 객체의 인스턴스가 로드되고 매개변수가 설정된 다음 매개변수가 없는 메소드가 호출됩니다. 개체에 실행이 이전 실행이나 개체가 로드되는 매개변수에 의존하지 않는 메서드가 포함된 경우 리소스만 소비합니다.

증가, 증가, 여전히 증가합니다. 사실, 그것은 모두 프로그래머의 손의 경험, 상상력 및 곡률에 달려 있습니다 (순서대로) ... :)

그리고 사실, OOP(가장 끔찍한 접근 방식)가 실행 속도를 증가시키지 않거나 약간 증가한다고 가정하더라도(개인적으로 10배 증가가 중요하지 않은 것으로 간주될 수 있는지 의심스럽긴 하지만), OOP의 가능한 모든 단점보다 개발자를 이해하는 데 여전히 더 유용합니다.

여기서 요점은 MQL5가 OOP가 있는 상태에서 MQL4(라이브러리 제외)에서 관찰되지 않는 프로그래밍에 대한 모듈식(단위) 접근 방식의 개발에 어떻게든 기여할 것이라는 점입니다. 이는 구조, 클래스 또는 이들의 그룹을 별도의 파일(모듈)에 배치하고 필요한 경우 사용하는 것이 편리하기 때문입니다.

또한 추상화, 캡슐화, 상속 및 다형성으로 인해 클래스를 사용하면 기성 블록(모듈)을 디버그하고 채우기에 대해 생각하지 않고 작업에 사용할 수 있습니다.

또한 이론상 OOP를 사용하면 거래 시스템에서 외부 DLL 및 기타 소프트웨어 튜닝의 수준과 유용성을 높일 수 있습니다.

라이브러리 사용과 함께 이것은 개발자의 삶을 수십 배 더 쉽게 만들고 상당히 복잡한 Expert Advisors의 개발 속도를 크게 높일 것입니다.

 
Integer :

프로그램의 속도 또는 작성 속도에 대한 작업 속도는 무엇입니까?

둘 다에 대해. 개발 속도에 대한 자세한 내용은 위에 나와 있습니다(물론 클래스 개발 및 사용 경험이 있는 경우 이 모든 것이 이해가 됩니다)...
 
Interesting :

증가, 증가, 여전히 증가 ....

누가 당신에게 이것을 말했습니까? 사실이 아니다. 다른 모든 것은 맞습니다.

 
Integer :

누가 당신에게 이것을 말했습니까? 사실이 아니다. 다른 모든 것이 맞습니다.

나는 반복한다 - 증가하더라도 증가한다, 증가한다. 사실, 여기의 모든 것은 프로그래머의 손의 경험, 상상력 및 곡률에 달려 있습니다(순서대로)...

옛날 옛적에 나는 Expert Advisor의 초기화 속도를 비교했지만 사소한 세부 사항을 제외하고는 프로그램 코드가 동일했습니다(MQL5에서는 마이그레이션 라이브러리가 사용됨). 그 결과 MQL5가 평균 2.5배 빠른 초기화를 수행하는 것으로 나타났다.

물론 이것이 지표가 아니라는 것을 알고 있지만 올바른 접근 방식을 사용하면 지금도 MQL5의 속도가 평균 10배 이상 빠르다고 확신합니다.

얼굴이 멍해질 때까지 여기에서 논쟁할 수 있지만 OnTrade() 또는 OnChartEvent 를 구현해 볼 가치가 있습니다. 그러면 모든 것이 명확해질 것입니다. 그러나 이러한 것들 외에도 더 많은 "굿즈"가 있습니다 ...

추신

물론, 전략 테스터 및 지표와 관련된 속도의 정체가 있습니다. 그러나 시간이 지남에 따라 이러한 단점은 터미널 개발자 또는 거래 전문가의 작성자에 의해 제거됩니다.

또한 MQ는 프로그램 코드 실행의 최대 속도는 아직 사용할 수 없다고 반복해서 밝혔습니다(지금까지 내가 아는 한)...

 
증가 ... 증가 ... 카속을 입고 손에 종을 들고 만트라의 곡조에 맞춰 노래하는 것이 남아 있습니다. MQL5는 MQL4보다 빠릅니다. 객체를 지원하기 때문이 아닙니다.
 
Integer :
증가 ... 증가 ... 카속을 입고 손에 종을 들고 만트라의 곡조에 맞춰 노래하는 것이 남아 있습니다.

정수 :
MQL5는 MQL4보다 빠릅니다. 객체를 지원하기 때문이 아닙니다.
그러나 그렇다 하더라도 대부분의 경우 더 빠릅니다. 그리고 일반적 으로 개체 작업 속도 측면에서 MQL5MQL4 (및 다른 프로그래밍 언어와 함께)와 비교하는 것은 옳지 않다고 생각합니다.
 

GetTickCount() 함수를 사용하여 OOP 가 있거나 없는 유사한 Expert Advisors를 테스트했습니다.

my_oop_ea 테스트( OOP 포함)

RJ 0 코어 1 15:12:15 테스트 시간 = 115203

EO 0 코어 1 15:12:15 EURUSD,H1: 115203ms 이내에 생성된 6124935틱(3052개 막대)(역사의 총 막대 9199개)

RP 0 코어 1 15:12:15 연결이 끊긴


My_First_EA 테스트( OOP 없음 )

RH 0 코어 1 15:18:54 테스트 시간 = 90578

CR 0 코어 1 15:18:54 EURUSD,H1: 90578ms 이내에 생성된 6124935틱(3052개 막대)(역사의 총 막대 9199개)

또는 0 코어 1 15:18:54 연결이 끊긴


차이는 작지만 OOP에 유리하지는 않습니다. 그리고 최적화의 경우 내가 올바르게 이해한다면 이 차이에 실행 횟수를 곱할 것입니다.

나름대로 결론을 내렸습니다.

또한 MT5(OOP 포함) 및 MT4에 대한 표준 MACD Sample Expert Advisors를 비교했습니다.

Macd 샘플 MT5

FO 0 코어 1 18:03:21 테스트 시간 = 126016

FD 0 코어 1 18:03:21 EURUSD,M1: 126016ms 이내에 생성된 6124935틱(181129개 막대)(역사의 총 막대 545615개)


Macd 샘플 MT4

18:12:52 2010.06.30 23:59 MACD 샘플 EURUSD,M1: 테스트 시간 = 64406

결과는 놀랍습니다. OOP가 포함된 MT5 및 MQL은 리소스를 많이 소비할 뿐만 아니라 거래자의 시간을 낭비하기도 합니다.

 

다른 MT4 및 MT5 플랫폼을 테스트할 때 OOP에 대한 결론을 구체적으로 도출할 수 없습니다. 결과의 차이는 시스템 아키텍처가 다르기 때문에 90%입니다.

또한 MQL5 코드 최적화 프로그램이 완전히 비활성화된 상태에서 이를 염두에 두고 있습니다. 전원을 켜면 결과가 즉시 다양하게 개선됩니다.

MQL4와 MQL5의 속도를 비교한 기사가 어제 게시되었습니다.

MQL5에서 이동 평균 성능 조사 기사가 게시되었습니다 .

최초의 단순 이동 평균 지표가 생성된 이후로 다양한 지표가 등장했습니다. 대부분은 유사한 원칙에 따라 구축되거나 계산 시 가격 계열을 처리하는 특정 방법을 사용합니다. 동시에, 그러한 지표의 계산 속도와 여기에 포함된 알고리즘의 최적성에 대한 질문은 종종 선외적인 문제로 남아 있습니다. 이 기사에서는 이동 평균을 사용할 수 있는 모든 옵션을 고려하고 각각의 성능을 비교 분석합니다.

저자: 세르게이

 


매개변수가 하나 더 있는 함수는 분명히 더 느립니다. 매개 변수 때문입니까?

파일:
test.mq5  2 kb