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

 
Marat Sultanov :
Anlamadığım bir kod bölümü var. Kendin düzeltmen gerekiyor.


Ne olduğunu gösterebilir misin...

 
Rafael Sahibgareev :


Ne olduğunu gösterebilir misin...


Kodu indirin - Marat Sultano orada yazdı, bu net değil.
 

Marat, kodla ilgili yardımın için teşekkürler ......

Başka bir soru, lütfen bana böyle bir kod parçası için bir döngünün nasıl düzgün bir şekilde düzenleneceğini gösterin ......

 //--- цикл расчета 
      
        {
        
         //--- если предыдущая свеча имеет параметры больше MSC
         if (IsLossCandle)
             if (ASSHighBuf[i- 1 ]>=max_size_candel)
               BufferLossCanle[i]=low[i- 1 ];
                 {
                   if (IsTopShadow)
                     if ((ASSOpenBuf[i- 1 ]==ASSCloseBuf[i- 1 ]) && IMaDifBuff[i]-IMaDifBuff[i- 1 ]> 0 || (ASSLowBuf[i- 1 ]== 0 && IMaDifBuff[i]-IMaDifBuff[i- 1 ]> 0 ))
                        BufferTop[i]=low[i- 1 ];
                   if (IsLowerShadow)
                     if ((ASSOpenBuf[i- 1 ]==ASSCloseBuf[i- 1 ]) && IMaDifBuff[i]-IMaDifBuff[i- 1 ]< 0 || (ASSLowBuf[i- 1 ]== 0 && IMaDifBuff[i]-IMaDifBuff[i- 1 ]< 0 ))
                        BufferLower[i]=high[i- 1 ];
                 }
        }


//--- return value of prev_calculated for next call 
   return (rates_total);
  }
 
Rafael Sahibgareev :

Marat, kodla ilgili yardımın için teşekkürler ......

Başka bir soru, lütfen bana böyle bir kod parçası için bir döngünün nasıl düzgün bir şekilde düzenleneceğini gösterin ......

Bunun gibi bir şey:

 //--- цикл расчета
   const int Limit = fmax (prev_calculated, 1 );

   for ( int i=Limit; i<rates_total; ++i)
   {
       //--- если предыдущая свеча имеет параметры больше MSC
       if (IsLossCandle)
      {
         if (ASSHighBuf[i- 1 ]>=max_size_candel) BufferLossCanle[i]=low[i- 1 ];

         if (IsTopShadow)
         {
             if ((ASSOpenBuf[i- 1 ]==ASSCloseBuf[i- 1 ] && IMaDifBuff[i]-IMaDifBuff[i- 1 ]> 0 ) || (ASSLowBuf[i- 1 ]== 0 && IMaDifBuff[i]-IMaDifBuff[i- 1 ]> 0 ))
            {
               BufferTop[i]=low[i- 1 ];
            }
         }

         if (IsLowerShadow)
         {
             if ((ASSOpenBuf[i- 1 ]==ASSCloseBuf[i- 1 ] && IMaDifBuff[i]-IMaDifBuff[i- 1 ]< 0 ) || (ASSLowBuf[i- 1 ]== 0 && IMaDifBuff[i]-IMaDifBuff[i- 1 ]< 0 ))
            {
               BufferLower[i]=high[i- 1 ];
            }
         }
      }
   }

//--- return value of prev_calculated for next call 
   return (rates_total);
}

Kodunuzun yalnızca bir kısmı beni şaşırttı:

 if (ASSHighBuf[i- 1 ]>=max_size_candel)
   BufferLossCanle[i]=low[i- 1 ];
     {

Kıvırcık parantez neden orada? Uygulamadığınız bir plan var mıydı? ( else koşullu ifadeyi ima ediyorum)

 

Marat, bir kez daha sonsuz şükran, yoksa kodu en son 22 yıl önce okulda yazdım.

Burada, else ifadesi pahasına, sonraki dört ifade için bir kesinti gibi, aptalca nereye yapıştıracağımı düşünüyordum .....

Sanırım kendim çözeceğim....

Marat, lütfen bana söyle veya bir bağlantı kur, böyle bir hesaplamayı "döngü" kullanmadan düzenlemek mümkün mü .....

 
Rafael Sahibgareev :

Marat, bir kez daha sonsuz şükran, yoksa kodu en son 22 yıl önce okulda yazdım.

Burada, else ifadesi pahasına, sonraki dört ifade için bir kesinti gibi, aptalca nereye yapıştıracağımı düşünüyordum .....

Sanırım kendim çözeceğim....

Marat, lütfen bana söyle veya bir bağlantı kur, böyle bir hesaplamayı "döngü" kullanmadan düzenlemek mümkün mü .....

Afedersiniz, amacınızı öğrenebilir miyim, tartışılan kod parçasından hangi sonucu almak istiyorsunuz? Niyetini anladıktan sonra sana yardım etmem çok daha kolay olacak :)
 

Döngüyü meraktan sordum ...... Bu mümkün mü ......

Kendi başına kurnaz değildir, ilk operatör "eğer" yasak çalışırsa, o zaman yön sınıflandırma operatörleri çalışmaz .......

Ayrıca, gelecekte kodu değiştirmeyi planlıyorum, sıfır çubuk üzerinde çalışarak işaretlemeyi,

Böylece bu çok yasak sınıflandırıcı, yayılma ek olmadan .... göstergesinin ötesine geçtiğinde o kene üzerinde görünür. ölçekleme kümeleme filtreleri....

Ve genel olarak, anladığım kadarıyla, tüm kalıplar kenelerde yaşıyor ......

 

Çubuklardan geçmek için bir döngü gereklidir. Yalnızca son 1 veya 2 çubuk için okumaya ihtiyacınız varsa, o zaman döngü olmadan yapabilirsiniz, ancak bir düzine veya daha fazla çubuk için bir hesaplama yapmanız gerekiyorsa, bir döngü kullanmak daha mantıklı, değil mi?

Döngüleri reddederek, kendinizi Çin koduna mahkum ediyorsunuz :)

 

Raphael, şu sırayla okumanı tavsiye ederim:

  1. Koşullu if-else ifadesi
  2. döngü ifadesi için
  3. while döngüsü ifadesi
  4. devam beyanı
  5. break ifadesi

Pekala, eğer kendinizi kaptırırsanız, o zaman şunları araştırın:

  1. operatörler
  2. Dil Temelleri
Uygulamada uygulama sıklığına göre dağıttım. Karmaşık bir şey yok, sadece özü anlamaya yetecek kadar.


 

Tavsiye ve tavsiyeler için teşekkürler, bugün çok geç ve yarın yine evet, yardımları ve makaleleri inceleyeceğim....

Göstergede, open[0]........ dahil olmak üzere yalnızca son üç çubukla gerçekten ilgileniyordum.

Daha sonra, muhtemelen 15-20 ..... daha fazla parçaya ihtiyacınız olacak ..... burada döngüler olmadan yapamazsınız .....

Yardımlarınız ve desteğiniz için tekrar teşekkürler.....