오류, 버그, 질문 - 페이지 2648

 
Vladimir Karputov :

기호, 티켓, 시간 열 중 하나의 헤더를 클릭합니다.

왼쪽 키로 클릭하십시오.

작동했습니다. 덕분에 잘못된 쌍을 이미 여러 번 닫았습니다.
 
Сергей Проценко :
이익에 따라 이익이 크면 아래로 이동하고 다른 주문에 대해 이익이 커지면 자리를 바꿉니다. 유로의 이익이 금보다 크면 유로의 주문은 낮아지고 금의 경우 더 높아집니다.

이익순으로 정렬해야 합니다. 다른 기준으로 정렬하도록 선택합니다.

 
fxsaber :
컴파일 오류를 해결하는 방법을 알려주실 수 있습니까?

모든 것이 보이는 것만큼 어렵지 않습니다.

 #define  PRINT(x) ; Print ( #x,  ":" , string (x))

struct STRUCT_BASE
{
   static const int Array[];
};
static const int STRUCT_BASE::Array[] = { 1 , 2 };

struct STRUCT : STRUCT_BASE
{
   int Array2[ sizeof (Array)];
};


void OnStart ()
{
   static const int Array[] = { 1 , 2 };
   int Array2[ sizeof (Array)];
  
  PRINT( ArraySize (Array));             //2 
  PRINT( ArraySize (Array2));           //8
  
  
  STRUCT s;
  PRINT( ArraySize (s.Array));           //2
  PRINT( ArraySize (s.Array2));         //8
}
 
Sergey Dzyublik :

모든 것이 보이는 것만큼 어렵지 않습니다.

감사합니다, 나는 기초를 얻지 못했습니다.

 
코드 베이스에서 확인을 통과할 수 없습니다. 메인 파일을 찾을 수 없다고 표시 되지만 거기에 있습니다. 이유를 찾으십시오(진행자가 할 수 있는 경우). 블로그 게시물로 돌아갈 생각입니다. 거기에는 그런 문제가 없습니다.
 
Stanislav Korotky :
코드 베이스에서 확인을 통과할 수 없습니다. 메인 파일을 찾을 수 없다고 표시 되지만 거기에 있습니다. 이유를 찾으십시오(진행자가 할 수 있는 경우). 블로그 게시물로 돌아갈 생각입니다. 거기에는 그런 문제가 없습니다.

mq5를 "기본" 폴더에 넣습니다.

 

MT5 컴파일러(빌드 2321) 작업에 대한 두 가지 질문:

 #define PRINT(x) ; Print ( #x, ":" , string (x))
#ifdef __cplusplus
     #include<iostream>
#endif


template < typename T>
class A{
};

template < typename T>
class B : public A<T>{
};


template < typename T>
void func(B<T> &it1){
   printf ( "C++:1" );                       //MQL:2         
}

////ERRROR: 'func' - template functions overloading is not supported yet
//template<typename T>     
//void func(T &it1){ 
//  printf("C++:2");                               
//}
template < typename T>         
void func(T &it1, T* = NULL ){
   printf ( "C++:2" );                       //MQL:1        
}

template < typename T>
void func(A<T> &it1){
   printf ( "C++:3" );                       //MQL:3
}


void OnStart (){
   B< int > b;
   func(b);
}

int main(){
   OnStart ();
   return 0 ;
}

1. C++의 템플릿 기능과 MQL의 템플릿 기능 실행 우선 순위 불일치(온라인: https://onlinegdb.com/Hkvz8Hu7L ).
따라서 C++에서 세 가지 템플릿 함수를 모두 사용할 수 있을 때 템플릿 함수는 결과 "C++:1"로 실행되고, 제거되면 "C++:2"가 실행되고 제거되면 "C++: 삼".
MQL에서 우선 순위는 "C++:2", "C++:1" 및 "C++:3"으로 완전히 다릅니다.


2. MQL에서 첫 번째 기능이 금지되는 이유는 명확하지 않지만 더미 매개변수가 있는 동일한 기능은 이미 허용됩니다.

 //ERRROR: 'func' - template functions overloading is not supported yet
template < typename T>     
void func(T &it1){ 
   printf ( "C++:2" );                               
}

// OK
template < typename T>         
void func(T &it1, T* = NULL ){
   printf ( "C++:2" );                              
}
 

안녕하세요.

다중 통화 로봇 을 테스트하는 데 문제가 발생한 사람이 있습니까?

EA에 필요한 모든 통화 쌍의 모든 견적이 로드됩니까?

EURUSD GBPUSD와 같이 두 쌍을 테스트하려고 합니다.

EURUSD(테스트된 EURUSD GBPUSD)에 대한 테스트를 수행하면 결과는 1이고,

GBPUSD에 대한 테스트를 수행하면(EURUSD GBPUSD 테스트) 결과는 2입니다. 다양한

USDCHF(테스트된 EURUSD GBPUSD)에 대한 테스트를 수행하면 결과는 3입니다. 다양한



결과는 크게 다르지 않습니다. 수십 거래(2개월 동안)의 사소한 일이지만 각 쌍의 결과는 다릅니다(특정 설정된 쌍 EURUSD GBPUSD가 테스트되지만)

바로 추측할 수 있습니다. 모든 코드는 루프에서 Symbol()을 가져오는 Symb 변수에서 실행됩니다. 저것들. 단일 코드이지만 코드 내에서 Symb 변수에는 고유한 값이 할당됩니다.


그럴 수 있을까? 다른 따옴표, 눈금, 다른 쌍의 기록 품질(이 경우 EURUSD 및 GBPUSD는 항상 테스트됨)로 인해 다른 쌍에 대한 테스트 결과가 다릅니다.

저것들.

EURUSD에 대한 테스트를 설정한 다음 GBPUSD에 대해 더 적은 견적이 로드될 수 있습니까?

그리고

테스트가 GBPUSD에 대해 설정된 경우 EURUSD에 대해 더 적은 견적이 로드될 수 있습니까?

 
fxsaber :

mq5를 "기본" 폴더에 넣습니다.

기본 모듈에는 폴더가 없어야 한다는 것을 잘 알고 있습니다. 기본적으로 다운로드 버튼 오른쪽에 드롭다운 옵션이 있는 폴더 자체를 "마무리"합니다.

롤하지 않습니다.

 
C++에서는 컴파일되고 모든 것이 작동하지만(online: https://onlinegdb.com/Syn90dd7I ) MQL에서 오류는 "'func' - 오버로드된 함수에 대한 모호한 호출"입니다.

 #define PRINT(x) ; Print ( #x, ":" , string (x))
#ifdef __cplusplus
     #include<iostream>
#endif


template < typename T>
class A{
};

template < typename T>
class B : public A<T>{
};

template < typename T>
class C : public B<T>{
};


template < typename T>
void func(B<T> &it1){
   printf ( "C++:1" );                      
}

template < typename T>
void func(A<T> &it1){
   printf ( "C++:2" );                      
}


void OnStart (){
   C< int > c;
   func(c);            //ERROR: 'func' - ambiguous call to overloaded function
}

int main(){
   OnStart ();
   return 0 ;
}