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

 
AlexeyVik :
글쎄요, 이것이 진실인지 증명하지는 않겠습니다. 일반적으로 C ++ 프로그래밍과 OOP에 익숙하지 않은 사람에게 이것은 매우 어렵고 빨간 단어나 신화의 탄생에 대해서는 전혀 아닙니다. 이상하게도 나는 일주일 만에 그것을 알아 내고 필요한 것을 썼습니다. 그리고 이것은 완전히 다른 신화입니다. mql5를 마스터하는 것은 나와 같은 비전문가도 사용할 수 있다는 것을 암시합니다.
모든 OOP에서 알고리즘 방식으로 프로그래밍할 수 있으며 OOP 자체를 래퍼로만 사용할 수 있습니다. 저도 자바 코딩을 시작할 때 처음에는 OOP를 이해하지 못했지만 특별한 문제는 보지 못했습니다. 나중에 문제가 발생하기 때문에 알고리즘 언어로 raw를 읽는 것은 매우 어렵습니다. 알고리즘에서 라이브러리를 사용하는 것은 훨씬 더 어렵습니다. 사용하기 전에 나사로 조여야 합니다.
 
Reshetov :
모든 OOP에서 알고리즘 방식으로 프로그래밍할 수 있으며 OOP 자체를 래퍼로만 사용할 수 있습니다. 저도 자바 코딩을 시작할 때 처음에는 OOP를 이해하지 못했는데 특별한 문제는 없었습니다. 나중에 문제가 발생하기 때문에 알고리즘 언어로 raw를 읽는 것은 매우 어렵습니다. 알고리즘에서 라이브러리를 사용하는 것은 훨씬 더 어렵습니다. 사용하기 전에 나사로 조여야 합니다.
유리야, 왜 나한테 간단하게 설명해줘? 하나는 쉽고 다른 하나는 매우 쉽고 누군가는 사용할 수 없습니다. 결국, 나는 마스터링의 불가능에 대해 이야기하지 않았습니다 ... 나는 언어의 차이점에 대해서만 이야기했습니다 ... 친숙한 것과 새로운 것에 대해.
 
Renat :
전혀 다르지 않습니다. 이들은 단일 컴파일러를 사용하는 두 개의 동일한 언어입니다.
이러한 맥락에서 C++는 JavaScript와 다르지 않습니다. 그리고 그것은 사실입니다!
 
Integer :
이러한 맥락에서 C++는 JavaScript와 다르지 않습니다. 그리고 그것은 사실입니다!

포럼에서 볼 수 없는 것.

글쎄요, 책임은 없습니다. 당신은 무엇이든 뻔뻔스럽게 말할 수 있습니다.

 
AlexeyVik :
유리야, 왜 나한테 간단하게 설명해줘? 하나는 쉽고 다른 하나는 매우 쉽고 누군가는 사용할 수 없습니다.
문서, 예제, 기사가 없으면 이해하기 어렵습니다. 그러나이 모든 것이 있고 문제가있는 경우에도 포럼에서 질문 할 수 있습니다. 그러면 액세스 불가능에 대해 이야기하는 것은 이미 썩은 변명입니다.
 
Reshetov :
문서, 예제, 기사가 없으면 이해하기 어렵습니다. 그러나이 모든 것이 있고 문제가있는 경우에도 포럼에서 질문 할 수 있습니다. 그러면 액세스 불가능에 대해 이야기하는 것은 이미 썩은 변명입니다.

나가. 개인적으로, 나는 문제나 질문 없이 이 언어를 마스터할 것입니다. 그리고 캐릭터의 특성으로 인해 사용할 수 없는 사람은 무엇이든 쓰십시오.

그래서 무슨 목적으로 대화에 참여하고 전혀 다른 주제에 대해 의견을 표현했는지 이해할 수 없습니다.

 
Renat :

포럼에서 볼 수 없는 것.

글쎄요, 책임은 없습니다. 당신은 무엇이든 뻔뻔스럽게 말할 수 있습니다.

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

모든 언어는 특히 사치스러운 몇 가지 예외를 제외하고는 동일합니다. 그들 모두는 21일 동안 어떤 찻주전자로도 연구됩니다. all for, while, if, switch는 다른 쓰기 형식을 가질 수 있지만 근본적으로 달라지는 것은 없습니다. 중요한 것은 연산자의 형태가 아니라 언어가 상호 작용하는 인프라입니다. 그런 점에서 MT4와 MT5는 서로 다른 세계입니다.

