Hatalar, hatalar, sorular - sayfa 2648

 
Vladimir Karputov :

Şu sütunlardan birinin başlığına tıklayın: Sembol, Bilet, Zaman.

SOL TUŞ ile tıklayın.

İşe yaradı, teşekkürler, zaten birkaç kez yanlış çifti kapattım.
 
Сергей Проценко :
Kâra bağlı olarak, kâr daha büyükse, aşağı doğru hareket eder, başka bir düzen için kâr büyür, yer değiştirirler. Avronun karı altından daha büyük olursa, o zaman avronun sırası daha düşük olacak ve altın için daha yüksek olacaktır.

Kazanca göre sıralamanız gerekir. Farklı bir kritere göre sıralamayı seçin.

 
fxsaber :
Derleme hatasını nasıl aşacağımı söyler misiniz?

Her şey göründüğü kadar zor değil:

 #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 :

Her şey göründüğü kadar zor değil:

Teşekkürler, temel bilgileri almadım.

 
Kod tabanındaki kontrolü geçemiyorum, ana dosya bulunamadı diyor ama orada. Lütfen nedenini bulun (eğer moderatörler yapabilirse). Blog gönderilerine geri dönmeyi düşünüyorum - orada böyle bir sorun yok.
 
Stanislav Korotky :
Kod tabanındaki kontrolü geçemiyorum, ana dosya bulunamadı diyor ama orada. Lütfen nedenini bulun (eğer moderatörler yapabilirse). Blog gönderilerine geri dönmeyi düşünüyorum - orada böyle bir sorun yok.

mq5 "varsayılan" klasöre yerleştirin.

 

MT5 derleyicisinin çalışması hakkında sadece iki soru (derleme 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. MQL'deki şablon işlevlerinin yürütme önceliklerinin C++'daki şablon işlevleriyle uyuşmaması (çevrimiçi: https://onlinegdb.com/Hkvz8Hu7L ).
Bu nedenle, C++'da, üç şablon işlevinin tümü kullanılabilir olduğunda, şablon işlevi "C++:1" sonucuyla yürütülür, kaldırılırsa "C++:2" yürütülür ve kaldırılırsa - "C++: 3".
MQL'de öncelikler tamamen farklıdır: "C++:2", ardından "C++:1" ve "C++:3".


2. MQL'de işlevlerden ilkinin neden yasaklandığı açık değilken, aynı işleve ancak yapay bir parametreyle zaten izin veriliyor:

 //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" );                              
}
 

Merhaba.

Söyleyin bana, çok para birimi robotlarını test etme sorunuyla karşılaşan var mı?

EA için tüm döviz çiftlerinin tüm fiyatları yüklendi mi?

İki çifti test etmeye çalışıyorum, örneğin EURUSD GBPUSD:

EURUSD üzerinde testler yaparsanız (test edilmiş EURUSD GBPUSD) - sonuç 1'dir,

GBPUSD üzerinde testler yaparsak (EURUSD GBPUSD'yi test ederek), sonuç 2'dir, yani. çeşitli

USDCHF (test edilen EURUSD GBPUSD) üzerinde testler yaparsak, sonuç 3'tür, yani. çeşitli



Sonuçlar çok farklı değil, birkaç düzine işlemde (2 ay boyunca) önemsiz bir şey, ancak her çiftteki sonuçlar farklıdır (belirli yerleşik EURUSD GBPUSD çiftleri test edilmiş olsa da)

Hemen tahmin edeyim: Tüm kodlar, döngüden Symbol() öğesini alan Symb değişkeninde çalışır. Onlar. tek bir koddur, ancak kodun içinde Symb değişkenine kendi değeri atanır.


Olabilir mi? Farklı kotasyonlar, keneler, farklı çiftlerin geçmişinin kalitesi nedeniyle (bu durumda EURUSD ve GBPUSD her zaman test edilir), farklı çiftler için test sonuçları farklı mı?

Onlar.

EURUSD için bir test ayarladıkları için GBPUSD için daha az teklif yüklenmiş olabilir mi?

ve

GBPUSD için bir test ayarlanmış olabilir, daha sonra EURUSD için daha az fiyat yüklenmiş olabilir mi?

 
fxsaber :

mq5 "varsayılan" klasöre yerleştirin.

Ana modülün klasörler olmadan olması gerektiğini çok iyi biliyorum - olduğu gibi, varsayılan olarak indirme düğmelerinin sağındaki açılır seçeneklerle klasörü kendileri "bitirirler".

Yuvarlanmaz.

 
C++'da derlenir ve her şey çalışır (çevrimiçi: https://onlinegdb.com/Syn90dd7I ), ancak MQL'de hata şudur: "'func' - aşırı yüklenmiş işleve belirsiz çağrı"

 #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 ;
}
Neden: