Yeni başlayanlardan sorular MQL5 MT5 MetaTrader 5 - sayfa 967

 

Bir barın açılış fiyatı nasıl doğru bir şekilde alınır ve açılış fiyatının alınması mümkün değilse, çıkış nasıl yapılır?

Birkaç seçenek çizdim. Ama belki daha iyi ve daha doğru bir kod var?

   if ( iOpen ( Symbol (), Period (), 0 )== 0 )
     {
       return ;
     }
     {
       if ( iOpen ( Symbol (), Period (), 0 )!= 0 )
        {
         double    open= iOpen ( Symbol (), Period (), 0 );
        }
     }
   if ( iOpen ( Symbol (), Period (), 0 )== 0.0 )
     {
       return ;
     }
     {
       if ( iOpen ( Symbol (), Period (), 0 )!= 0.0 )
        {
         double    open= iOpen ( Symbol (), Period (), 0 );
        }
     } 
   if ( iOpen ( Symbol (), Period (), 0 )== 0 && iOpen ( Symbol (), Period (), 0 )== 0.0 )
     {
       return ;
     }
     {
       if ( iOpen ( Symbol (), Period (), 0 )!= 0 && iOpen ( Symbol (), Period (), 0 )!= 0.0 )
        {
         double    open= iOpen ( Symbol (), Period (), 0 );
        }
     }     
 
ilvic :

Bir barın açılış fiyatı nasıl doğru bir şekilde alınır ve açılış fiyatının alınması mümkün değilse, çıkış nasıl yapılır?

Birkaç seçenek çizdim. Ama belki daha iyi ve daha doğru bir kod var?

iXXXX işlevlerinin, döngüler olmadan ve diğer iXXXX işlevlerine çağrı yapılmadan yalnızca tek seferlik bir istek yapıldığında kullanılması mantıklıdır.

Açılış fiyatını yalnızca bir kez almanız gerekiyorsa, iOpen yardımına bakın:

Geri dönüş değeri

*** Hata durumunda 0.

Bu yüzden bir fiyat talep etmeniz ve sıfıra eşit olup olmadığını kontrol etmeniz gerekir: sıfır değilse, fiyat alınır, sıfırsa, o zaman bir hata olur.

 double open= iOpen ( Symbol (), Period (), 0 );
if (open== 0.0 )
   retutn;
 
Derleyicinin hata vermemesi için 9. parametreyi hash (#CL) ile nasıl koyacağımı söyler misiniz?
enum Symboll_
  {
   AUDUSD=0,
   NZDUSD=1,
   USDCAD=2,
   USDCHF=3,
   USDJPY=4,
   EURJPY=5,
   EURUSD=6,
   GBPUSD=7,
   #CL   =8
  };
 
Vladimir Karputov :

iXXXX işlevlerinin, döngüler olmadan ve diğer iXXXX işlevlerine çağrı yapılmadan yalnızca tek seferlik bir istek yapıldığında kullanılması mantıklıdır.

Açılış fiyatını yalnızca bir kez almanız gerekiyorsa, iOpen yardımına bakın:

Geri dönüş değeri

*** Hata durumunda 0.

Bu yüzden bir fiyat talep etmeniz ve sıfıra eşit olup olmadığını kontrol etmeniz gerekir: sıfır değilse, fiyat alınır, sıfırsa, o zaman bir hata olur.

Teşekkür ederim. Bir soru daha. Verilen kodda parantez uygulamak gerekli mi yoksa fark yok mu?

   double    open= iOpen ( Symbol (), Period (), 0 );
   if (open== 0.0 )
     {
       return ;
     }
 
xxz :
Derleyicinin hata vermemesi için 9. parametreyi hash (#CL) ile nasıl koyacağımı söyler misiniz?

Bunun gibi:

   enum MySymbol
     {
      symbol_0= 0 , // AUDUSD
      symbol_1= 1 , // NZDUSD
      symbol_2= 2 , // USDCAD
      symbol_3= 3 , // USDCHF
      symbol_4= 4 , // USDJPY
      symbol_5= 5 , // EURJPY
      symbol_6= 6 , // EURUSD
      symbol_7= 7 , // GBPUSD
      symbol_8= 8 , // #CL
     };
 
ilvic :

Teşekkür ederim. Bir soru daha. Verilen kodda parantez uygulamak gerekli mi yoksa fark yok mu?

   double    open= iOpen ( Symbol (), Period (), 0 );
   if (open== 0.0 )
      return ;

Mükemmel çalışacak. Bir grup eylem için parantezler genellikle gereklidir. Bir eylem varsa, o zaman işe yaramazlar.

 int n;
double y;
if (бла-бла-бла)
        n = бла-бла;
else
  {
        n = бла-бла;
        y = бла;
  )
 
Vladimir Karputov :

Bunun gibi:

Çok teşekkürler!

Sonra şöyle denedim ve benim için işe yaramadı:

  enum  Symboll_
  {
   SIM_0,  //AUDUSD
   SIM_1,  //NZDUSD
   SIM_2,  //USDCAD
   SIM_3,  //USDCHF
   SIM_4,  //USDJPY
   SIM_5,  //EURJPY
   SIM_6,  //EURUSD
   SIM_7   //#CL
  };  
 
xxz :

Çok teşekkürler!

Sonra şöyle denedim ve benim için işe yaramadı:

veya bunun gibi:

   enum MySymbol
     {
      symbol_0= 0 , // AUDUSD
      symbol_1= 1 , // NZDUSD
      symbol_2= 2 , // USDCAD
      symbol_3= 3 , // USDCHF
      symbol_4= 4 , // USDJPY
      symbol_5= 5 , // EURJPY
      symbol_6= 6 , // EURUSD
      symbol_7= 7 , // GBPUSD
      symbol_8= 8 , // #CL
     };
   string my_symbol[ 9 ]=
     {
       "AUDUSD" ,
       "NZDUSD" ,
       "USDCAD" ,
       "USDCHF" ,
       "USDJPY" ,
       "EURJPY" ,
       "EURUSD" ,
       "GBPUSD" ,
       "#CL"
     };
 
Vladimir Karputov :

veya bunun gibi:

İhtiyaç duyulan şey de bu!

bu seçeneklerde ya sadece bir seri numarası çıktı ya da SIM_1, ... vb.

 
Çoklu para birimi Uzman Danışmanı test ederken, lotla ilgili sorun ortaya çıkıyor. Sabit bir 0.03 setim var ve test sırasında 0.1 hacimli siparişler görünüyor. Ve hemen grafikte bir düşüş belirir. Sadece ben mi?