차이점은 모든 것입니다. 중요하지 않은 것부터 시작하여 표시기의 막대 번호부터 MT4에서 오른쪽에서 왼쪽으로, MT5에서 왼쪽에서 오른쪽으로. 계속해서 더 중요한 것 - 거래 내역 데이터의 집계 위치 및 구성. 가장 큰 차이점은 가장 자주 요구되는 것입니다. 시세 및 지표 데이터에 액세스하는 방식에서 데이터를 복사하려면 확인이 필요합니다. 왼쪽에서 오른쪽으로 인덱싱한 다음 오른쪽에서 왼쪽으로, 막대 시간이 범위에 있는지 여부입니다. CodeBase에서 iBarShift() 함수의 유사체에 대해 한 번만 논의할 가치가 있는 것은 무엇입니까?

MT4에서는 Expert Advisor의 안정적인 동작을 보장하기 위해 OrderSelect()의 반환 값을 확인하는 것으로 충분했고 MT5는 마지막 틱에서 데이터를 수신하는 경우에도 모든 단계에서 확인을 수행해야 합니다. MT5를 위한 프로그래밍에는 여전히 약간의 미묘함이 있습니다. 많은 갈퀴가 배치되어 있기 때문에 많은 충돌로 스스로를 채워야만 배울 수 있습니다.

 

당신의 의견을 전적으로 지지합니다!

기능 확장은 확실히 좋지만 MT5의 후드 아래에서는 호환성을 위해 MT4의 기능을 남겨 둘 필요가 있었습니다. 물론 MT5 거래 모델의 프레임워크에 맞는 것들만 가능합니다.

4개의 소스가 최소한의 변경으로 이식되도록 합니다.

MT5를 다중통화 테스터로 사용하고 있지만, 무리하게 복잡한 함수 호출에 거부감이 든다.

