"MQL5 Cookbook: BookEvent İşleme" makalesi için tartışma

 

Yeni makale MQL5 Cookbook: BookEvent İşleme yayınlandı:

Bu makale, Piyasa Derinliği olayı - BookEvent'i ve işleme prensibini ele almaktadır. Piyasa Derinliği durumlarını işleyen MQL programı örnek teşkil etmektedir. Nesne yönelimli yaklaşım kullanılarak yazılmıştır. İşleme sonuçları panel ve Piyasa Derinliği seviyeleri olarak ekranda görüntülenir.

Belgelere göre, bu olay Piyasa Derinliği statüsü değiştiğinde oluşturulur. BookEvent'in bir Piyasa Derinliği olayı olduğunu kabul edelim.

Piyasa Derinliği, yön (satma ve alma), fiyat ve hacim bakımından farklılık gösteren bir dizi talimattır. Piyasa Derinliğindeki fiyatlar piyasa fiyatlarına yakındır, bu nedenle en iyisi olarak kabul edilir.

Şek.1 MetaTrader 5'te Piyasa Derinliği

Şek.1 MetaTrader 5'te Piyasa Derinliği

MetaTrader 5'teki "talimat defteri", "Piyasa Derinliği" olarak adlandırılır (Şekil 1). Piyasa Derinliği hakkında ayrıntılı bilgi, İstemci Terminali Kullanıcı Kılavuzunda bulunabilir.

Pazar Derinliği hakkında bilgi veren MqlBookInfo yapısından ayrıca bahsedilmelidir.

struct MqlBookInfo
  {
   ENUM_BOOK_TYPE   type;       // order type from the ENUM_BOOK_TYPE enumeration
   double           price;      // price
   long             volume;     // volume
  };

Bu üç tane alan içermektedir. Talimat yapısı işlendiğinde, talimatın türü, fiyatı ve hacmi ile ilgili veriler elde edilebilir.

Yazar: Denis Kirichenko

 

Bu makale için teşekkürler.

Hata hakkında biraz:

Все программы, работающие по данным стакана, по форме будут являться советниками, ведь обработчик события BookEvent есть только в советниках. Правда, можно сделать связку "советник-индикатор", где истинный индикатор сможет принимать данные от советника и обрабатывать состояние стакана.

Bu doğru değil, gösterge OnBookEvent'i de işleyebilir.

 

angevoyageur:

Hata hakkında biraz:

Bu doğru değil, gösterge OnBookEvent'i de işleyebilir.

Alain, mesaj için teşekkürler. Evet, bu doğru, yanılmışım. Göstergelerde de çalışıyor ... Bir gösterge oluştururken, aralarında OnBookEvent () bulunmayan işleyicilerin listesine güvendim.

Ve en önemli şey, Dokümantasyonun söylediğidir:

OnBookEvent() işlevi BookEvent olayının bir işleyicisidir. BookEvent olayı, yalnızca Piyasa Derinliği durumu değiştiğindeUzman Danışmanlar için oluşturulur .


 
denkir :

Alain, mesajın için teşekkürler. Evet, doğru, yanılmışım. Göstergelerde de çalışıyor ... Bir gösterge oluştururken, aralarında OnBookEvent () bulunmayan işleyici listesine güvendim.

Ve en önemli şey, Dokümantasyonun söylediğidir:

Doğru, dokümantasyon düzeltilmelidir. ServiceDesk'e bu konuda yazıyor musunuz?
 
angevoyageur:
Doğru, belgelerin düzeltilmesi gerekiyor. Bu konuda ServiceDesk'e yazıyor musunuz?
Hayır, henüz yazmadım... Yazacağım ve makale materyalinde değişiklikler yapacağım...
 

Sadece bilgi için, bu makalede küçük bir hata var :

All programs working with Depth of Market data will have a form of an Expert Advisor, as only Expert Advisors feature the event handler of BookEvent. There is a possibility, however, to write an "Expert-Indicator" pair , where the indicator can receive data from the EA and process the Depth of Market state.

Bu doğru değil, göstergeler BookEvent'i de işleyebilir. Bu hata bir dokümantasyon hatasına dayanmaktadır ve yakında düzeltilmelidir. Makalenin yazarı ve ServiceDesk ile iletişime geçilmiştir.

 

İyi günler, makale için teşekkürler, çok faydalı!

