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

 
Artyom Trishkin :
Kılavuz, neye ihtiyacınız olduğunu söylüyor. Ve evet, kullanıcı tarafından girilen parametrenin programlı olarak değiştirilemeyeceği doğrudur. En azından bir şey kullanıcıya ait olabilir :)

Gerçekten istiyorsan, yapabilirsin)

 
Vitaly Muzichenko :

Gerçekten istiyorsan, yapabilirsin)

Elbette, yeniden atarsanız yapabilirsiniz. Ancak kullanıcı tarafından girilen değer değişmeden kalacaktır.
 

Sık sık bir sorunla karşılaşırım. Derleyici, koddaki "değişken zaten tanımlanmış" hatasıyla yemin eder:

 if (n< 10 )
 {
  int a= 10 ;
 }
else
 {
  int a= 5 ;
 }

https://docs.mql4.com/ru/basis/variables/local adresindeki referans şu şekildedir:

Bir blok içinde (iç seviyede) bildirilen değişkenler blok kapsamına sahiptir .

Bloklar iç içeyse ve dış bloktaki tanımlayıcı , iç bloktaki tanımlayıcıyla aynı ada sahipse, dış blok tanımlayıcı, iç blok sonlandırılana kadar "görünmez" (gizli).

Ancak aynı referanstaki örnek bile aynı "değişken zaten tanımlanmış" hatasıyla derlenmiyor:

 int i= 5 ;       // локальная переменная функции
     {
       int i= 10 ;   // переменная функции 
       Print ( "В блоке i = " ,i); // результат  i = 10;
     }
   Print ( "Вне блока i = " ,i);   // результат  i = 5;

Döngülerle aynı sorun:

 int i= 10 ;
for ( int i= 1 ;i< 10 ;i++) ...

Bu sorunu nasıl aşabilirim ve "değişken zaten tanımlanmış" hatası olmadan derlemek için referans örneğini nasıl alabilirim?

 
The_Sheikh :

Sık sık bir sorunla karşılaşırım. Derleyici, koddaki "değişken zaten tanımlanmış" hatasıyla yemin eder:

https://docs.mql4.com/ru/basis/variables/local adresindeki referans şu şekildedir:

Bir blok içinde (iç seviyede) bildirilen değişkenler blok kapsamına sahiptir .

Bloklar iç içeyse ve dış bloktaki tanımlayıcı , iç bloktaki tanımlayıcıyla aynı ada sahipse, dış blok tanımlayıcı, iç blok sonlandırılana kadar "görünmez" (gizli).

Ancak aynı referanstaki örnek bile aynı "değişken zaten tanımlanmış" hatasıyla derlenmiyor:

Döngülerle aynı sorun:

Bu sorunu nasıl aşabilirim ve "değişken zaten tanımlanmış" hatası olmadan derlemek için referans örneğini nasıl alabilirim?

#mülkiyet katı
 
The_Sheikh :

Bu sorunu nasıl aşabilirim ve "değişken zaten tanımlanmış" hatası olmadan derlemek için referans örneğini nasıl alabilirim?

referans kitabında uzun süredir tüm örnekler doğru çalışmıyor

örneklerinizdeki kapsama göre - bir operatör içindeki görünürlük yereldir, tam olarak bunun gibi bir şey çalışması gerekir:

 void OnStart ()
  {
   for ( int i= 0 ;i< 10 ;i++)
     {
       double x=i;
     }

   for ( int i= 0 ;i< 10 ;i++)
     {
       double x=i;
     }
  }

onlar. for deyimi içindeki görünürlük yereldir, çıkarken i ve x değişkenleri kaybolacak

 

EA tarafından işlenmek üzere Peak Repainter göstergesinin son zirvesini aramaya çalıştım:

   GV_trendD1 = StringConcatenate (GVn, " дневной тренд" );
   if (! GlobalVariableCheck (GV_trendD1))
      {
       double    fUP,fDN;

       for ( int f= 0 ; f<= 400 && ! IsStopped (); f++)
         {
         fUP = iCustom ( NULL , PERIOD_D1 , "Used\\# Peak Repainter" , 0 ,f);
         if (fUP>= 15 ) { GlobalVariableSet (GV_trendD1, 1 ); break ;}
         else {fDN = iCustom ( NULL , PERIOD_D1 , "Used\\# Peak Repainter" , 1 ,f); if (fDN>= 15 ) { GlobalVariableSet (GV_trendD1,- 1 ); break ;}}
         }
      }

Sonuç olarak, aslında -1 olması gerektiği halde global değişkene 1 yazılır.

Sorun nedir? Kod ile mi? Bir gösterge ile?

Gösterge, varsayılan ayar ile kullanılır.

Dosyalar:
 
Alexey G. Smolyakov :

EA tarafından işlenmek üzere Peak Repainter göstergesinin son zirvesini aramaya çalıştım:

Sonuç olarak, aslında -1 olması gerektiği halde global değişkene 1 yazılır.

Sorun nedir? Kod ile mi? Bir gösterge ile mi?

Gösterge, varsayılan ayar ile kullanılır.

Neden böyle bir gösterge adı ?

 iCustom ( NULL , PERIOD_D1 , "Used\\# Peak Repainter" , 0 ,f);
 
Artyom Trishkin :

Neden böyle bir gösterge adı ?

Sadece farklı rehberlerde farklı danışmanlar için göstergeler tutuyorum. Ve gruplanmaları için onları hafifçe yeniden adlandırıyorum.

Adı önemli mi?

 
Alexey G. Smolyakov :

Sadece farklı rehberlerde farklı danışmanlar için göstergeler tutuyorum. Ve gruplanmaları için onları hafifçe yeniden adlandırıyorum.

Adı önemli mi?

etkiler, MT4'teki tüm dosya erişimleri MQL4 klasörü içinde gerçekleşir, bu klasörün dışındaki Uzman Danışmanlardan/komut dosyalarından/göstergelerden çıkış güvenlik nedeniyle hariç tutulur

 
Igor Makanu :

etkiler, MT4'teki tüm dosya erişimleri MQL4 klasörü içinde gerçekleşir, bu klasörün dışındaki Uzman Danışmanlardan/komut dosyalarından/göstergelerden çıkış güvenlik nedeniyle hariç tutulur

MQL4\Indicators\Used klasörünün tam yolu. Klasörden çıkış yok gibi görünüyor. Ancak bu konudan bir sapmadır - diğer danışmanlar göstergeleriyle benzer klasörlerde sorunsuz çalışır. Ama bu göstergenin nesi var - anlamıyorum. Koduna baktım ama çözecek kadar bilgi ve tecrübe yok. Sadece son çubuğu ya da onun gibi bir şeyi saydığına dair bir şüphe var.