베타 빌드 530의 배열 크기 조정 버그 - 페이지 6

 
ubzen :
***P: (나는 이것을 잊고 싶지 않다). 물론 우리 대부분은 우리가 사용하는 코드의 내용을 모르는 것을 좋아하지 않습니다. 또는 다른 사람의 코드를 이해하려고 하는 데 몰두합니다. 그렇지 않으면 사용하지 않을 것입니다. 그러나 mql4의 대부분의 기본 함수(예: OrderSend())는 view_point의 객체입니다. 우리는 그들의 코드를 볼 수_없지만 그것을 받아들입니다. 나는 other_people 라이브러리에 대한 이러한 수용이 대규모 프로젝트를 수행하는 professional_oop_programmer가 수용하고 구축해야 하는 것이라고 믿습니다. 그렇지 않으면 바퀴를 다시 만드는 데 문제가 있습니다.
예, 그렇게 하면 우리 모두는 mql4에서 항상 바퀴를 재발명합니다.
 
ubzen :

나는 당신이 프로그램 흐름을 설명하고 있다고 믿습니다. 나는 그것이 OOP 뒤에 있는 big_idea라고 생각하지 않습니다. (imo) OOP는 다음과 같은 문제를 해결하려고 합니다. 나는 OOP 멍청한 놈이지만 그것에 대한 세계관을 형성하고 있습니다.

1) 함수가 global_variables와 독립적입니까? other_words에서 귀하의 기능은 독립형 객체입니까? 캡슐화

2) 함수가 local_variable_names와 같은 세부 정보를 숨기나요? 화면의 코드 양을 단순화합니까? 추출

3) 수정을 위해 자체 복제본을 생성하는 기능이 있습니까? 자신만의 데이터 유형을 생성하는 기능이 마음에 드시나요? 계승.

4) 즉석에서 변경하는 기능이 있습니까? 예: 함수가 integer_array와 double_array를 처리할 수 있습니까? 다형성.

OOP가 building_ea에서 도움을 줄 수 있는 방법은 ea_builder가 비프로그래머가 Expert_advisor를 빌드하도록 돕는 것과 유사합니다. 좋아하는 Order_Accounting_Function -> Data_Function -> Event Tracking Function -> Volume Defining Function -> Trading Criteria Defining Function -> Trade Functions -> Error Processing Function을 잡으면 됩니다. 그리고 붐, 당신은 Expert_Advisor가 있습니다. 수년에 걸쳐 개발한 모든 거래 기준 정의 기능을 쉽게 교환할 수 있습니다.

예를 들어 내 전문 고문을 수정하려면 내 전역 변수가 적용되는 위치와 이에 종속되는 다른 기능(상태 또는 상태 배열에서와 같이)을 연구해야 합니다. OOP는 as_simple_as Accounting(Option_3); 디스플레이(옵션_1); 캡션(Option_5); TradingSys(Option_7); 볼륨 크기(옵션 2); OrderType(Option_2) 및 전체 전문가입니다.

이렇게 하면 다른 사람이 라이브러리 집합을 더 쉽게 사용할 수 있으며 일반적으로 다른 사람에게 효과가 있는 것이 나중에 언젠가는 귀하에게도 효과가 있습니다. 다른 것이 아니라면 조립 라인의 독립 실행형 개체를 생각하십시오. :)

이것을 너무 간결하게 설명해주셔서 감사합니다. 저는 이것을 전에 찾아보았고 일반적으로 모든 것에 대해 장황한 소설로 들어갑니다. 저는 요점을 전혀 이해하지 못했습니다.
 
SDC : 이것을 너무 간결하게 설명해주셔서 감사합니다. 전에도 찾아본 적이 있는데 그들은 대개 그것에 대해 장황한 소설로 들어가는데, 저는 요점을 전혀 이해하지 못했습니다.
천만에요.
 
RaptorUK : 차이가 있습니다. . . 주문하려면 OrderSend() 를 사용하는 것 외에 다른 옵션이 없습니다. . . 다른 사람의 라이브러리를 사용할지 여부를 선택할 수 있습니다. . . 출처가 존중되더라도 사용하기 전에 이해하려고 노력합니다. 일부 오류가 발견되고 수정 되는 방법은 다음과 같습니다. https://www.mql5.com/en/forum/133792/page3 " 랩터UK's 코멘트 : "
여기에는 인수가 없습니다. OOP는 코드의 버그 문제를 해결하지 않으며 다른 사람의 라이브러리를 사용하도록 강요하지도 않습니다.
 
RaptorUK :
나는 mql5에 약간 손을 대었고 내가 작성한 코드에서 OOP를 사용할 필요가 없었습니다.

