MG4 스크립트 및 Expert Advisor를 지원하는 테스터 - 페이지 5

 
Integer :
이러한 맥락에서 C++는 JavaScript와 다르지 않습니다. 그리고 그것은 사실입니다!

최고의 거짓말!

Javascript의 eval() 함수와 유사한 함수의 C++ 구현 예를 제공합니다.

 01        var str = "if (a) { 1+1 } else { 1+2 }"
02        var a = true
03        var b = eval(str)
04       alert( "b равно : " + b) // 2
05        
06        // теперь поменяем "a"
07        
08       a = false
09       b = eval(str)
10       alert( "b равно : " + b) // 3

즉, C++ 소스 텍스트의 일부를 std::string 유형의 변수에 작성한 다음 eval() 함수를 호출하여 std::string 유형의 변수에서 가져온 이 코드를 실행합니다.

C++에서 그러한 eval() 함수의 구현을 제안하십시오.

이것이 유일한 차이점과는 거리가 멀다고 해도 과언이 아닐 것입니다.

MQL4++ 언어의 핵심은 MQL5 언어의 핵심과 다르지 않습니다. 동일한 구문, 동일한 유형, 작업, 개체, 다형성, 오버로딩...

Expert Advisors, 지표 및 스크립트의 API를 구현하는 라이브러리만 다릅니다. 이러한 의미에서 동일한 Javascript 에서 언어의 핵심과 두 가지 객체 모델이 두드러집니다.

구조적으로 JavaScript는 명확하게 구별되는 세 부분의 조합으로 나타낼 수 있습니다.

  • 코어(ECMAScript),
  • 브라우저 개체 모델(브라우저 개체 모델 또는 BOM),
  • 문서 개체 모델(문서 개체 모델 또는 DOM).

그리고 MQL은 명확하게 구별되는 것으로 표현될 수 있습니다. 바로 언어와 라이브러리의 핵심입니다. MQL4 코어가 MQL4++ 코어와 다른 경우 MQL4++ 코어는 MQL5 코어와 다르지 않습니다.

따라서 Renat 는 절대적으로 여기에 있으며 이에 대해 논쟁하는 것은 이상합니다.

 
Integer :

정확히. 특히 보스 위치의 권한을 사용합니다.

모든 언어는 특히 사치스러운 몇 가지 예외를 제외하고는 동일합니다. 그들 모두는 21일 동안 어떤 찻주전자로도 연구됩니다. all for, while, if, switch는 다른 쓰기 형식을 가질 수 있지만 근본적으로 달라지는 것은 없습니다.

물론 그러한 피상적인 이해가 그 차이를 보는 것을 가능하게 하지는 않습니다. 여기도 마찬가지인 것 같습니다.

C++뿐만 아니라 MQL4++에서도 eval() 함수에 빠져보고 싶습니다.

내장 함수가 없기 때문에 최소한 MQL4++에서 그러한 함수를 작성하시겠습니까?

이것을 작성할 방법이 없습니다. 저에게는 Javascript와 MQL4++ 사이에 너무 많은 차이점이 있습니다.

모든 언어가 같다고 하셔서 Javascript와 MQL4++가 하나이고 똑같아서 작성하시면 꽤 쉬울 것입니다.

 
Renat :

대신에 우리는 개발자가 사용 가능한 전체 그래프가 아니라 로컬 어레이에 필요한 만큼의 데이터를 정확하게 요청하는 매우 경제적인 CopyXXX 기능으로 전환했습니다. 다음은 로컬 데이터로 가능한 가장 빠른 작업입니다(이전 데이터 대신 Open/High/Low/Close/Time[xxx]는 매우 비쌉니다). 또한 작성자는 이 데이터를 캐시하고 다음에 호출될 때 드물게 사용할 수 있습니다. . 메모리와 CPU의 절약은 엄청납니다. 또한 플랫폼 자체는 거대한 데이터베이스를 관리할 수 있는 손을 덜어줍니다. 이러한 데이터베이스에 대한 액세스는 항상 요청 시(제어되지 않은 직접 대신) 이를 통해 캐시를 유연하게 관리할 수 있습니다.

MQL4에서 Open/High/Low/Close/Time[xxx]에 쉽게 액세스하는 것은 현재 심볼과 타임프레임에만 관련되며 다른 심볼과 타임프레임의 다른 모든 데이터는 iClose/iLow( ...) 심각한 브레이크를 준 기능. MQL5에서 CopyXXX 기능의 통합 모델로 전환하면 상황이 근본적으로 개선되어 개발자가 단일 요청으로 필요한 데이터 조각을 얻고 여러 차단 호출을 만들지 않을 수 있습니다(각 단일 iClose 호출에서 차단에 대해 생각해 보세요).

