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

 
Valeriy Yastremskiy # :

Evet, benim durumumda sıfırdan değil, ilkinden başlamanız gerekiyor.) Doğru açıklama.

Niye ya? Sıfır çubuğu, kalanlarla birlikte sola doğru hareket eder. Ve sıfır hariç tüm çubukları kaydırırsanız, sonuç birinci ve ikinci endeksler için iki özdeş değer olacaktır.

PS Verileri kaydırırsak, her zaman boş hücrenin üzerine yazılması gerekir. Aksi takdirde, arka arkaya iki özdeş değer olacaktır.

 
Valeriy Yastremskiy # :

ZYZY, kaymadan önce sıfır değerinin üzerine yazarsa, sıfır indeksinin değerini kaybederiz.

Ben de bundan bahsediyorum!

 
Valeriy Yastremskiy # :

µl olarak halka tamponu nedir

Gibi bir şey

 static int head= 0 ;
for (i=head,count= 0 ;count< ArraySize (A);i++,count++)
  {
   if (i>= ArraySize (A))i= 0 ;
   DoSomething(A[i]);
  }

ya da

 static int head= 0 ;
for (i=head,count= 0 ;count< ArraySize (A);count++)
  {
   if (++i>= ArraySize (A))i= 0 ;
   DoSomething(A[i]);
  }
 
JRandomTrader # :

Gibi bir şey

ya da

dizide µl cinsinden indeks kayması. korkuyla. Çalışması gerektiği halde. Ve bu arada, indeks değişim döngüsünün (ve bu bir döngüdür) ve atama döngüsünün ağırlığı çok fazla farklılık göstermemelidir.

 
Vitaly Muzichenko # :

Nasıl kullanılır, gösterebilir misin?

görev

İşte bitmiş kod, ancak döngü biraz korkutucu

---

Yine, ArrayCopy() içinde bir döngü var ve muhtemelen birden fazla. Bu nedenle, değiştirme kodunun daha kolay ve daha hızlı olması pek olası değildir.

Bu kodda bir dizi belirtmeniz gerekiyor.

 int    ArrayCopy (
   void &        dst_ array[] ,         // куда копируем
   const void &  src_ array[] ,         // откуда копируем
   int           dst_start= 0 ,         // с какого индекса пишем в приемник
   int           src_start= 0 ,         // с какого индекса копируем из источника
   int           count= WHOLE_ARRAY      // сколько элементов
   );

hangi dizinden yazılacağı ve hangi dizinden kopyalanacağı dizi ofsetinin yönüne bağlıdır. Yani, 0 dizininde her zaman yeni, yeni verilere sahip olmanız gerekiyorsa, 0'dan kopyalamanız ve 1'den yazmanız gerekir. Böylece, 0 ve 1 dizinindeki değerler aynı olacaktır ve sonra 0'a yeni bir değer yazın.

Ve ArrayCopy() öğesinin dahili olarak kullanıcı döngüsüyle aynı döngüye sahip olduğundan şüpheliyim. Böylece, belirli bir boyutta belirli bir diziye sahip olarak, onu her tikte birer birer kaydırır ve ardından bir satır olarak görüntülenen gösterge arabelleğine kopyalarız...

 
Lütfen bana burada günlük gerçek koparma işlevi olduğunu söyleyin
 //+----------------------------------------------------------------------------+
//|Определение пробоя дневного фрактала вверх                                  |
//+----------------------------------------------------------------------------+
int BreakdownSignalUpD1()
  {
   int sig=- 1 ;
   double resistD1 = GetNearestUpFractal( PERIOD_D1 );
   if (resistD1 < Ask)
     sig= 0 ;
   if (resistD1 >= Ask)
     sig= 1 ;  
   return (sig);
  }

Ve işte ekranda arızayı gösteren fonksiyon

 ObjectCreate ( "signal100" , OBJ_LABEL , 0 , 0 , 0 , 0 , 0 );
   ObjectSet( "signal100" , OBJPROP_XDISTANCE , 600 );
   ObjectSet( "signal00" , OBJPROP_YDISTANCE , 40 );
   ObjectSetText( "signal100" , DoubleToString (BreakdownSignalUpD1(), 0 ), 18 , "Times New Roman" , clrRed );

Lütfen bana ekranın 0 veya 1 olmadığı, ancak 0'ın "EVET" olduğu 1'in "HAYIR" olduğu şekilde nasıl yapacağımı söyleyin

teşekkürler

 
EVGENII SHELIPOV # :
Lütfen bana burada günlük gerçek koparma işlevi olduğunu söyleyin

Ve işte ekranda arızayı gösteren fonksiyon

Lütfen bana ekranın 0 veya 1 olmadığı, ancak 0'ın "EVET" olduğu 1'in "HAYIR" olduğu şekilde nasıl yapacağımı söyleyin

teşekkürler

 string boolToStr( bool value ) { return (( value ) ? "true" : "false" ); }
 
EVGENII SHELIPOV # :
Lütfen bana burada günlük gerçek koparma işlevi olduğunu söyleyin

Ve işte ekranda arızayı gösteren fonksiyon

Lütfen bana ekranın 0 veya 1 olmadığı, ancak 0'ın "EVET" olduğu 1'in "HAYIR" olduğu şekilde nasıl yapacağımı söyleyin

teşekkürler

ObjectSetText( "signal100" ,BreakdownSignalUpD1()== 0 ? "Да" : "Нет" , 18 , "Times New Roman" , clrRed );

Bunun gibi bir şey.

 
JRandomTrader # :

Bunun gibi bir şey.

teşekkürler

 
Alexey Viktorov # :

Bu kodda bir dizi belirtmeniz gerekiyor.

hangi dizinden yazılacağı ve hangi dizinden kopyalanacağı dizi ofsetinin yönüne bağlıdır. Yani, 0 dizininde her zaman yeni, yeni verilere sahip olmanız gerekiyorsa, 0'dan kopyalamanız ve 1'den yazmanız gerekir. Böylece, 0 ve 1 dizinindeki değerler aynı olacaktır ve sonra 0'a yeni bir değer yazın.

Ve ArrayCopy() öğesinin dahili olarak kullanıcı döngüsüyle aynı döngüye sahip olduğundan şüpheliyim. Böylece, belirli bir boyutta belirli bir diziye sahip olarak, onu her tikte birer birer kaydırır ve ardından bir satır olarak görüntülenen gösterge arabelleğine kopyalarız...

Deneyeceğim.

---

Genel olarak, kodum başarıyla çalışıyor, bir saatten fazla zaman geçti