MQL5 언어를 처음부터 자가 학습 - 페이지 29

 
Реter Konow :
그들은 그에게 쓸모없는 정보로 초보자를 폭격했습니다.))

정보가 유용한지 아닌지는 초보자가 결정할 문제입니다.

바실리 소콜로프 :

좋은 정보, 감사합니다.

 
Alexey Viktorov :

이것은 당신이 그런 식으로 당신의 욕망을 광고할 필요가 없다는 것을 암시합니다. 동일한 성공으로 Vladimir는 특정 기능에 대해 구체적으로 질문하고 유용한 조언을 얻을 수 있었습니다. C++를 배우거나 어셈블러를 배우는 것과 같은 "전문가"의 말도 안되는 소리가 아닙니다. 펀치 카드를 공부하는 것으로 시작할 수 있습니다.

나는 TS가 그의 계획에 따라 학습하는 것을 지지하며 그의 머리 위로 "점프"하지 않습니다. 모든 것에는 때가 있습니다. 물론 MQL을 올바른 순서로 배워야 합니다. 위의 모든 철학(Vasily와 나에 의해)은 지식을 구조화하는 데 도움이 될 수 있지만 공허함은 아닙니다. 한편, 학생은 학습의 맨 처음에 있으며, 우리의 철학적 표기법에 따라 공허함을 구조화하려고 노력해야 합니다.

그들은 교과서로 돌아갈 것이고 당분간 모든 종류의 중요한 문제를 잊어버릴 것입니다. 그것이 당신이 필요로 하는 것입니다.
 
Vasiliy Sokolov :