böyle bir soru, diyelim ki BookEvent olayını işliyorum ve işleyicim siparişleri silecek, yerleştirecek ve bu da bu olayı tekrar başlatacak..... o zaman sipariş verme (silme) için son tarih ve yeni bir BookEvent olayı tekrar oluştuğu anda, en baştaki prosedürüm kesintiye uğrayacak mı? çünkü kod yürütmesinin sona ulaşmadığını fark ettim.... her şey yürütülmez ... Umarım fikri netleştirmişimdir ))

 
thejobber:

İyi günler, makale için teşekkürler, çok faydalı!

böyle bir soru, diyelim ki BookEvent olayını işliyorum ve işleyicim siparişleri silecek, yerleştirecek ve bu da bu olayı tekrar başlatacak..... o zaman sipariş verme (silme) için son tarih ve yeni bir BookEvent olayı tekrar oluştuğu anda, en baştaki prosedürüm kesintiye uğrayacak mı? çünkü kod yürütmesinin sona ulaşmadığını fark ettim.... her şey yürütülmez ... Umarım kendimi açıkça ifade etmişimdir))

Görüşünüz için teşekkürler!

Hayır, bir olay işlenirken, yeni bir olay oluşturulduğunda program kontrolü otomatik olarak başka bir işleyiciye aktarılmaz... Bunu Print() fonksiyonu ile kontrol edebilirsiniz ( ve bir duraklama Sleep() eklemek daha iyidir).

"Olay kuyruğu" diye bir kavram vardır.

Dokümantasyona göre:

Program sadece üzerinde çalıştığı grafikten olay alır. Tüm olaylar alınma sırasına göre birbiri ardına işlenir. Kuyrukta zaten bir NewTick olayı varsa veya bu olay işleniyor durumundaysa, yeni NewTick olayı mql5-program kuyruğuna konmaz. Benzer şekilde, mql5-program kuyruğunda zaten bir ChartEvent olayı varsa veya bu olay işleniyorsa, bu türden yeni bir olay kuyruğa konmaz. Zamanlayıcı olayları da aynı şemaya göre işlenir - kuyrukta bir Zamanlayıcı olayı varsa veya zaten işleniyorsa, yeni bir Zamanlayıcı olayı kuyruğa alınmaz.

Olay kuyruklarının sınırlı ancak yeterli bir boyutu vardır, bu nedenle doğru yazılmış bir program için kuyruğun taşması olası değildir. Kuyruk taşarsa, yeni olaylar kuyruğa alınmadan atılır.

 

Olay kuyruklarının sınırlı ancak yeterli bir boyutu vardır, bu nedenle doğru yazılmış bir program için kuyruk taşması olası değildir. Kuyruk taştığında, yeni olaylar kuyruğa alınmadan atılır.

Yani korkularım çok da yersiz değilmiş)) En iyi fiyatları her zaman yığında tutmak için usd\rub vadeli işlemleri için bir spreader yazdım.... o zaman kesinlikle kuyrukta bir taşma olacaktır, çünkü bahis saniyede birçok kez güncellenir ve bu, oraya bir şey koyduğum, sildiğim gerçeği olmadan ... ve benimle kesinlikle zaman içinde olmayacak..... ve bu sadece demo ... ve gerçek piyasada çılgın bir bahis var))

düşüncelerimi doğru yöne yönlendirdiğiniz için teşekkürler )

 

İyi günler. Çok bilgilendirici bir makale. Benim şöyle bir sorum var.

Bir enstrüman üzerinde gerçekleştirilen işlemleri, gerçekleştirildikleri emir türüne (piyasa/limitli) göre filtreleme görevi var.

Bu görevi çözmek için OnBookEvent olaylarını ve OnTick olaylarını nasıl bağlayabilirim, yani anlaşmaya hangi tür emirlerin dahil olduğunu nasıl belirleyebilirim? Anladığım kadarıyla, bu görev yalnızca OnBookEvent aracılığıyla çözülemez.

 

Rubick:

...Bu sorunu çözmek için OnBookEvent olayları ile OnTick olayları nasıl ilişkilendirilir, yani işlemde hangi tür emirlerin yer aldığı nasıl belirlenir? Anladığım kadarıyla, böyle bir görev yalnızca OnBookEvent aracılığıyla çözülemez.

Büyük olasılıkla bir bardağa değil, piyasa işlemlerinin bir işleyicisine ihtiyacınız var.