MT5에서 어레이를 강제로 지우시겠습니까? - 페이지 4

 
4-ke에서 크기 조정 시 0으로 초기화가 발생한다는 사실을 몰랐습니다. 이것은 편의가 아니라 일종의 어리 석음으로 프로그램 속도를 저하시킵니다. 저것들. -1 값으로 배열을 초기화해야 하는 경우 이중 초기화가 있습니다.
그리고 그들은 MT4가 왜 더 느린지 궁금해합니다.
 
Vasiliy Sokolov :

... MQL5는 MQL4와 달리 사용자가 원하는 것을 이해하려고 하지 않으며, 맞습니다.

나는 이것을 광고 포스터에 걸 것을 제안합니다. :) (농담)

Vasily는 프로그래머의 편의에 대한 그러한 MT5 접근 방식을 정당화하는 뉘앙스가 있다는 것을 깨달았습니다. 그리고 난 상관없어. 순리에 맡기다.

 
Реter Konow :

1. 논리에 따르면 배열을 지우는 절차는 컴파일 단계에서 컴파일러가 한 번 수행합니다.

예, 논리에 문제가 있습니다. :)

 
Nikolai Semko :
4-ke에서 크기 조정 시 0으로 초기화가 발생한다는 사실을 몰랐습니다. 이것은 편의가 아니라 일종의 어리 석음으로 프로그램 속도를 저하시킵니다. 저것들. -1 값으로 배열을 초기화해야 하는 경우 이중 초기화가 있습니다.
그리고 그들은 MT4가 왜 더 느린지 궁금해합니다.

원칙적 으로 배열을 선언 할 때 컴파일러에 배열을 지우도록 지시하는 일종의 플래그를 추가하는 것이 가능합니다. 그것은 편리하거나 빠를 것입니다 - 당신의 선택.

 
Реter Konow :

원칙적 으로 배열을 선언 할 때 컴파일러에 배열을 지우도록 지시하는 일종의 플래그를 추가하는 것이 가능합니다. 그것은 편리하거나 빠를 것입니다 - 당신의 선택.

차이점이 뭐야. 크기 조정 후 초기화를 수행하면 전체 플래그입니다.
특히 동적 배열을 선언할 때 크기를 알 수 없습니다.
 
Nikolai Semko :
차이점이 뭐야. 크기 조정 후 초기화를 수행하면 전체 플래그입니다.
특히 동적 배열을 선언할 때 크기를 알 수 없습니다.

예, 각 전역 배열 선언 후 및 각 크기 조정 후. 그리고 20 - 30 glob이 있다면. 특정 상황에서 그 중 일부가 크기를 변경합니까? 모든 곳에서 주기로 초기화를 작성합니까? (배열은 2차원일 수 있음). 이것은 버그의 잠재적인 온상이 아닙니까?

 
Реter Konow :

예, 각 전역 배열 선언 후 및 각 크기 조정 후. 그리고 20 - 30 glob이 있다면. 특정 상황에서 그 중 일부가 크기를 변경합니까? 모든 곳에서 주기로 초기화를 작성합니까? (배열은 2차원일 수 있음). 이것은 버그의 잠재적인 온상이 아닙니까?

이 수술은 아주 간단합니다. " ArrayResize "라는 단어를 다른 것으로 변경하십시오. 이것은 크기 조정 기능의 이름이 됩니다. 그 안에서 크기 조정이 증가 방향인지 확인한 다음 루프의 새 요소를 살펴보고 0에 할당합니다.

크기가 있는 모든 배열(있는 경우)을 초기화하기 위해 여전히 init에 있습니다.

함수에 주어진 크기의 배열이 있을 수도 있습니다. 대괄호로 검색하십시오.

 
Dmitry Fedoseev :

이 수술은 아주 간단합니다. "ArrayResize"라는 단어를 다른 것으로 바꾸십시오. 이것은 크기 조정 기능의 이름이 됩니다. 그 안에서 크기 조정이 증가 방향인지 확인한 다음 루프의 새 요소를 살펴보고 0에 할당합니다.

크기가 있는 모든 배열(있는 경우)을 초기화하기 위해 여전히 init에 있습니다.

함수에 주어진 크기의 배열이 있을 수도 있습니다. 대괄호로 검색하십시오.

그건 그렇고, 그렇습니다.
Peter, Dmitry는 합리적인 말을 합니다.
잘 작성된 정의는 전체 코드를 다시 작성하지 않아도 됩니다.
 
Nikolai Semko :
그건 그렇고, 그렇습니다.
Peter, Dmitry는 합리적인 말을 합니다.
잘 작성된 정의는 전체 코드를 다시 작성하지 않아도 됩니다.

노력하겠습니다. 흥미로운 해킹.

 

그의 창조에 대해 많은 질문이 있지만 나는 topicstarter를 지원할 것입니다)))

MQL5 개발자는 계산 속도(또는 다른 아름다운 숫자? )를 추구하여 MQL4를 더 친숙하게 만드는 모든 "작은 장점"을 제거했습니다.

예를 들어, 여기 에서는 MT5에 대한 지표 작성을 다루었습니다 . MQL4의 초등학교는 MQL5의 프로그래밍 교과서가 되며 이 "교과서"는 거래 터미널의 컨텍스트에서 읽을 수 있어야 합니다.

1. OnInit() 호출 시 표시기 버퍼가 자동으로 초기화되지 않습니다.

2. 코드베이스에 있는 약 100개의 표시기를 살펴보았지만 MQL5로 프로그래밍하는 모습으로 표시기를 MQL4 스타일로 작성합니다. 배열 및 시계열의 번호 지정 확장

3. iHighest / iLowest가 제대로 작동하지 않습니다 - 시계열의 번호를 증가시키는 방향으로 가장 높은/낮은 값을 가진 막대를 검색합니다... 즉, MQL4에서 표시기를 구성하기 위한 표준 체계를 사용하는 경우 - 과거 데이터에서 현재 데이터로의 계산, 이 작업은 iHighest 및 iLowest를 사용하여 해결할 수 없습니다. 왜냐하면 맨 왼쪽 막대는 0이고, iLowest가 호출되면 앞으로 값을 찾아보도록 하겠습니다....

4. ArrayMaximum()과 같은 문제 - 표시기에서 사용하기 어렵습니다... 음, 시계열 번호 지정을 확장하지 않기 위해 시작 요소에서 특정 수의 막대를 가져 와서 지속적으로 뺍니다. ArrayMaximum(high[i] , i -Period,Period)

5. 아아, MQL5 전문가들도 모호한 구조를 사용합니다... MT4에서 전환하는 동안 보존된 목발의 특정 기반을 여전히 가지고 있다고 가정해 봅시다.


이 모든 것이 무엇을 위한 것입니까? 그래서 MQL이 순수한 C++인 척 하지 않는다는 사실에 대해, 왜 그들은 사용자를 위한 더 간단한 구현을 제거했는지, 약 한 달 동안 저는 Python이 무엇에 좋은지, 왜 그것에 대해 많은 작업이 있는지 살펴보았습니다. . 그리고 이제야 나는 사람들이 작은 것에 관심을 기울이지 않는 기회가 파이썬에 주어졌다는 것을 이해하고, 더 친숙한 인터페이스를 만들었습니다.) - 숙련된 프로그래머에게는 이 모든 것이 옳지 않은 것처럼 보이지만 사람들은 그것을 사용하고 파이썬은 꽤 유명하다

사유: