MQL4 및 MQL5에 대한 초보자 질문, 알고리즘 및 코드에 대한 도움말 및 토론 - 페이지 1097

 
Seric29 :

함수 포인터는 매개변수로 전달됩니다. 나는 수업에서 아무도 그것을 하는 방법을 알아내지 못했다는 것을 안다. 나는 또한 그것이 제공하는 클래스에 대한 포인터를 반환해야 하는 이유를 여전히 이해하지 못합니다.

여기에 흥미로운 예가 있지만 이것은 내 질문이 아닙니다.

디렉토리에서도 비슷한 것을 보았지만 이미 이 사이트를 닫았습니다. 손이 아프고 일을 해야 합니다.

왜 그런 간단한 작업을 귀찮게합니까? 결국, 당신은 단순히 클래스 객체를 통해 필요한 데이터를 얻을 수 있습니다

나는 참조, 포인터, 함수 포인터에 익숙하지만 실제로는 거의 사용하지 않습니다. 그리고 일반적으로 저와 같이 RAM을 절약하는 데만 필요합니다. 표시기가 있는 어드바이저는 게임이 아니므로 전역 범위 에서 일반 변수 및 클래스 개체를 사용할 수 있습니다.

 
Alexandr Sokolov :

왜 그런 간단한 작업을 귀찮게합니까? 결국, 당신은 단순히 클래스 객체를 통해 필요한 데이터를 얻을 수 있습니다

나는 참조, 포인터, 함수 포인터에 익숙하지만 실제로는 거의 사용하지 않습니다. 그리고 일반적으로 저와 같이 RAM을 절약하는 데만 필요합니다. 표시기가 있는 어드바이저는 게임이 아니므로 전역 범위 에서 일반 변수 및 클래스 개체를 사용할 수 있습니다.

나는 단순한 작업을 현명하게 처리하고 싶지 않으며, 물론 이전에 함수가 호출되었던 프로그램을 다시 실행하고, 계산을 용이하게 하기 위해 산술 표현식을 작성하거나 단순화된 오버로드된 함수로 전환하기 때문에 번역하고 싶습니다. 프로그램을 수업으로. 근데 위에 쓰신대로 거의 안쓰고 이제 클래스 문제가 생겼는데 이 클래스의 함수에 대한 포인터를 못만드는데 왜 이런 프로그래밍이 필요한지 한가지만 하면 안되네요 다른 하나는 할 수 없습니다. 이것은 프로그래밍이 아니지만 악마는 무엇을 알고 있습니다.

 
Seric29 :

나는 단순한 작업을 현명하게 처리하고 싶지 않으며, 물론 이전에 함수가 호출되었던 프로그램을 다시 실행하고, 계산을 용이하게 하기 위해 산술 표현식을 작성하거나 단순화된 오버로드된 함수로 전환하기 때문에 번역하고 싶습니다. 프로그램을 수업으로. 근데 위에 쓰신대로 거의 안쓰고 이제 클래스 문제가 생겼는데 이 클래스의 함수에 대한 포인터를 못만드는데 왜 이런 프로그래밍이 필요한지 한가지만 하면 안되네요 다른 하나는 할 수 없습니다. 이것은 프로그래밍이 아니지만 악마는 무엇을 알고 있습니다.

클래스는 일부 개체의 템플릿이며 이 템플릿에 있는 기능을 사용하려면 먼저 개체를 만들어야 합니다.

실제로 클래스 이름은 int, double, string 등과 같은 데이터 유형 으로 작동합니다. 그러나 확장된 기능으로. 유형을 지정하지 않고 변수를 선언할 수 없습니다.

그 외에도 클래스에서 함수를 간단히 바인딩 해제할 수 있으며 개체를 만들지 않고 클래스 내에서 또는 클래스에서 별도로 사용할 수 있습니다.

 

해당 폴더에서 해당 파일이 제거된 것 외에 표시등이 작동하지 않는 다른 이유가 있습니까? (표시기는 컴파일되어 한 터미널에서 작동하지만 다른 터미널에서는 작동하지 않음)


 
Alexandr Sokolov :