우리는 계속합니다:

  • 이벤트가 많기 때문에 이벤트 핸들러도 많습니다. 이벤트가 일관되지 않게 호출되기 때문에 해당 핸들러도 일관되지 않게 호출됩니다. 호출 불일치가 있기 때문에 이벤트 핸들러는 서로 부러워할 수 없고 서로의 데이터에 의존할 수도 없습니다. 이러한 엄격한 요구 사항을 충족하는 유일한 구조 .
  • 기능은 서로 독립적입니다. 한 함수가 + b의 합을 반환하고 두 번째 함수가 * b의 곱을 반환하면 이 두 함수의 결과는 호출의 순서에 따라 달라지지 않습니다. 인수 3과 5를 사용하여 첫 번째 함수를 호출하고 8을 얻을 수 있습니다. 그런 다음 동일한 인수를 사용하여 두 번째 함수를 호출하고 24를 얻을 수 있습니다. 그런 다음 호출을 바꿉니다. 결과는 라이브의 주제가 될 것입니다. 더하기 함수는 인수 3과 5가 주어지면 항상 8을 반환합니다. 곱하기 함수는 동일한 인수가 주어지면 항상 24를 반환합니다.
  • 위에서부터 함수만 이벤트 핸들러가 될 수 있다는 것이 분명해졌습니다. 새 틱 이벤트가 발생하면 이 용도에 특별한 OnTick 함수에 의해 처리됩니다. Start 이벤트(일회성 스크립트 실행)가 발생하면 이에 대해 특별한 OnStart 기능에 의해 처리됩니다.
  • 기능은 보편적입니다. 단순한 이벤트 이상을 처리할 수 있습니다. 함수는 현재 시간과 같은 유용한 정보를 반환할 수 있습니다. 함수는 전달된 인수로 복잡한 계산을 수행하고 이러한 계산의 최종 결과를 단일 값으로 반환할 수 있습니다. 마지막으로 함수는 데이터 공급자가 될 수 있습니다. 함수를 호출하고 따옴표와 같이 필요한 데이터를 가져옵니다.
  • MetaTrader는 내부적으로 수천 개의 서로 다른 기능으로 구성되어 있으며 그 중 약 150만 개는 사용자가 친절하게 제공합니다. 이것들은 매우 유용한 기능입니다. 그것들을 통해 시스템 시간을 찾을 수 있으며 원하는 장비에 대한 데이터를 얻을 수 있습니다. 기능을 통해 거래 주문 이 전송됩니다. MKL 참조 책을 열고 완전히 함수와 이에 대한 인수로 구성되어 있는지 확인할 수 있습니다. 저것들. 사용자 프로그램 측면에서 MetaTrader는 하나의 큰 기능 세트입니다.
  • 보편적인 기능이 충분하지 않습니다. 시스템에 새로운 기능이 아무리 많이 등장하더라도 항상 부족할 것입니다. 이는 사람마다 필요로 하는 것이 다르기 때문입니다. 모든 경우에 보편적인 기능은 없습니다. 가장 일반적이고 다재다능한 기능은 이미 MetaTrader에 포함되어 있으며 친절하게 제공됩니다. 그러나 사용자의 요구는 끝이 없습니다. MetaQuotes는 터미널 사용자 100,000명의 개별 요구를 충족할 수 없습니다. 대신, 그들은 더 유연하게 행동했습니다. 사용자가 스스로 필요한 기능을 만들 수 있는 기회를 주었습니다. 사용자는 이것으로부터만 혜택을 받습니다. 그들에게 그다지 적합하지 않은 시스템 기능을 사용하는 대신 이상적으로는 자신의 작업을 정확히 해결하는 고유한 기능을 작성할 수 있습니다. 시스템 기능은 다양성으로 인해 완벽하지 않습니다.
  • 사용자가 자신의 기능을 작성하는 방법을 얼마나 잘 알고 작업의 본질을 이해하며 프로그래머가 얼마나 자격이 있는지 나타냅니다. 그가 프로그램이 들어오는 이벤트를 순차적으로 처리하지 않는 이질적인 핸들러 세트(함수 형태)라는 것을 이해한다면 이것은 좋은 것입니다. 그가 자신의 기능을 작성하는 방법을 알고 있다면 또 다른 장점이 있습니다. 그가 여러 기능(자신의 기능과 시스템 기능 모두)의 작업을 공통 알고리즘으로 결합할 수 있다면 이것은 그에게 또 다른 장점입니다.
  • MetaTrader(네 번째와 다섯 번째 모두)에서 모든 것이 함수에 기반하여 함수와 어떻게든 관련되어 있다는 것을 이해한다면, 갑자기 모든 것이 명확해집니다. 도움말은 더 이상 이질적인 코드 조각 세트가 있는 두꺼운 탈무드로 표시되지 않고 사용 가능한 기능과 기능에 대한 안내로 제공됩니다. 데이터 유형, 배열, 구조, 클래스와 같은 다른 모든 것은 중요하지 않습니다. 이 모든 것은 함수가 무언가를 반환하고 수락할 수 있도록 지원하는 것입니다.

(지금까지)

수업!!! Vasily, 당신은 교사로서 타고난 재능을 가지고 있습니다. 모든 것이 이해할 수 있고 이해할 수 있습니다. 특히 완전히 0인 사람들에게는 더욱 그렇습니다. Sergey Kovalev가 "MQL4 Tutorial"을 쓴 것과 유사한 책을 쓰는 것에 대해 생각해 본 적이 있습니까? 이제 Vasily Sokolov가 "MQL5 Tutorial"이라고 부를 것입니다.

아마도 이 주제가 그러한 사업에 추진력을 줄 것입니다. Vasily, 어떻게 생각하세요?

안부 인사를 전합니다. 블라디미르.

 
Vasily는 다른 것보다 더 중요하다고 생각하는 일부 개별 측면에만 주의를 기울입니다. 예: 기능 또는 이벤트. S. Kovalev의 기능에 대해 읽으십시오. 그러면 다른 주제에 해를 끼치는 데 초점을 맞추지 않고도 상세하고 접근 가능한 설명을 찾을 수 있습니다. 따라서 교과서를 읽어야 합니다.

예, Vasily는 매우 잘 썼지만 주관적인 이해로 인해 약간 "비뚤어졌습니다".

나는 "나에게 배우십시오, 나는 그것을 올바르게하는 방법을 알고 있습니다!"라고 말하는 것이 아니라 "교과서에서 배우고 올바른 기초를 얻으십시오. 주제에서 지금 나를 흥분시키는 것에 대한 급하게 공식화 된 개념이 아닙니다. ."