이것들은 기사처럼 우리의 기능이 아닙니다. 이 기사는 괴물 같은 목발의 묶음이지만 차이점을 보여주기 위해 출시되었습니다.

필자는 MQL5로의 전환 문제, 특히 이 기사에서 MQL5의 새로운 기능을 사용해야 하며 놀라운 목발을 만드는 데 필요한 문제에 대해 반복해서 설명했습니다.

충분한 수의 예제가 수반되는 문서가 있다면 무엇보다도 MQL5의 새로운 기능을 능숙 하게 사용하는 것을 기반으로 작성되어 초보자도 큐브에서처럼 필요에 따라 코드를 조립할 수 있습니다. 모든 미묘함을 한 번에 다루지 않고 충분한 수의 예제와 MQL5의 새로운 기능을 유능하게 사용하여 작성된 예제 코드 덕분에 해당 코드가 전반적으로 여전히 읽고 쓸 수 있습니다. MT5의 상황이 그렇게 비참할 수는 없습니다.

그리고 이것 대신에 "괴물 같은 목발 세트"가 코드로 사용된 기사가 있었기 때문에 우리는 MT5를 모두 거부했습니다. 여기에서 MQL5의 API에 대한 태도입니다. 청중은 대부분 전문 프로그래머가 아닙니다. 당연히 이것은 MT5의 "거부"의 유일한 이유가 아니라 주요 원인 중 하나입니다.

 

누군가는 다음과 같은 질문을 받았습니다.

- 외계인이 있다고 가정하면 그들이 우리에게 말을하지 않고 우리를 가르치지 않는 이유는 무엇입니까?

그들은 그에게 이렇게 대답했습니다.

- 바퀴벌레에게 말하는 법을 가르쳐 주시겠습니까? 왜 안 해?


Simpleton, 불쾌하지 않습니다 . Integer가 말한 것을 이해하지 못했습니다.
 
simpleton :

무엇보다도 새로운 MQL5 기능의 유능한 사용을 기반으로 작성된 충분한 수의 예제가 수반되는 문서가 있는 경우,

9개 언어로 된 4000페이지 분량의 MQL5 문서 , 방대한 소스 코드 베이스, 5개 언어로 번역된 360개의 기사, 올바른 질문을 할 수 있는 5개 언어로 된 포럼 등

 
rustein :

Simpleton, 불쾌하지 않습니다 . Integer가 말한 것을 이해하지 못했습니다.

그는 옳았다.

Reshetov는 더 정확하게 말했습니다: https://www.mql5.com/ru/forum/153749/page4#998584

일반적으로 MT5에 대한 습격은 새 단말기로 바꾸고 싶지 않은 사람들을 위한 썩은 변명일 뿐이고, MT5에 대한 울림만 들었을 뿐 어디에 있는지 모르는 사람들의 발명품에 불과합니다.

 
Renat :

그는 옳았다.

일반적으로 MT5에 대한 습격은 새 단말기로 바꾸고 싶지 않은 사람들을 위한 썩은 변명일 뿐이고, MT5에 대한 울림만 들었을 뿐 어디에 있는지 모르는 사람들의 발명품에 불과합니다.


왜 MT5로 전환합니까?
나는 오래전부터 이것을 하고 싶었다. 그러나 브로커는 아직 MT5를 제공하지 않습니다. 따라서 정상적으로 펼칩니다.
무엇을 이해했는지 이해하지 못한 사람의 붓에 아마도 이해하지 못했을 것입니다. 그게 그렇게 중요한가요?
 
rustein :

무엇을 이해했는지 이해하지 못한 사람의 붓에 아마도 이해하지 못했을 것입니다. 그게 그렇게 중요한가요?

의미 있는 말을 한 마디도 하지 않았고 주장도 한 마디도 하지 않았습니다. 감정만.

 
Renat :

의미 있는 말을 한 마디도 하지 않았고 주장도 한 마디도 하지 않았습니다. 감정만.

그리고?
 
simpleton :

...

최근 여기 어딘가에서 배울 프로그래밍 언어에 대해 논의했습니다. 한 참가자는 매우 유용한 권장 사항을 제공했습니다. 첫 번째 러시아어 (글쎄, 또는 다른 네이티브). 논의되고 있는 내용을 이해하기 위해.

" In this vein , C ++ 는 JavaScript와 다르지 않습니다. "라는 문장에서 " In this vein"이라는 구문은 비교 기준을 정의(또는 정제)합니다. 따라서 이상한 질문이 발생합니다. "지금 여기에서 무엇을 말하는 것입니까?"