클래스는 일부 개체의 템플릿이며 이 템플릿에 있는 기능을 사용하려면 먼저 개체를 만들어야 합니다.

실제로 클래스 이름은 int, double, string 등과 같은 데이터 유형 으로 작동합니다. 그러나 확장된 기능이 있습니다. 유형을 지정하지 않고 변수를 선언할 수 없습니다.

그 외에도 클래스에서 함수를 간단히 바인딩 해제할 수 있으며 개체를 만들지 않고 클래스 내에서 또는 클래스에서 별도로 사용할 수 있습니다.

글쎄, 아마도. 글쎄, 그것은 클래스가 복잡한 주제이고 전송, 링크 및 포인터 생성에 대한 참조 책에 많은 예제가 있다는 것입니다. 가능하다고 생각합니다(적어도 C++에서는 가능하지만 mql4는 C++과 관련이 없습니다. ), 여기에서 작동 방식을 파악해야 합니다. 이 예제는 도움말에 나와 있습니다. 클래스를 수강하고 간단한 예제를 보여주는 대신 매우 복잡하고 과부하가 걸리며 불필요한 계산과 정보로 과부하가 걸리며 그 의미를 이해할 수 없습니다. 피로와 피로. 알겠습니다. 클래스에서 함수를 가져오겠습니다.

 
Alexandr Sokolov :

해당 폴더에서 해당 파일이 제거된 것 외에 표시등이 작동하지 않는 다른 이유가 있습니까? (표시기는 컴파일되어 한 터미널에서 작동하지만 다른 터미널에서는 작동하지 않음)


시장에서?

 
Alexandr Sokolov :

해당 폴더에서 해당 파일이 제거된 것 외에 표시등이 작동하지 않는 다른 이유가 있습니까? (표시기는 컴파일되어 한 터미널에서 작동하지만 다른 터미널에서는 작동하지 않음)


터미널 및 전문가의 로그에서 메시지를 참조하십시오.

스크린샷은 이 표시기에 출처가 없음을 보여줍니다.

 
Alexandr Sokolov :

해당 폴더에서 해당 파일이 제거된 것 외에 표시등이 작동하지 않는 다른 이유가 있습니까? (표시기는 컴파일되어 한 터미널에서 작동하지만 다른 터미널에서는 작동하지 않음)


아마도 그는 추가 라이브러리가 필요할 것입니다
 
Сергей Таболин :

시장에서?

아니다

이고르 마카누 :

터미널 및 전문가의 로그에서 메시지를 참조하십시오.

스크린샷은 이 표시기에 출처가 없음을 보여줍니다.

감사해요

마카르FX :
아마도 그는 추가 라이브러리가 필요할 것입니다

확실히 아닙니다, 제가 썼습니다 - 알겠습니다

 

컴파일러가 검사 스크립트의 다음 MQL4 코드에서 경고를 발행하는 이유를 알려주십시오.

 #property strict

struct st_sig {
   string    sym;           // Symbol
   int       age;           // Bars ago
}; st_sig Signals[];

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart () {

   BubbleSort(Signals);
   
}

//+----------------------------------------------------------------------------+
void BubbleSort(st_sig &sig[]) {
   double t;
   int     i, j, n= ArraySize (sig);

   for (i=n- 1 ; i> 0 ; i--) {
     for (j= 0 ; j<i; j++) {
       if (sig[j].age>sig[j+ 1 ].age) {
        t=sig[j].age;
        sig[j].age=sig[j+ 1 ].age;
        sig[j+ 1 ].age=t;       // Line#27 with warning
      }
    }
  }
}

데이터 유형 불일치에 대한 27행의 경고. 두 변수는 모두 같은 유형의 int입니다. 아래는 스크립트 컴파일의 스크린샷입니다.

27행을 다음으로 바꾸면

sig[j+ 1 ].age=( int )t;

그러면 경고가 사라집니다.

초점은 무엇입니까?