MT5로 전환하는 것과 동일한 기능( https://www.mql5.com/en/articles/81 )을 코어 자체에서 구현하지 않는 이유는 무엇입니까?

예를 들어 유형 변환 함수의 이름을 바꿔야 하는 이유는 무엇입니까?

CharToStr - CharToString, StrToDouble - StringToDouble

초보적인 것 같지만 ... 개혁을 위한 개혁?

또는 예를 들어 시간 작업을 위한 함수

 int Hour()
 int HourMQL4()
  {
   MqlDateTime tm;
   TimeCurrent (tm);
   return (tm.hour);
  }

차트에서 데이터를 가져오는 기능

 double iClose( string symbol,
               int timeframe,
               int shift)
 double iCloseMQL4( string symbol, int tf, int index)
{
   if (index < 0 ) return (- 1 );
   double Arr[];
   ENUM_TIMEFRAMES timeframe=TFMigrate(tf);
   if ( CopyClose (symbol,timeframe, index, 1 , Arr)> 0 ) 
        return (Arr[ 0 ]);
   else return (- 1 );
}

그리고 그러한 예가 수백 가지가 있습니다!

물론 MT5가 더 기능적이지만 MT4가 더 편리합니다! 그리고 이것은 때때로 훨씬 더 중요합니다!

 
Integer :

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

"이런 맥락에서 C++는 JavaScript와 다르지 않다"는 말은 MQL4와 MQL5의 차이점을 논한다는 점에서 넌센스다. 그리고 누군가 그 말을 꺼냈다.

권위는 오랜 기간에 걸쳐 많은 양의 노동을 통해 획득됩니다. 나는 이 권을 성취하였고 내가 말한 것을 따랐다.


차이점은 모든 것입니다. 중요하지 않은 것부터 시작하여 표시기의 막대 번호부터 MT4에서 오른쪽에서 왼쪽으로, MT5에서 왼쪽에서 오른쪽으로. 계속해서 더 중요한 것 - 거래 내역 데이터의 집계 위치 및 구성. 가장 큰 차이점은 가장 자주 요구되는 것입니다. 시세 및 지표 데이터에 액세스하는 방식에서 데이터를 복사하려면 확인이 필요합니다. 왼쪽에서 오른쪽으로 인덱싱한 다음 오른쪽에서 왼쪽으로, 막대 시간이 범위에 있는지 여부입니다. CodeBase에서 iBarShift() 함수의 유사체에 대해 한 번만 논의할 가치가 있는 것은 무엇입니까?

상황이 이상해집니다. 어떤 언어든 21일이면 배울 수 있지만, 바 번호 매기기와 데이터 접근이 문제가 된다.

다시 한 번 반복합니다. 언어는 거의 동일하고 작은 기능 세트가 다르며 단일 컴파일러가 있습니다. MQL4는 데이터 작업에 대한 구식 접근 방식을 가지고 있으며 이는 깊고 상세한 기록이 있는 시스템에서는 허용되지 않습니다. MQL4에서 새로운 CopyXXX 기능을 사용하면 MQL5와 같습니다.


MT4에서는 Expert Advisor의 안정적인 동작을 보장하기 위해 OrderSelect()의 반환 값을 확인하는 것으로 충분했고 MT5는 마지막 틱에서 데이터를 수신하는 경우에도 모든 단계에서 확인을 수행해야 합니다. MT5를 위한 프로그래밍에는 여전히 약간의 미묘함이 있습니다. 많은 갈퀴가 배치되어 있기 때문에 많은 충돌로 스스로를 채워야만 배울 수 있습니다.

MQL4와 MQL5 모두 어디에서나 함수의 결과를 확인해야 합니다.

MQL4의 많은 사람들은 단순히 확인에 주의를 기울이지 않고 데이터를 있는 그대로 가져갔습니다. 그리고 그들은 MQL5에서 동일한 내용을 작성하고 CFD, 선물 또는 주식에서 시작될 때 외환 프로그램 이 충돌합니다. 단순히 작성자가 상품의 매개변수 또는 데이터 가용성을 확인하는 데 너무 게을렀기 때문입니다.

 
Nemser :

MT5를 다중통화 테스터로 사용하고 있지만, 무리하게 복잡한 함수 호출에 거부감이 든다.

새로운 데이터 액세스 기능이 무엇을 하고 왜 하는지 생각해 보십시오.

MetaTrader 4는 기록 깊이가 제한되어 있고 별도의 시간 프레임이 있으며 Open/High/Low/Close/Time[xxx]을 통해 기호 막대에 직접 액세스할 수 있습니다. 이러한 직접 액세스는 리소스 및 CPU 오버헤드 측면에서 구현하는 데 매우 비용이 많이 듭니다. 다른 Expert Advisors 및 터미널 자체와 충돌하지 않도록 각 Expert Advisor에는 이 데이터의 고유한 로컬 복사본이 있다는 사실을 생각해 보십시오.

기호 수가 증가하고(예: MT5에서는 5,000-10,000개의 악기를 가질 수 있음) 모든 시간 프레임의 기초로 깊은 분 이력을 사용하면 MT4의 방법을 사용하는 것이 기본적으로 불가능합니다. RAM이 충분하지 않으며 큰 청크를 복사해도 성능이 저하됩니다. 따라서 MT5에서는 더 이상 각 전문가에 대해 숨겨지고 값비싼 차트 복사본을 자동으로 유지 관리하지 않습니다.

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

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


MT5로 전환하는 것과 동일한 기능( https://www.mql5.com/en/articles/81 )을 코어 자체에서 구현하지 않는 이유는 무엇입니까?

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

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


예를 들어 유형 변환 함수의 이름을 바꿔야 하는 이유는 무엇입니까?

초보적인 것 같지만 ... 개혁을 위한 개혁?

이것은 양질의 언어 아키텍처를 구축하기 위한 올바른 접근 방식입니다. 함수 이름은 약어가 아니라 자명해야 합니다.

새로운 언어와 편리한 자동 완성 기능을 통해 언어를 수정하고 더 깔끔하게 만들 수 있었습니다.


또는 예를 들어, 시간 작업을 위한 함수 차트에서 데이터를 가져오는 함수 그리고 그러한 예는 수백 가지가 있습니다!

이러한 목발의 예(일반적으로 "g를 통해 편도선에 수술을 수행"에 대해 말합니다)는 비교에 사용할 수 없습니다.

MQL4가 MQL5와의 호환성으로 직접 축소되었고 이제 많은 호환 기능이 MQL4에 추가되었기 때문에 이론적인 자료는 이미 구식입니다.


물론 MT5가 더 기능적이지만 MT4가 더 편리합니다! 그리고 이것은 때때로 훨씬 더 중요합니다!

동의할 수 없습니다.

MetaTrader 5는 프로그램 사용과 언어 모두에서 훨씬 더 편리합니다.