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

 
JRandomTrader # :

Veri iletiminde, bu çok eski zamanlardan beri kullanılmaktadır.

Uygun bir şekilde. Buna katılmamak elde değil. Ancak dediğim gibi, her zaman ne kadar veriyi geri alabileceğinizi düşünmeniz gerekir.

 
Vitaly Muzichenko # :

Bana bir örnek ver, konuyla ilgili olacak

Yükseltme kodu mevcut

Bu kodda çalışmayacaktır, çünkü gösterge arabelleği bizden bağımsız olarak yaşıyor ve içinde bir halka arabelleği düzenlemiyoruz - bunu MT'ye açıklamanın bir yolu yok.

 
Mihail Matkovskij # :

ArrayCopy'yi kullanarak yalnızca başka bir diziden veri aktarabilirsiniz. Ama onları hareket ettiremezsiniz.

Kim sana böyle saçma sapan şeyler söyledi?

Nasıl yapıldığını dikkatlice okuyun.

Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum

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

Alexey Viktorov , 2022.02.13 18:21

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...


 
JRandomTrader # :

Bu kodda çalışmayacaktır, çünkü gösterge arabelleği bizden bağımsız olarak yaşıyor ve içinde bir halka arabelleği düzenlemiyoruz - bunu MT'ye açıklamanın bir yolu yok.

Apaçık.

Eh, işe yarıyor - şimdilik çalışmasına izin verin, henüz sonuç yok, Pindos'taki "dostlarımızı" pazar açılana kadar beklememiz gerekiyor ve bu yakında olmayacak.

Bakalım neyin hakemliği yapılabilecek.

 
JRandomTrader # :

ya da

Ve kimse hatayı fark etmedi!

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

Ve kimse hatayı fark etmedi!

hala görmüyorum

 
Vitaly Muzichenko # :

hala görmüyorum

kullanımdan sonra döngünün sonunda artırılmalıdır.

Ancak hem döngünün sonunda hem de bir sonraki döngünün başında dizinin ötesinde bir sapma olup olmadığını kontrol edebilirsiniz.

 
Alexey Viktorov # :

Kim sana böyle saçma sapan şeyler söyledi?

Nasıl yapıldığını dikkatlice okuyun.


Bu özelliğin bu kadar çok yönlü olduğunu bilmiyordum. Ama öyle olsa bile, ne fark eder ki? ArrayCopy, verileri normal bir döngüden daha hızlı taşıyacak mı?

 
Vitaly Muzichenko # :

Şimdi kod çalışıyor, ancak döngü nedeniyle hız konusunda şüpheler var.

O ne olacak?

Arbitraj olasılığı için birkaç mutfağı kontrol etmek istiyorum, gösterge değerlerdeki farkı çizecek, her 100ms'de bir zamanlayıcıda çalışıyor. Kod yürütme gecikmeleri bu durum için kritik öneme sahiptir.

Sonra bilmiyorum. ArrayCopy'yi deneyin. Gibi işlev verileri kaydırabilir. Ancak bunu normal bir döngüden daha hızlı yapması pek olası değildir. Gerçi kim bilir... Denemek zorundasın.

 
Mihail Matkovskij # :

Sonra bilmiyorum. ArrayCopy'yi deneyin. Gibi işlev verileri kaydırabilir. Ancak bunu normal bir döngüden daha hızlı yapması pek olası değildir. Gerçi kim bilir... Denemek zorundasın.

nereden başlayacağımı bilmiyorum