MQL uzmanları için soru - sayfa 7

 

Çalıştığı sürece. Ve başka bir soru.

Böyle bir kod parçası daha bulundu.

 
if (OrderSymbol() == Symbol () && OrderType() == OP_SELL) {
         switch (OrderMagicNumber()) {
             case 212 :  MMMMM = 12 ;   break ;
             case 211 :  MMMMM = 11 ;   break ;
             case 210 :  MMMMM = 10 ;   break ;
             case 209 :  MMMMM = 9 ;     break ;
                                    }

- ile değiştirmek doğru olur mu?

 if (OrderSymbol() == Symbol () && OrderType() == OP_SELL) 
     {     
             if ( OrderMagicNumber()==Magic_212)  MMMMM = 12 ;   
             if ( OrderMagicNumber()==Magic_211)  MMMMM = 11 ;   
             if ( OrderMagicNumber()==Magic_210)  MMMMM = 10 ;   
             if ( OrderMagicNumber()==Magic_209)  MMMMM = 9 ;    
     }
 
Bu yüzden egzersizlerinize bakıyorum ve kendi kendime düşünüyorum:
- Birkaç sihirbaz kuruyorsun
- daha sonra sihirbazların sayısını takip edin ve sayıya bağlı olarak MMMMM değişkenine uygun sayısal değeri atayın

Soru: Bu değeri herhangi bir döngü olmadan init içinde bir kez sihirbaza hemen atamak ve sonra kullanmak daha kolay değil mi?
 
Rita :

Çalıştığı sürece. Ve başka bir soru.

Böyle bir kod parçası daha buldum.

- ile değiştirmek doğru olur mu?


 if (OrderSymbol() == Symbol () && OrderType() == OP_SELL) 
     {     
            MMMMM = OrderMagicNumber()- 200 ;   
     }
Tabii ki sadece bu özel durum için.
 

Spsb. cevaplar için.

Hayır, granit77 - durum tam olarak bu değil.

Benden başka birinin EA'sını düzeltmem/iyileştirmem istendi (büyüleri küresel olanlara taşımak için). Çeşitli siparişlerin karşılıklı kontrolü için 1800 satır kod ve karmaşık bileşik algoritmalar vardır. sihirbazlar.

Bu karmaşık kontrol şemalarını araştırmak için fiziksel olarak zaman kaybedemem. Dijital büyüleri "küresel" olanlarla değiştirmek ve bu büyüleri çeşitli işlevlerde düzeltmek tamamen mekanik olarak (derine girmeden) benim için daha kolay.

 
Rita :

Spsb. cevaplar için.

Hayır, granit77 - durum tam olarak bu değil.

Benden başka birinin EA'sını düzeltmem/iyileştirmem istendi (büyüleri küresel olanlara taşımak için). Çeşitli siparişlerin karşılıklı kontrolü için 1800 satır kod ve karmaşık bileşik algoritmalar vardır. sihirbazlar.

Bu karmaşık kontrol şemalarını araştırmak için fiziksel olarak zaman kaybedemem. Dijital büyüleri "küresel" olanlarla değiştirmek ve bu büyüleri çeşitli işlevlerde düzeltmek tamamen mekanik olarak (derine girmeden) benim için daha kolay.


Leonidas nereye gitti?
 
O ticaret yapar. Zamanının olmadığını iddia ediyor. Altın-gümüş forma üzerinde keyfi olarak "büyükanneler" kesmek.
 
Rita :
O ticaret yapar. Zamanının olmadığını iddia ediyor. Altın-gümüş forma üzerinde keyfi olarak "büyükanneler" kesmek.
Pekala, komodine para koyarsa, tahkime inanıyormuş gibi yapın.
 
Evet, yaptığım şey bu...

--------------------------

Ve muhtemelen son soru.

İşte kodun bir kısmı:

 //double getNextOrderPriceByNum( int TTTT, double DDDD) {

   if (StepSum == FALSE && StepMultiply == FALSE) {

       switch (TTTT) {
       case 101 :
         return (DDDD - Step * Point );
       case 102 :
         return (DDDD - Step * MathPow ( 1 , 1 ) * Point );
       case 103 :
         return (DDDD - Step * MathPow ( 1 , 2 ) * Point );
      ... ... ...
         
      }
       return ( 0 );
   }

101-102-103.... durumunu Magic_101, Magic_102, Magic_103 -... ile değiştirmek için

Bunu yapmak doğru olur mu:

   if (StepSum == FALSE && StepMultiply == FALSE) {

switch (TTTT) {
for (i= 0 ; i<k; i++)                           {
if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) {
  if (OrderSymbol() == Symbol ())                 {
    double Result ;
    if ( OrderMagicNumber()==Magic_101)  Result = (DDDD - Step * Point );   
    if ( OrderMagicNumber()==Magic_102)  Result = (DDDD - Step * MathPow ( 1 , 1 ) * Point );   
    if ( OrderMagicNumber()==Magic_103)  Result = (DDDD - Step * MathPow ( 1 , 2 ) * Point ); 
                                                    }}}
       return (Result);
                     }
                                                   }
 
Rita :
Evet, yaptığım şey bu...

--------------------------

101-102-103.... ile Magic_101 - Magic_102 - Magic_103 -... ile değiştirmek için

Bunu yapmak doğru olur mu:

yanlış. switch ifadesi hakkında bilgi edinin https://docs.mql4.com/en/basis/operators/switch
Örneğinizde, switch ifadesini if ile değiştirmeniz yeterlidir.

       switch (TTTT) {
       case 101 :
         return (DDDD - - Step * Point );
       case 102 :
         return (DDDD - Step * MathPow ( 1 , 1 ) * Point );
       case 103 :
         return (DDDD - Step * MathPow ( 1 , 2 ) * Point );
      }

ile ikame edilmiş

       if (TTT==Magic_ 101 ) return (DDDD - - Step * Point );
       else if (TTT==Magic_ 102 ) return (DDDD - Step * MathPow ( 1 , 1 ) * Point );
       else if (TTT==Magic_ 103 ) return (DDDD - Step * MathPow ( 1 , 2 ) * Point );
      ... ... ...
 
Açıklama için teşekkürler.