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

 
novichok2018 : Teşekkürler! Sözleşmeleri anladım, dikkate alacağım. Ancak önerilen senaryoyu anlamak için ne yazık ki MKL4 bilgim yeterli değil. Afedersiniz :( .

Tüm deneyler komut dosyaları kullanılarak gerçekleştirilir. Komut dosyasını terminalinizde çalıştırın. Bazı satırları değiştirin veya atın. bakalım ne olacak

 

Gösterge verilerinin Min Max değerini bulmak istiyorum, "ders kitabında olduğu gibi her şeyi" yaptım, ancak gösterge verileri diziye yazılmamış gibi görünüyor. MQL profesyonelleri bana nerede hata yaptığımı söylüyor.

     
int limit= 40000 ;
     
       double ArrayGreen[];  
       ArrayResize (ArrayGreen,limit);
       for ( int i= 0 ;i>=limit;i++)
         {
            ArrayGreen[i] = iCustom ( NULL , 0 , "Kolier_SuperTrend_Indi" ,ATR_Period,ATR_Multiplier, 0 , 1 );
         }
       int max= ArrayMaximum (ArrayGreen,Quant, 0 ); 
       double iMaximum = ArrayGreen[max];
       Print ( "Max = " ,ArrayGreen[max], " at index=" ,max); 

      
     
       double ArrayRad[];  
       ArrayResize (ArrayRad,limit);
       for ( int i= 0 ;i>=limit;i++)
         {
            ArrayRad[i] = iCustom ( NULL , 0 , "Kolier_SuperTrend_Indi" ,ATR_Period,ATR_Multiplier, 1 , 1 );
         }
     int min= ArrayMinimum (ArrayRad,Quant_Bars, 0 ); 
     double iMinimum = ArrayRad[min];
     Print ( "Min= " ,ArrayRad[min], " at index=" ,min); 
 
Corvin85 :

Gösterge verilerinin Min Max değerini bulmak istiyorum, "ders kitabında olduğu gibi her şeyi" yaptım, ancak gösterge verileri diziye yazılmamış gibi görünüyor. MQL profesyonelleri bana nerede hata yaptığımı söylüyor.

Limit değişkenin değeri sıfırdan büyük. Bu nedenle, döngülerin hiçbiri yürütülmeyecektir. Sonuç olarak, ArrayGreen ve ArrayRad boş kalacaktır.

Limit değerini sıfır veya daha az olarak ayarlarsanız, program ilk döngüde döngü yapar.

Bu nedenle, döngülerin durumunu yeniden yapmak gerekir. Büyük olasılıkla bunu yapmanız gerekir:

 for ( int i = 0 ; i < limit; i++)
 
Corvin85 :

Gösterge verilerinin Min Max değerini bulmak istiyorum, "ders kitabında olduğu gibi her şeyi" yaptım, ancak gösterge verileri diziye yazılmamış gibi görünüyor. MQL profesyonelleri bana nerede hata yaptığımı söylüyor.

Ayrıca   iCustom(...........); son geçen parametre i

 for ( int i= 0 ;i<limit;i++)
         {
            ArrayGreen[i] = iCustom ( NULL , 0 , "Kolier_SuperTrend_Indi" ,ATR_Period,ATR_Multiplier, 0 ,i);
         }

bunun gibi bir şey.

 
Teşekkür ederim! her şey çalıştı!
 

Tünaydın!


Test kolaylığı için, her seferinde koda girmemek ve bu koşulu çalışmaması için metne dönüştürmemek için koşulu açıp kapatmak için düğmeyi çekmek istiyorum.

Yani şimdi böyle yapıyorum:

 if (( Close [ 1 ]<= High [ 2 ])&&( Close [ 1 ]>= Low [ 2 ])&&( Open [ 1 ]<= High [ 2 ])&&( Open [ 1 ]>= Low [ 2 ]))
{

Bunu şu şekilde kapatıyorum:

 //if ((Close[1]<=High[2])&&(Close[1]>=Low[2])&&(Open[1]<=High[2])&&(Open[1]>=Low[2]))
//{

Ayarları açmaya ve kapatmaya çalıştı, girdi bool Y=True; (Y koşuldur), koşula Y atayın ve koşul karşılanıyorsa veya karşılanmıyorsa başka bir if ile dalları ayırın. Ama bir şey yolunda gitmedi.

Lütfen bana bu gibi durumlarda nasıl devam edeceğimi söyler misiniz?

 
YanSay :

Tünaydın!


Test kolaylığı için, her seferinde koda girmemek ve bu koşulu çalışmaması için metne dönüştürmemek için koşulu açıp kapatmak için düğmeyi çekmek istiyorum.

Yani şimdi şöyle yapıyorum:

Bunu şu şekilde kapatıyorum:

Ayarları açmaya ve kapatmaya çalıştı, girdi bool Y=True; (Y koşuldur), koşula Y atayın ve koşul karşılanıyorsa veya karşılanmıyorsa başka bir if ile dalları ayırın. Ama bir şey yolunda gitmedi.

Bu gibi durumlarda nasıl hareket edeceğimi söyler misiniz?

böyle olabilir mi

 input bool FLAG = True ;


if (FLAG && ( Close [ 1 ]<= High [ 2 ])&&( Close [ 1 ]>= Low [ 2 ])&&( Open [ 1 ]<= High [ 2 ])&&( Open [ 1 ]>= Low [ 2 ]))
{
 
Vitaly Muzichenko :

böyle olabilir mi

Sürümünüzde, değerle ortaya çıkıyor

 input bool FLAG = False ;

algoritma daha ileri gitmez, ancak False ise bu koşulun yok sayılması ve sonraki koşullara gitmesi gerekir.

Benim durumumda tek seçenek sadece 2 dal yazmak mı?:

 input bool FLAG = True ;

if (FLAG= True )
{( Close [ 1 ]<= High [ 2 ])&&( Close [ 1 ]>= Low [ 2 ])&&( Open [ 1 ]<= High [ 2 ])&&( Open [ 1 ]>= Low [ 2 ]))
 { //следующие условия
 }
}

if (FLAG= False )
 { //следующие условия
 }

Yoksa daha kolay bir yolu var mı?

 
YanSay :

Sürümünüzde, değerle ortaya çıkıyor

algoritma daha ileri gitmez, ancak False ise bu koşulun yok sayılması ve sonraki koşullara gitmesi gerekir.

Benim durumumda tek seçenek sadece 2 dal yazmak mı?:

Yoksa daha kolay bir yolu var mı?

 //+------------------------------------------------------------------+
input bool FLAG = True ;
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
   if (FLAG) {
     if ( Close [ 1 ]<= High [ 2 ]) && ( Close [ 1 ]>= Low [ 2 ]) && ( Open [ 1 ]<= High [ 2 ]) && ( Open [ 1 ]>= Low [ 2 ])
     //...
  } else {
     //следующие условия
  }
//+------------------------------------------------------------------+
 
YanSay :

Sürümünüzde, değerle ortaya çıkıyor

algoritma daha ileri gitmez, ancak False ise bu koşulun yok sayılması ve sonraki koşullara gitmesi gerekir.

Benim durumumda tek seçenek sadece 2 dal yazmak mı?:

Yoksa daha kolay bir yolu var mı?

Tek yol

 if (!FLAG || ( Close [ 1 ]<= High [ 2 ] && Close [ 1 ]>= Low [ 2 ] && Open [ 1 ]<= High [ 2 ] && Open [ 1 ]>= Low [ 2 ]))