Hatalar, hatalar, sorular - sayfa 2662

 

Ciddi bir vakam var - bana sunulan mantık eksik.

Bu tür girişlere sahip bir işlev var

 int Tree_Calcf( int &arr_List_Buy[], int &arr_List_Sell[], int Vektor_ZZ, int Variant_Tree_Buy= 0 , int Variant_Tree_Sell= 0 )
{
int CalcBuy= 1 ;
int CalcSell= 1 ;
//Print("Rez_Tree_Calc=",Rez," - f"," Vektor_ZZ=",Vektor_ZZ," CalcSell=",CalcSell);

if (Vektor_ZZ== 1 )
{
if (Variant_Tree_Buy== 1 )
{
                         if (arr_List_Buy[ 272 ]< 0.5 && arr_List_Buy[ 100 ]< 0.5 && arr_List_Buy[ 249 ]< 0.5 && arr_List_Buy[ 147 ]< 0.5 && arr_List_Buy[ 350 ]< 0.5 && arr_List_Buy[ 383 ]< 0.5 && arr_List_Buy[ 463 ]< 0.5 && arr_List_Buy[ 250 ]< 0.5 && arr_List_Buy[ 283 ]< 0.5 && arr_List_Buy[ 204 ]< 0.5 && arr_List_Buy[ 499 ]< 0.5 && arr_List_Buy[ 296 ]< 0.5 && arr_List_Buy[ 486 ]< 0.5 && arr_List_Buy[ 209 ]< 0.5 && arr_List_Buy[ 453 ]< 0.5 && arr_List_Buy[ 333 ]< 0.5 && arr_List_Buy[ 137 ]< 0.5 && arr_List_Buy[ 127 ]< 0.5 && arr_List_Buy[ 191 ]< 0.5 && arr_List_Buy[ 395 ]< 0.5 && arr_List_Buy[ 224 ]< 0.5 && arr_List_Buy[ 432 ]< 0.5 && arr_List_Buy[ 378 ]< 0.5 && arr_List_Buy[ 25 ]< 0.5 && arr_List_Buy[ 441 ]< 0.5 && arr_List_Buy[ 2 ]< 0.5 && arr_List_Buy[ 465 ]< 0.5 && arr_List_Buy[ 231 ]< 0.5 && arr_List_Buy[ 482 ]< 0.5 && arr_List_Buy[ 324 ]< 0.5 ) CalcBuy= 0 ; //(0.83965634 0.16034366)
//--Вырезана часть аналогичного кода - листья дерева
}

//V03
if (Variant_Tree_Buy== 2 )
{
//---Вырезан код, он не активируется в момент ошибки}
//--Дерево на базе активации листьев без фильтров
if (Variant_Tree_Buy== 3 )
{
//---Вырезан код, он не активируется в момент ошибки}
}
//----TreeList_Sell
if (Vektor_ZZ==- 1 )
{
if (Variant_Tree_Sell== 1 )
{

                         if (arr_List_Sell[ 127 ]< 0.5 && arr_List_Sell[ 275 ]< 0.5 && arr_List_Sell[ 42 ]< 0.5 && arr_List_Sell[ 389 ]< 0.5 && arr_List_Sell[ 121 ]< 0.5 && arr_List_Sell[ 410 ]< 0.5 && arr_List_Sell[ 39 ]< 0.5 && arr_List_Sell[ 348 ]< 0.5 && arr_List_Sell[ 358 ]< 0.5 && arr_List_Sell[ 143 ]< 0.5 && arr_List_Sell[ 396 ]< 0.5 && arr_List_Sell[ 364 ]< 0.5 && arr_List_Sell[ 354 ]< 0.5 && arr_List_Sell[ 160 ]< 0.5 && arr_List_Sell[ 324 ]< 0.5 && arr_List_Sell[ 46 ]< 0.5 && arr_List_Sell[ 38 ]< 0.5 && arr_List_Sell[ 397 ]< 0.5 && arr_List_Sell[ 295 ]< 0.5 && arr_List_Sell[ 48 ]< 0.5 && arr_List_Sell[ 322 ]< 0.5 && arr_List_Sell[ 363 ]< 0.5 && arr_List_Sell[ 40 ]< 0.5 && arr_List_Sell[ 420 ]< 0.5 && arr_List_Sell[ 43 ]< 0.5 && arr_List_Sell[ 230 ]< 0.5 && arr_List_Sell[ 10 ]< 0.5 && arr_List_Sell[ 471 ]< 0.5 && arr_List_Sell[ 507 ]< 0.5 && arr_List_Sell[ 259 ]< 0.5 ) CalcSell= 0 ; //(0.78952321 0.21047679)





//--Вырезана часть аналогичного кода - листья дерева
} if (Variant_Tree_Sell== 2 ) { //---Вырезан код, он не активируется в момент ошибки } //--Дерево на базе активации листьев без фильтров if (Variant_Tree_Sell== 3 ) { //---Вырезан код, он не активируется в момент ошибки } } int Rez= 0 ; if (Vektor_ZZ== 1 )Rez=CalcBuy; if (Vektor_ZZ==- 1 )Rez=CalcSell; Print ( "Rez_Tree_Calc=" ,Rez, " - f" , " Vektor_ZZ=" ,Vektor_ZZ, " CalcSell=" ,CalcSell); return Rez; }

Bu nedenle, bu İşlev bazen 769 değerini verir.

 2020.03 . 01 15 : 54 : 23.500 Core 1    2019.11 . 13 22 : 57 : 00    Rez_Tree_Calc= 769 - f Vektor_ZZ=- 1 CalcSell= 769

ilk baskının yorumunu kaldırırsanız

 //Print("Rez_Tree_Calc=",Rez," - f"," Vektor_ZZ=",Vektor_ZZ," CalcSell=",CalcSell);

sonra doğru değer döndürülür.

İşlev kesilirse, hata anındaişlev çağrıldığında etkinleştirilmeyen kodun kaldırılması yeterlidir, o zaman hata da olmaz.

Açıkçası bir derleyici hatası - tam işlevi kime gönderecekleri geliştiriciler, aksi takdirde foruma sığmaz.

 
Forum , kodun biçimini bozuyor, düzenlemek mümkün değil.
 
Parantez eklemenin yukarıdaki sorunları çözmek için harikalar yarattığı ortaya çıktı:

 class A{};

template < typename T>
class B{
public :
   B( int &){}
   B( long ){}
   B( int , int , int ){};  
   B( const B&){}
   B( const A*){}
};

// template class type
B<A*> test_b_class_class(){
   B<A*> b( 1 );
   int x = 22 ;
   
   return ( B<A*>( 1 ) ) ;             // Fixed Compile Error: ambiguous call to overloaded function with the same parameters: "B(long)" and "B(const A*)"
   return ( B<A*>( 1 , 2 , 3 ) ) ;         // Fixed Compile Error: only one argument is acceptable, argument should be castable to int
   return ( B<A*>(x) ) ;             // Fixed Compile Error: argument is passed by value instead of by reference.
   return ( B<A*>((A*) NULL ) ) ;       // Fixed Compile Error: 'int' - invalid cast operation        
   return ( B<B<B< long >>>( 1 ) ) ;     // Fixed Compile Error: OK, template parameter type does not provide any effort on compilation result
   
   return b;
};

B<A*>* test_b_ptr_ptr(){
   B<A*> b( 1 );
   
   return & ( B<A*>( 1 ) ) ;             // Fixed Compile Error: '&' - illegal operation use
   return &b;                 
};


void OnStart (){    
   // template class type
   B<A*> b0 = test_b_class_class();
   B<A*>* b_ptr = test_b_ptr_ptr();
}
 
Sergey Dzyublik :
Parantez eklemenin yukarıdaki sorunları çözmek için harikalar yarattığı ortaya çıktı:

Yazmamın tek yolu bu.

 
Dönüş değeri şablon sınıfının içinde bulunan bir dahili sınıf olduğunda, bir şablon işlevinin dönüş değeri için MT5 hatası (derleme 2345) derleme hatası , parametre türü şablon işlevi bağımsız değişkeninin türü tarafından belirtilir:

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

class C{
public :
   class D{
   public :
      D(){}
      D(D&){}
   };
};


template < typename T>
A< int >::B* test_b_ptr( const T n){             //OK
   A<T>::B* ptr = new A< int >::B();
   return ptr;
}

template < typename T>
A< int >::B test_b_in_place_class( const T n){   //OK
   return (A<T>::B());
}

template < typename T>
A< int >::B* test_b_in_place_ptr( const T n){     //OK
   return &(A<T>::B());
}


template < typename T>
A<T> test_a_template( const T n){               //OK
   A<T> a;
   return a;
}

template < typename T>
C::D test_d( const T n){                       //OK
   C::D d;
   return d;
}

template < typename T>
A<T>::B test_b_template( const T n){          //'A' - unexpected token, probably type is missing? 
   A<T>::B b;
   return b;
}



void OnStart (){ 
   test_b_ptr( 1 );
   test_b_in_place_class( 1 );
   test_b_in_place_ptr( 1 );
   
   
   test_a_template( 1 );
   test_d( 1 );
   test_b_template( 1 );                       // Compile Error
}
 
// "MetaTrader 5\MQL5\Files\Reports\2020.03.01 03.43.46ExpertName (琼㹤⸱㠰㐹㰷琯㹤琼㹤⼼摴㰾摴ㄾ〮ㄹ㔷⼼摴㰾摴㈾㄰⸹㠰ㄮ‴㈰〺㨰〰ㄮ㐱⼼摴㰾摴ㄾ〮〹㐵⼼摴㰾摴㰾琯㹤琼㹤⼼摴㰾摴㰾琯㹤琼㹤㰰琯㹤琼㹤⼼摴㰾摴㰾琯㹤琼㹤⼼摴㰾摴 - )\"

Lütfen bu metni (Terminal günlüğünden alınan) ME'ye kopyalayın, imleci satırın sonuna getirin ve BackSpace tuşunu kullanarak karakterleri silmeyi deneyin. Tekrarlanabilir bir hatam var.

Animasyonda imlecin konumuna dikkat edin. BackSpace'e basıyorum ve imleçten uzaktaki karakterler siliniyor.


ZY Not Defteri'nde her şey yolunda, ME'de - hayır.

Arama dizisi : Uluchshenie 012.
 
fxsaber :

Lütfen bu metni (Terminal günlüğünden alınan) ME'ye kopyalayın, imleci satırın sonuna getirin ve BackSpace tuşunu kullanarak karakterleri silmeyi deneyin. Tekrarlanabilir bir hatam var.


ZY Not Defteri'nde her şey yolunda, ME'de - hayır.

ME Win10-64'te sorunsuz silindi

Her şeyi kopyalamış gibiyim, sahip olduğum son karakterler:

摴 - )\"

Not: ME'de bir tür şaka var, her biri 50 Kb'lik .mql4 / mql5 kaynak dosyalarım var, forumlarda aynı kod kullanıcılar için 5-6 kB alacak, görünüşe göre odak Unicode kodlamada - "değil Unicode" - Nerede tartışıldığını hatırlamıyorum


UPD: ME menüsü: dosya - farklı kaydet - aşağıda kodlama, varsayılan olarak Unicode'um var

 
Igor Makanu :

UPD: ME menüsü: dosya - farklı kaydet - aşağıda kodlama, varsayılan olarak Unicode'um var

Aynı şekilde.

Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum

Hatalar, hatalar, sorular

fxsaber , 2020.03.01 16:10

Animasyonda imlecin konumuna dikkat edin. BackSpace'e basıyorum ve imleçten uzaktaki karakterler siliniyor.

 
fxsaber :

Lütfen bu metni (Terminal günlüğünden alınan) ME'ye kopyalayın, imleci satırın sonuna getirin ve BackSpace tuşunu kullanarak karakterleri silmeyi deneyin. Tekrarlanabilir bir hatam var.

Animasyonda imlecin konumuna dikkat edin. BackSpace'e basıyorum ve imleçten uzaktaki karakterler siliniyor.


ZY Not Defteri'nde her şey yolunda, ME'de - hayır.

Arama dizisi : Uluchshenie 012.

Geçenlerde buna benzer bir bug vardı. Sadece imlecimi kaybettim. ME'yi yeniden başlattım, bir daha olmadı. Windows ile bir şey düşündüm
 
Vladislav Andruschenko :
ME'yi yeniden başlattım, bir daha olmadı.

Yeniden başlatma yardımcı olmuyor.