클래스와 OOP는 MQL5의 선택적 추가 기능입니다. 플랫폼 프레임워크는 이를 자체적으로 사용하지 않습니다. 예를 들어 플랫폼에 Order 개체 목록이 포함된 Orders 컬렉션과 같은 항목이 있을 것으로 예상할 수 있으므로 다음과 같은 코드를 작성할 수 있습니다.

 for ( int i = 0 ; i < Orders.length; i++) {
  Order O = Orders.getByIndex(i);
   if (O.symbol == "EURUSD" && O.magicNumber = 12345 ) {
  }
}

하지만 그렇지 않습니다. 대신, 이 작업을 수행하는 방법은 기본적으로 MQL4와 MQL5 간에 동일합니다.

 for ( int i = 0 ; i < OrdersTotal (); i++) {
   if ( OrderGetTicket (i)) {
     if ( OrderGetString ( ORDER_SYMBOL ) == "EURUSD" && OrderGetInteger ( ORDER_MAGIC ) == 12345 ) {
    }
  }
}

(또한 여러분이 작성하는 모든 EA는 선언에 가상 OnTick 및 OnInit 함수와 같은 기능을 포함하는 ExpertAdvisor 클래스에서 파생된 클래스일 것으로 예상할 수도 있습니다. 하지만 그것도 아닙니다. MQL5 프레임워크는 기본적으로 비 OOP로 남아 있습니다. 그러나 유용한 작업에 OOP를 직접 사용할 수 있는 옵션이 있습니다.)

결과적으로 string OrderSymbol() {return OrderGetString(ORDER_SYMBOL);} 과 같은 일련의 도우미 함수를 통해 MQL5에서 MQL4 코드를 계속 사용할 수 있습니다. 이것이 세분화되는 유일한 영역은 시계열 액세스입니다. MQL5에서는 매우 다르게 구성되어 있기 때문입니다. https://www.mql5.com/en/articles/81 의 iOpenMQL4()와 같은 기능은 작동하지만 반복적으로 사용하기에는 엄청나게 느리고 비효율적입니다.

 

(아직도 신경쓰는 사람이 있다면 이 스레드를 시작한 버그 보고서는 여전히 빌드 535에 적용됩니다. https://forum.mql4.com/56885/page20#861740도 마찬가지지만 MetaQuotes가 수정 시도에 실패한 것처럼 보이지만 하나.)

 
답변이 늦어 죄송합니다만 가끔 자고 일해야 할 때가 있습니다

나는 RaptorUK에 동의합니다. OOP에 대한 mql5.com의 문서는 최소한 불완전합니다. 그러나 불행히도 나는 oop에 대한 좋은 참조를 모릅니다. 내가 읽은 알은 배와 사과를 객체의 예로, 과일을 클래스로 사용하여 너무 추상적이거나 너무 기본적입니다.

OOP 프로그래밍은 큰 프로젝트가 있는 경우에만 유용합니다. 큰 프로젝트는 반드시 1개의 EA가 아니며, 프로젝트는 표시기가 있는 일련의 EA를 구축할 수 있습니다. 그런 다음 코드를 재사용하는 것이 좋으며 oop는 주로 코드 재사용에 관한 것입니다. 다른 프로그램에서 쉽게 재사용할 수 있습니다. 불행히도 지금은 그것에 대해 자세히 설명할 시간이 없습니다. 그러나 그것에 대해 몇 가지 기사를 쓸 계획입니다.

큰 프로젝트의 한 예는 Metaquotes에서 만든 MQL5 마법사입니다. 일부 사용자 입력으로 5분 만에 EA를 만들 수 있습니다. EA를 구축하는 데 필요한 모든 요소를 제공하는 mql5 Standard Libray를 기반으로 합니다. 동일한 마법사가 절차적 방식으로 수행될 수 있지만 제 생각에는 훨씬 더 어려울 것입니다. 그런 다음 이 코드를 유지 관리해야 합니다. 그러나 이러한 표준 라이브러리는 문서화 및 설명이 잘 되어 있지 않아 이해하기 어렵습니다. 주제에 있는 모든 것을 중앙 집중화하는 주제를 만들었습니다(mql5 마법사는 oop가 아님).

 
ubzen :

나는 당신이 프로그램 흐름을 설명하고 있다고 믿습니다. 나는 그것이 OOP 뒤에 있는 big_idea라고 생각하지 않습니다. (imo) OOP는 다음과 같은 문제를 해결하려고 합니다. 나는 OOP 멍청한 놈이지만 그것에 대한 세계관을 형성하고 있습니다.

1) 함수가 global_variables와 독립적입니까? other_words에서 귀하의 기능은 독립형 객체입니까? 캡슐화

2) 함수가 local_variable_names와 같은 세부 정보를 숨기나요? 화면의 코드 양을 단순화합니까? 추출

