MQL4 ve MQL5 ile ilgili herhangi bir acemi sorusu, algoritmalar ve kodlar hakkında yardım ve tartışma - sayfa 163

 
Merhaba, söyleyin lütfen, fiyatın yuvarlak seviyeye yaklaştığını programlı olarak nasıl anlayabilirim?
 
profitnik :
Merhaba, söyleyin lütfen, fiyatın yuvarlak seviyeye yaklaştığını programlı olarak nasıl anlayabilirim?
Fiyatı istenen ondalık basamak sayısına göre normalize edin, NormalizeDouble() .
 

Söyle bana, lütfen, fonksiyonun hesaplanmasının sonuçlarının birkaç değerini nasıl döndürebilirim?

Diyelim ki bir ABC fonksiyonum var - Aynı anda üç değişkenin değerini almak istiyorum, bunu nasıl yapabilirim?


 int ABC()
  {
   int A= 1 ;
   int B= 1 ;
   int C= 1 ;

   return (A,B,C)
 }
 
-Aleks- :

Söyle bana, lütfen, fonksiyonun hesaplanmasının sonuçlarının birkaç değerini nasıl döndürebilirim?

Diyelim ki bir ABC fonksiyonum var - Aynı anda üç değişkenin değerini almak istiyorum, bunu nasıl yapabilirim?

 //int a, b, c;

OnTick ()
 {
 //int a, b, c;
 ABC(a, b, c);
 Print (a, " | " , b, " | " , c);
 }

void ABC( int &A, int &B, int &C)
  {
   A= 1 ;
   B= 1 ;
   C= 1 ;
 }
öyle gibi
 
Vitaly Muzichenko :
öyle gibi

Teşekkür ederim.

Ama çözemiyorum, eğer girişte hesaplama için 2 değişkenim varsa ve 3 tane çıkması gerekiyorsa (farklı int ve double türleri ile ), o zaman ne yapmalıyım?

 
-Aleks- :

Teşekkür ederim.

Ama çözemiyorum, eğer girişte hesaplama için 2 değişkenim varsa ve 3 tane çıkması gerekiyorsa (farklı int ve double türleri ile ), o zaman ne yapmalıyım?


 OnTick ()
 {
   double x,y,c;

   int     q= 5 ;
   double w= 0.1 ;
   ABC(q,w);

   Print (x, " | " , y, " | " , c);
 }

void ABC( int A, double B)
  {
   x=A+B;
   y=A-B;
   c=A*B;
  }
 
-Aleks- :

Teşekkür ederim.

Ama çözemiyorum, eğer girişte hesaplama için 2 değişkenim varsa ve 3 tane çıkması gerekiyorsa (farklı int ve double türleri ile ), o zaman ne yapmalıyım?

 int a, b;
double c;

OnTick ()
 {
 a= 11 ; b= 3 ;
 ABC(a, b, c);
 Print (a, " | " ,b, " | " ,c);
 }

void ABC( int &A, int &B, double &C)
  {
   A=B+ 4 ;
   B=A- 2 ;
   C=( double )A/B;
 }
 

Aceleciliğim için özür dilerim, ama benim örneğimi kullanarak bunu nasıl organize edeceğimi anlamak benim için daha iyi - kodda farklı yerlerde birçok kez çağrılan bir işlev var - şimdi bir değer döndürüyor, ancak daha fazlasına ihtiyacımız var, hadi 2 _Yüksek ve _Düşük deyin - burada nasıl olunur?


 int BarPeresek_iMAf( int PeriodMA)
  {
   int TFT= 0 ;
   int shiftMAT= 0 ;
   int typeMAT= 0 ;
   int priceMAT= 0 ;
   int BarPeresek= 0 ;
   if ( Bars >PeriodMA)
     {
       for ( int X= 1 ;X< 1000 ; X++)
        {
         double MAT= NormalizeDouble ( iMA ( Symbol (),TFT,PeriodMA,shiftMAT,typeMAT,priceMAT,X), Digits );
         if (( Low [X]>MAT && High [X]>MAT) || 
            ( Low [X]<MAT && High [X]<MAT))BarPeresek++;
         else {BarPeresek++; break ;}
        }

     }
   double _High= High [BarPeresek]; //Надо получить сразу из функции
   double _Low= Low [BarPeresek];   //Надо получить сразу из функции
   return BarPeresek;
  }
 
-Aleks- :

Aceleciliğim için özür dilerim, ama benim örneğimi kullanarak bunu nasıl organize edeceğimi anlamak benim için daha iyi - kodda farklı yerlerde birçok kez çağrılan bir işlev var - şimdi bir değer döndürüyor, ancak daha fazlasına ihtiyacımız var, hadi 2 _Yüksek ve _Düşük deyin - burada nasıl olunur?



 OnTick ()
{
   double _High= High [BarPeresek_iMAf(Per_MA)];
   double _Low= Low [BarPeresek_iMAf(Per_MA)];
} 

int BarPeresek_iMAf( int PeriodMA)
  {
   int TFT= 0 ;
   int shiftMAT= 0 ;
   int typeMAT= 0 ;
   int priceMAT= 0 ;
   int BarPeresek= 0 ;
   if ( Bars >PeriodMA)
     {
       for ( int X= 1 ;X< 1000 ; X++)
        {
         double MAT= NormalizeDouble ( iMA ( Symbol (),TFT,PeriodMA,shiftMAT,typeMAT,priceMAT,X), Digits );
         if (( Low [X]>MAT && High [X]>MAT) || 
            ( Low [X]<MAT && High [X]<MAT))BarPeresek++;
         else {BarPeresek++; break ;}
        }
     }
   return BarPeresek;
  }

 
Nikolay Gaylis :

Hayır, bir fonksiyondan bir değer almam gerekiyor - _High ve _Low sadece bir örnek...