추신 그러나 그것은 당신에게 달려 있습니다.
 
Реter Konow :
Vasily는 다른 것보다 더 중요하다고 생각하는 일부 개별 측면에만 주의를 기울입니다. 예: 기능 또는 이벤트. S. Kovalev의 기능에 대해 읽으십시오. 그러면 다른 주제에 해를 끼치는 데 초점을 맞추지 않고도 상세하고 접근 가능한 설명을 찾을 수 있습니다. 따라서 교과서를 읽어야 합니다.

예, Vasily는 매우 잘 썼지만 주관적인 이해로 인해 약간 "비뚤어졌습니다".

나는 "나에게 배우십시오, 나는 그것을 올바르게하는 방법을 알고 있습니다!"라고 말하는 것이 아니라 "교과서에서 배우고 올바른 기초를 얻으십시오. 주제에서 지금 나를 흥분시키는 것에 대한 급하게 공식화 된 개념이 아닙니다. ."

추신 그러나 그것은 당신에게 달려 있습니다.

Peter, 나는 당신과 Vasily가 함께 협력하여 선한 일을 하고 MQL5에 대해 그런 책을 쓰도록 제안할 수 있습니다.

책을 쓰는 것은 인류의 역사, 특히 프로그래밍의 역사에 발자취를 남길 수 있는 가장 좋은 방법입니다 . 생각한다!

안부 인사를 전합니다. 블라디미르.

 
MrBrooklin :

Peter, 나는 당신과 Vasily가 함께 협력하여 선한 일을 하고 MQL5에 대해 그런 책을 쓰도록 제안할 수 있습니다.

책을 쓰는 것은 인류의 역사, 특히 프로그래밍의 역사에 발자취를 남길 수 있는 가장 좋은 방법입니다 . 생각한다!

안부 인사를 전합니다. 블라디미르.

제안해 주셔서 감사합니다. 하지만 Vasily는 그러한 책에 필요한 고전적 접근 방식의 관점에서 저를 쉽게 "이길" 것입니다. 프로그래밍의 프리즘을 통해 동적 상호 작용에서 개체와 환경에 대한 추상적인 이해만 제공할 수 있지만 이것이 마지막 장이 될 것입니다.))))
 
Реter Konow :
제안해 주셔서 감사합니다. 하지만 Vasily는 그러한 책에 필요한 고전적 접근 방식의 관점에서 저를 쉽게 "이길" 것입니다. 프로그래밍의 프리즘을 통해 동적 상호 작용에서 개체와 환경에 대한 추상적인 이해만 제공할 수 있지만 이것이 마지막 장이 될 것입니다.))))

분명한. 이제 나는 책을 쓰겠다는 나의 제안에 대한 Vasily의 의견을 알고 싶습니다.

저는 현재 그의 기사 "Universal Expert Advisor: Working with Custom Trailing Stops (6부)"를 연구하고 있습니다.

안부 인사를 전합니다. 블라디미르.

 

계속

위의 게시물에서 초점이 기능에 있음이 분명했습니다. 모든 것이 그들에게 바쳐졌고 그들 외에는 아무것도 없었습니다. 이것은 명백한 주관적 왜곡이거나 일종의 난해한 "철학"이라고 생각할 수 있습니다. 그러나 여기에는 철학이 없습니다. 그리고 기능에 대한 그러한 관심은 우연이 아닙니다. 사실 프로그래밍에서 함수는 근본적으로 중요합니다. 또한 수학에서 함수는 매우 중요하고 기본적인 개념이기도 합니다. 지난 세기의 20 대에 Alonzo Church는 기능을 기반으로 한 미적분 시스템을 개발했습니다. 람다 미적분학 이라고 합니다. 이 시스템은 계산 가능성과 밀접하게 연결된 컴퓨터 계산 및 수학의 개념을 공식화했습니다. 람다 미적분학을 기반으로 세계 최고의 프로그래머는 함수에 선두 자리를 제공하는 소위 함수형 프로그래밍 언어 를 개발했습니다. 예를 들어, 함수형 프로그래밍 언어인 Haskell에는 for 루프나 이와 유사한 것이 없습니다. 대신, 원하는 값을 계산하기 위해 재귀적 으로 특별한 방법으로 함수를 호출하는 것이 좋습니다. 함수만 있고 할당이 없으면 튜링 완전 프로그래밍 언어를 작성할 수 있음을 증명할 수 있습니다. 절차적 언어나 OOP 언어와 같은 다른 튜링 완전 언어로 가능한 모든 것을 작성할 수 있는 언어입니다.