3) 수정을 위해 자체 복제본을 생성하는 기능이 있습니까? 자신만의 데이터 유형을 생성하는 기능이 마음에 드시나요? 계승.

4) 즉석에서 변경하는 기능이 있습니까? 예: 함수가 integer_array와 double_array를 처리할 수 있습니까? 다형성.

OOP가 building_ea에서 도움을 줄 수 있는 방법은 ea_builder가 비프로그래머가 Expert_advisor를 빌드하도록 돕는 것과 유사합니다. 좋아하는 Order_Accounting_Function -> Data_Function -> Event Tracking Function -> Volume Defining Function -> Trading Criteria Defining Function -> Trade Functions -> Error Processing Function을 잡으면 됩니다. 그리고 붐, 당신은 Expert_Advisor가 있습니다. 수년에 걸쳐 개발한 모든 거래 기준 정의 기능을 쉽게 교환할 수 있습니다.

예를 들어 내 전문 고문을 수정하려면 내 전역 변수가 적용되는 위치와 이에 종속되는 다른 기능(상태 또는 상태 배열에서와 같이)을 연구해야 합니다. OOP는 as_simple_as Accounting(Option_3); 디스플레이(옵션_1); 캡션(Option_5); TradingSys(Option_7); 볼륨 크기(옵션 2); OrderType(Option_2) 및 전체 전문가입니다.

이렇게 하면 다른 사람이 라이브러리 집합을 더 쉽게 사용할 수 있으며 일반적으로 다른 사람에게 효과가 있는 것이 나중에 언젠가는 귀하에게도 효과가 있습니다. 다른 것이 없다면 조립 라인의 독립 실행형 개체를 생각하십시오. :)

다형성을 제외하고는 좋은 개요입니다. "함수가 integer_array와 double_array를 처리할 수 있습니까?"라고 말했을 때 다형성이 아니라 함수 오버로딩 입니다. mql5에서 연산자 오버로딩 을 가질 수도 있습니다(작업 오버로딩으로 잘못 번역됨). OOP와 다형성은 그 이상입니다. 자세히 설명할 시간이 없으므로(특히 영어로) 다형성에 대한 mql5 입문서를 읽는 것이 좋습니다.
 
cyclops993 :

클래스와 OOP는 MQL5의 선택적 추가 기능입니다. 플랫폼 프레임워크는 이를 자체적으로 사용하지 않습니다. 예를 들어 플랫폼에 Order 개체 목록이 포함된 Orders 컬렉션과 같은 항목이 있을 것으로 예상할 수 있으므로 다음과 같은 코드를 작성할 수 있습니다.

하지만 그렇지 않습니다. 대신, 이 작업을 수행하는 방법은 기본적으로 MQL4와 MQL5 간에 동일합니다.

(또한 여러분이 작성하는 모든 EA는 선언에 가상 OnTick 및 OnInit 함수와 같은 기능을 포함하는 ExpertAdvisor 클래스에서 파생된 클래스일 것으로 예상할 수도 있습니다. 하지만 그것도 아닙니다. MQL5 프레임워크는 기본적으로 비 OOP로 남아 있습니다. 그러나 유용한 작업에 OOP를 직접 사용할 수 있는 옵션이 있습니다.)

결과적으로 string OrderSymbol() {return OrderGetString(ORDER_SYMBOL);} 과 같은 일련의 도우미 함수를 통해 MQL5에서 MQL4 코드를 계속 사용할 수 있습니다. 이것이 세분화되는 유일한 영역은 시계열 액세스입니다. MQL5에서는 매우 다르게 구성되어 있기 때문입니다. https://www.mql5.com/en/articles/81 의 iOpenMQL4()와 같은 기능은 작동하지만 반복적으로 사용하기에는 엄청나게 느리고 비효율적입니다.

동의하다. mql5가 mql4보다 "낮은" 수준의 기능을 더 많이 제공한다고 덧붙였습니다. 예를 들어 많은 사람들이 mql5에 존재하지 않는 iBarShift()에 대해 불평합니다. 그러나 mql5는 더 자세한 기능을 제공하므로 자신만의 iBarShift() 를 빌드할 수 있고 oop도 제공하므로 모든 프로젝트에서 쉽게 재사용할 수 있습니다(물론 oop는 재사용에 필수는 아닙니다). 내 영어가 아직 약간 초보적이기 때문에 내 설명이 명확한지 확실하지 않습니다.
 
Ovo :

OOP는 현재 매우 일반적이며 MQL에 더 많은 실제 코더를 끌어들일 것입니다. 그러나 메모장과 같은 편집기가 대부분을 격퇴할 것이라고 확신합니다.

mql5 메타에디터(또는 동일한 새로운 mql4 편집기)를 사용해 보셨습니까? 많은 개선 사항이 있습니다.