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

 

문제는 하나의 템플릿을 만들어 여러 기능에 적용할 수 있느냐는 것입니다.

 template < typename T>
void Fun1(T &y)
{тело
}
void Fun1(T &r,T k)
{тело
}
int Fun1(T &r,T k)
{тело return ( 0 );
}

같은 유형의 변수를 사용한다면 하나의 템플릿을 여러 기능에 사용할 수 있는지 이해하는 것이 매우 편리할 것입니다.

 
안녕하세요! 석유, 지수 및 금속에 대한 시세를 추가하는 방법을 알려주십시오.
 
vfrfhjybgjakjncmrb :
안녕하세요! 석유, 지수 및 금속에 대한 시세를 추가하는 방법을 알려주십시오.

방송 여부는 우선 사무실에 달려 있습니다. 또한 사용 중인 터미널에 따라 다릅니다. 사무실에서 방송하는 경우 이러한 견적이 어떤 계정에서 어떤 조건에서 방송되는지 알아야 합니다. 아마도 상품 목록을 열어야 하고 이러한 상품이 거기에 있을 것입니다. 사무실에서 불가능한 조건에서 방송하는 경우 이러한 인용문으로 차트를 만들고 매번 업데이트해야 합니다. 예를 들어 사무실에서 Oil을 방송한다는 사실을 알고 계십니까?

 
Seric29 :

문제는 하나의 템플릿을 만들어 여러 기능에 적용할 수 있느냐는 것입니다.

같은 유형의 변수를 사용한다면 하나의 템플릿을 여러 기능에 사용할 수 있는지 이해하는 것이 매우 편리할 것입니다.

아니요. 별도로 각 기능에 대해 전체 설명을 제공해야 합니다. 그렇지 않으면 나중에 잠시 후 자신의 코드를 읽지 않게 됩니다.

 
한 번에 모든 차트에서 특정 지표를 제거하려면 어떻게 해야 합니까? 새 템플릿에서는 작동하지 않습니다. 아마도 스크립트?
 
Ilya Prozumentov :

아니요. 별도로 각 기능에 대해 전체 설명을 제공해야 합니다. 그렇지 않으면 나중에 잠시 후 자신의 코드를 읽지 않게 됩니다.

불쌍해. 어쨌든 공부하지 않으면 자신의 코드를 읽거나 읽지 않습니다. 함수에서 같은 유형의 변수를 자주 사용하기 때문에 컴팩트 프로그램을 작성하고 싶습니다. 그래서 제가 질문했습니다. 나는 "수업"을 통해 그것이 가능하다고 생각했지만 "수업"이 나에게 너무 힘들 때까지 그들과 함께 무언가를 이해하지 못했습니다. 많은 기능을 위한 템플릿을 만드는 것이 필요하다는 것을 알게 될 것임을 의미합니다.

 

이 기록이 작동하지 않는 이유를 누가 알 수 있습니까? 배열을 저장하고 있는 구조체의 필드를 참조하여 어떤 조건이 충족되는지에 따라 회전시키고 싶은데, 조건의 실행은 ArrayDimension 함수에 따라 다릅니다.

   struct SD1{
   int a[ 10 ]; //int q[10][2];
};SD1 a1;

struct SD2{
   int a[ 10 ][ 2 ];
};SD2 a2;

template < typename T> //,typename W
void MoveArray(T & s){ //,W&e
   //Alert(ArrayDimension(s.a));
     int r= 0 ;r= ArrayDimension (s.a); Print ( "r-ранг: " ,r); if (r== 1 )пишу условие что если ранг равен 1му 
      { for ( int cn= 0 ; cn<= 8 ; cn++)                              то крутить этот цикл
     {                
      s.a[cn]=s.a[cn+ 1 ];
     }} else if (r== 2 )            если ранг равен 2ум
      { for ( int cn= 0 ; cn<= 8 ; cn++) крутить этот цикл
     {                
      s.a[cn][ 0 ]=s.a[cn+ 1 ][ 0 ];
      s.a[cn][ 1 ]=s.a[cn+ 1 ][ 1 ];
     }}  
}

결국, 이 if (r== 1 ) 조건이 거짓 이라는 사실에도 불구하고 첫 번째 루프로 올라갈 것입니다. 순위가 2um이면 왜 거기에 올라가고, 무언가가 실행되는 본문에 어떻게 들어가나요? 거짓에도 불구하고 나는 다음과 같이 함수를 호출합니다.

   MoveArray(a2);в OnTick
   for ( int i= 0 ;i< 10 ;i++){ Print ( "q: " ,i, ": " ,a2.a[i][ 0 ]);}
int yy= ArrayDimension (a2.a); Print ( "Ранг: " ,yy, " " );
 
Seric29 :

불쌍해. 어쨌든 공부하지 않으면 자신의 코드를 읽거나 읽지 않습니다. 함수에서 같은 유형의 변수를 자주 사용하기 때문에 컴팩트 프로그램을 작성하고 싶습니다. 그래서 제가 질문했습니다. 나는 "수업"을 통해 그것이 가능하다고 생각했지만 "수업"이 나에게 너무 힘들 때까지 그들과 함께 무언가를 이해하지 못했습니다. 많은 기능을 위한 템플릿을 만드는 것이 필요하다는 것을 알게 될 것임을 의미합니다.

컴팩트화의 본질을 파악할 수 없습니다. 위의 예에서 2줄을 저장합니다. 정말 그렇게 저장하고 싶다면 매크로 대체를 작성하고 함수 앞의 줄에서 사용할 수 있습니다

 #define templ(T) templeate< typename T>

templ(T1) void Funct(T1 a)
 
Ilya Prozumentov :
 #define templ(T) template< typename T>

templ(T1) void Funct(T1 a)

각 함수 앞에 templ(T1) 을 기록하고 변수나 필요한 인수를 수락한다는 의미입니까? 그리고 왜 templ(T) 가 선언되고 templ(T1)이 호출 됩니까? 각 함수 앞에 숫자를 추가해야 합니까( templ(T1) templ(T2) templ(T3) ) 모든 곳에 templ(T1)을 작성해야 합니까? 그리고 여러 매개변수가 template< typename T> 에 채워진 다면 이 template< typename T, typename P, typename Q > - templ(T,P,Q)와 같이 어떻게 될까요?

 
일반적으로 이것이 문제입니다! 다른 EA로 이익을 추적하고 싶지만 이 EA에서는 이익을 위해 손절매를 허용하지 않습니다! 누군가 고칠 수 있습니까! 작가는 대답하지 않는다!
파일:
cm-MA_Gread.mq4  18 kb