MQL은 기능적 언어가 아니라 강력한 유형 지정과 풍부한 도메인별 API(동일한 기능의 형태로, 오 놀랍게도)를 사용하여 클래스에 의해 확장된 절차적 언어입니다. 반면에 함수 이론은 견고한 수학적 토대를 기반으로 하며 함수가 있는 모든 프로그래밍 언어를 사용하기 위한 간단하고 효과적인 패턴을 제공하므로 적어도 함수와 그 뒤에 있는 수학적 기반을 거부하는 것은 근시안적입니다. . 그래서 기능에 신경을 많이 쓴다. 어레이 장치를 얼마나 잘 이해했는지는 중요하지 않으며 일부 데이터 유형에 실수를 해도 상관 없습니다. 이것은 신속하게 수정 및 수정됩니다. 그러나 기능과 기능이 서로 어떻게 관련되어 있는지 이해하지 못한다면 평범한 프로그래머라도 문제를 해결하지 못할 것입니다.

따라서 정상적으로 진행하는 방법을 배우려면, 즉, 프로그램의 기능을 시간에 따라 선형으로 확장하려면 다음을 배워야 합니다.

  • MetaTrader 4.5 이벤트 모델을 명확하게(완전하지는 않지만 분명히 필요함) 제시합니다.
  • 시스템 기능으로 작업할 수 있습니다. 자신의 기능에서 결과를 일반화하십시오. 시스템 함수 호출을 자신의 것으로 병합합니다.
  • 자신의 기능을 작성할 수 있고 사랑합니다.
  • 함수 호출 체인 이해: 예를 들어 함수 a()가 함수 b()를 호출하고 b()가 c() 및 e()를 호출하고 e()가 함수 c()를 호출하는 경우.
  • "순수한" 함수를 작성할 수 있고 순수 함수를 작성해야 하는 이유를 이해할 수 있습니다. 순수 함수란 무엇인지 나중에 설명하겠습니다.

기능은 간단해 보입니다. "그리고 공부할 내용이 있습니다. 여기에 읽고 비즈니스를 위한 단락이 있습니다. 그런 다음 배열을 위해, 동안 ..." - 아니요, 그렇지 않습니다. 기능은 겉보기에 단순한 방식으로 정렬되어 있습니다(괜찮습니다). 그러나 실제로 문제를 효율적으로 해결할 수 있으려면 기능이 특정 속성을 갖고 특정 방식으로 서로 결합해야 합니다. 이 모든 작업을 수행하는 방법은 나중에 작성하겠습니다.

 
MrBrooklin :

분명한. 이제 나는 책을 쓰겠다는 나의 제안에 대한 Vasily의 의견을 알고 싶습니다.

저는 현재 그의 기사 "Universal Expert Advisor: Working with Custom Trailing Stops (Part 6)"를 공부하고 있습니다.

안부 인사를 전합니다. 블라디미르.

아니다. 책이 없을 것입니다. 아마도 여러 기사. 그러나 가까운 장래에 확실하지 않습니다.

 
MrBrooklin :

Peter, 나는 당신과 Vasily가 함께 협력하여 선한 일을 하고 MQL5에 대해 그런 책을 쓰도록 제안할 수 있습니다.

이것은 확실히 가능성이 낮습니다. 우리는 베드로와 너무 다른 견해를 가지고 있습니다. 몇 가지 코드를 보면 얼마나 다른지 알 수 있습니다.)