Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz, hiçbir yerde - 6. - sayfa 495

 

Terminal 509'dan 600'e güncellendi ve EA, derleme sırasında aşağıdaki uyarıyı veriyor:

'ErrNum' bildirimi, 81. satırdaki genel bildirimi gizler

ve kodun bir parçası:

 string ErrorDescription( int ErrNum)
{
   switch (ErrNum)
  {

Lütfen bana sorunun ne olduğunu söyle?

 
rustein :

Terminal 509'dan 600'e güncellendi ve EA, derleme sırasında aşağıdaki uyarıyı veriyor:

'ErrNum' bildirimi, 81. satırdaki genel bildirimi gizler

ve kodun bir parçası:

Lütfen bana sorunun ne olduğunu söyle?

ErrNum'u global olarak ilan ettiniz. Bir fonksiyon içinde aynı ada sahip bir değişken , global değişkenin değerini gizler. İşleve farklı bir ad verin
 

Teşekkürler, yani ErrNum'u ErrNumber olarak değiştirdim ve hepsi bu mu? Uyarı gitti, her şey düzgün çalışacak mı?

 string ErrorDescription( int ErrNumber)
{
   switch (ErrNum)
  {
     case 0 : return ( "NO ERROR" );
     case 1 : return ( "NO RESULT" );                                 
     case 2 : return ( "COMMON ERROR" );                              
     case 3 : return ( "INVALID TRADE PARAMETERS" );                  
     case 4 : return ( "SERVER BUSY" );                               
     case 5 : return ( "OLD VERSION" );                               
     case 6 : return ( "NO CONNECTION" );                             
     case 7 : return ( "NOT ENOUGH RIGHTS" );   
 
Harika, tekrar çok teşekkürler.

Ve koddaki son uyarı:

tüm kontrol yolları bir değer döndürmez

 double FractalUp()
{
   if ( iCustom ( Symbol (), 0 , "SR" ,FractalRange, false , 1 , 2 ,TradeBar) != EMPTY_VALUE )  
   return ( iCustom ( Symbol (), 0 , "SR" ,FractalRange, false , 1 , 2 ,TradeBar));
}

Bana burada neyin yanlış olduğunu söyle lütfen.

 
rustein :
Harika, tekrar çok teşekkürler.

Ve koddaki son uyarı:

tüm kontrol yolları bir değer döndürmez

Bana burada neyin yanlış olduğunu söyle lütfen.

Koşul doğruysa, işlevden bir dönüş değeri vardır.

Aksi takdirde, fonksiyondan geri dönüş yoktur. İşlevden bazı varsayılan değerler döndür

 
hehe :),

bunu yaptı ve uyarı kayboldu:

 double FractalUp()
{
   if ( iCustom ( Symbol (), 0 , "SR" ,FractalRange, false , 1 , 2 ,TradeBar) != EMPTY_VALUE )
  {
     return ( iCustom ( Symbol (), 0 , "SR" ,FractalRange, false , 1 , 2 ,TradeBar));
  }
   else return ( 0 );
}

Umarım güzeldir, mt 4'te hayat devam ediyor :), tekrar teşekkürler!.

 
rustein :
hehe :),

bunu yaptı ve uyarı kayboldu:

Umarım güzeldir, mt 4'te hayat devam ediyor :), tekrar teşekkürler!.

Benim için zevkti.
 

Beyler kendi üretimimiz olan 4 basit fonksiyon var, görünüşe göre bir bugları var. Lütfen yeni başlayan birine yardım edin!

(her işlevin adı, bu işlevin ne yapması gerektiğini kendisi söyler)

 extern double LOT =0.1;


double GetLastOrderProfit()
{
   int time = 0 ; double profit = 0 ; 
   for ( int i = OrdersHistoryTotal ()- 1 ; i>= 0 ; i--)
  {
     if ( OrderSelect (i, SELECT_BY_POS , MODE_HISTORY ))
    {
       if ( OrderSymbol () == Symbol ()&& OrderMagicNumber () == Magic)
      {
         if (time< OrderCloseTime ())
        {
          time= OrderCloseTime ();
          profit= OrderProfit ();
        }
      }
    }
  }
   return (profit);
}

//+------------------------------------------------------------------+
double GetLastLot()
{
   int time = 0 ; double Lot = 0 ; 
   for ( int i = OrdersHistoryTotal ()- 1 ;i>= 0 ;i--)
  {
     if ( OrderSelect (i, SELECT_BY_POS , MODE_HISTORY ))
    {
       if ( OrderSymbol () == Symbol ()&& OrderMagicNumber () == Magic)
      {
         if (time< OrderCloseTime ())
        time= OrderCloseTime ();
        Lot = OrderLots (); 
      }
    }
  }

   if (Lot <= 0 ) Lot = LOT;

   return (Lot);
}

//+------------------------------------------------------------------+
double GetLastTenOrdersProfit()
{
   double profit = 0 ; int count = 0 ; 
   for ( int i = OrdersHistoryTotal ()- 1 ;i>= 0 ;i--)
  {
     if ( OrderSelect (i, SELECT_BY_POS , MODE_HISTORY ))
    {
       if ( OrderSymbol () == Symbol ()&& OrderMagicNumber () == Magic)
      {
         if (count< 10 )
        {
          profit=profit+ OrderProfit ();
          count++;
        } 
      }
    }
  }

   return (profit);
}
//+------------------------------------------------------------------+
double GetLot()
{
   double Lot = 0 ; double n = GetLastLot();
  
   if (GetTotalProfit() < 0 || GetLastLotProfit() < 0 )
  Lot = NormalizeDouble (n * MartinStep, 2 );
  
   if (GetTotalProfit() >= 0 || GetLastLotProfit() >= 0 )
  Lot = LOT;
  
   return (Lot);
}

 

anlamama yardım et

double b=NormalizeDouble(ObjectGet("b",OBJPROP_TIME1),Rakamlar);

int shiftb=iBarShift(NULL,0, b );

seçilen b'ye atıfta bulunan tür dönüşümü nedeniyle olası veri kaybı için bir uyarı yazar, evet, bu bir tarih saat değildir, ancak bunu yaparsanız:

tarihsaat b =ObjectGet("b",OBJPROP_TIME1);

int shiftb=iBarShift(NULL,0,b);

o zaman uyarı herhangi bir nedenle datetime b'de olacaktır, her şey doğru görünüyor ve hiçbir uyarı olmamalıdır .

 
Alexandr24 :

anlamama yardım et

double b=NormalizeDouble(ObjectGet("b",OBJPROP_TIME1),Rakamlar);

int shiftb=iBarShift(NULL,0, b );

seçilen b'ye atıfta bulunan tür dönüşümü nedeniyle olası veri kaybı için bir uyarı yazar, evet, bu bir tarih saat değildir, ancak bunu yaparsanız:

tarihsaat b =ObjectGet("b",OBJPROP_TIME1);

int shiftb=iBarShift(NULL,0,b);

o zaman uyarı herhangi bir nedenle datetime b'de olacaktır, her şey doğru görünüyor ve hiçbir uyarı olmamalıdır .

ve int b'yi ayarla