OnBookEvent aboneliği bazen düşüyor - böyle bir şey var mı? - sayfa 2

 
Stanislav Korotky :

"Bir Uzman Danışmanın bir etkinlik alma aboneliğinden çıkması yeterlidir ve diğer tüm Uzman Danışmanlar da etkinliği almayı durdurur"?

Bu hiç akıllıca değil
 
Stanislav Korotky :

Ancak buna değip değmeyeceği tahmin edilmeye devam ediyor - analojiyle, "diğer tüm uzmanlar da almayı bırakacağından, bir uzmanın bir etkinlik alma aboneliğinden çıkması yeterlidir" diye devam edin? Bunun olamayacağına, bir hata olacağına (veya olduğuna) inanıyorum.

İlk olarak, kontrol etmek kolaydır. Kendim yapardım ama sadece bir FORTS hesabım var ve hafta sonları kapalı.

Ama eğer öyleyse, durum komik görünüyor. Expert Advisor'ı açtınız, gösterge, abonelikler işe yaradı. Bir uzmanın veya göstergenin bağlantısı kesildi - aboneliğin düştüğünü zaten yazdılar. Bu, yayıncılığın hala tam tersi şekilde çalıştığını gösteriyor. Şimdi bir şeyin değiştiğini hayal edin (örneğin, geçmiş değişti ve gösterge yeniden hesaplandı). Ancak OnInit ve OnDeinit'in keyfi olarak çağrılabileceğini biliyoruz. Bazen doğru, bazen tam tersi. Grafik önce göstergenin yeni sürümünü çağırır ve ardından eskisini kaldırırsa ne olur? Abonelik iptal edilecek. Bu, "sessiz bir şekilde boşaltma" işlemine benzer olacaktır. Sipariş defterinin fiyat teklifi almaması durumunda siparişi ve mesajı kontrol etmek için baskıları OnInit ve OnDeinit'e koymanızı tavsiye ederim. Belki sorun çözülür.

 
Sergey Savinkin :

İlk olarak, kontrol etmek kolaydır. Kendim yapardım ama sadece bir FORTS hesabım var ve hafta sonları kapalı.

Hesabı kontrol etmek için hiç gerekli değildir. CHARTEVENT_OBJECT_CREATE aynı yayın olayı

 
https://yandex.ru/images/search?source=wiz&text=two%20switches%20%20one%20ampul&img_url=https%3A%2F%2Frepair-need.ru%2Fuploads%2Fdico-kebfbf.jpg&pos=3&rpt=simage&lr = 213
Яндекс.Картинки
  • yandex.ru
Результаты поиска по запросу "два выключателя на одну лампочку" в Яндекс.Картинках
 
A100 :
Bu hiç akıllıca değil

belirsiz. her zaman bir bağlantı sayacı ekleyebilirsiniz

 
TheXpert :

belirsiz. her zaman bir bağlantı sayacı ekleyebilirsiniz

Sayaç yok. Ve öyle olsaydı, belgeler onun varlığını ve yalnızca Add\Release için eşleştirilmiş bir çağrının kabul edilebilirliğini açıkça belirtirdi - aksi takdirde sayaç yoldan çıkar ve varlığının anlamı kaybolur

Ve bir bağlantı sayacına ihtiyacınız olduğunu söylerseniz ... o zaman daha ileri gidebilir ve yayını tamamen iptal edebilirsiniz.

 
A100 :

Sayaç yok. Ve öyle olsaydı, belgeler onun varlığını ve yalnızca Add\Release için eşleştirilmiş bir çağrının kabul edilebilirliğini açıkça belirtirdi - aksi takdirde sayaç yoldan çıkar ve varlığının anlamı kaybolur

Eh, şimdi serbest bırakma işlevindeki anlam kayboldu. çünkü herhangi birinin bir etkinliğe aboneliğinizi iptal edebileceği mantık çılgınca bir mantıktır.

 

MarketBookRelease işlevini kullanmamanız için basit bir öneri var.

Teorik olarak bu, terminal ve sunucu kaynaklarının bir kısmını boşa harcar.

Ama pratikte... Bunun gerçek sonuçları olacak mı?

 
TheXpert :

Eh, şimdi serbest bırakma işlevindeki anlam kayboldu. çünkü herhangi birinin bir etkinliğe aboneliğinizi iptal edebileceği mantık çılgınca bir mantıktır.

Bir sayaçla bile, herhangi biri gerektiği kadar serbest bırakma çağrısı yaparak aboneliği iptal edebilir - büyük olasılıkla sayaç gereksiz aramaları algılayamaz ve mevcut sorun, arızalı bir sayaçla ilgili bir soruna dönüşür. Ve eğer akıllı bir sayaç kullanabilseydiniz, o zaman bu şekilde yayını reddetmek mümkün olurdu.
 

Kirpiler için bir şeyi açıklamak anlamsızdır, bu yüzden gerisini yazacağım ;-).

Bir olayı yayınlama kavramı bir şeydir, ancak bir olaya abone olmak ve abonelikten çıkmak için işlevlerin eşleştirilmiş olarak çağrılması ilkeleri başka bir şeydir. Bunlar gerekli olmayan anlam tekniklerinden bağımsızdır ve ideal olarak birbirini etkilememelidir. Olay yayınlansın (kesinlikle bu, iddia edilen verimlilik nedeniyle yapıldı, ancak bu çok tartışmalı ve yanlış uygulanırsa mevcut soruna yol açabilir). Bu, olayların her şeyi almaya başlaması için birinin abone olmasının yeterli olduğu anlamına gelir. Ama tam tersi - birinin abonelikten çıkması yeterlidir ve herkes için krantlar vardır - bu zaten bir tür dar görüşlülüktür.

Bu çok önemli olmasına rağmen (ve yayınla ilgili ibaresi yukarıdaki nedenle bir açıklama değildir) dokümantasyonda abone sayacı ile ilgili bir kelime yoktur. İyi bir not olarak, abone sayısı 0'a düşene kadar yayın devam etmelidir. Aksi takdirde, MQL programlarının (farklı geliştiricilerden olanlar dahil) çalışmalarına zarar vermemek için bir şekilde birbirleriyle iletişim kurmaları gerektiği açıktır, ancak bu saçmalık. Aboneliğin bu şekilde uygulanacağı (en geniş anlamda MT, Windows vb. ile sınırlı olmayan) bir yazılım örneği bilmiyorum.

MarketBookRelease hakkında şu pasaj var:

Обычно эта функция должна вызываться из функции  OnDeinit()  в том случае, если в функции  OnInit()  была вызвана соответствующая функция  MarketBookAdd() .

Yine, belirsiz. Bu, abonelik sayısı üzerinde kontrol sahibi olarak yorumlanabilir. Ancak yazılım özel yorumlara izin vermez.

Toplamda, IMHO, uygulama bir komisyondur (MQL düzeyinde kontrol etmek ve yeniden abone olmak gerekir), belgeler çamurlu. Kötü niyetli veya tamamen kötü kodun, bir sayaçla bile başkalarının aboneliklerini öldürebileceği iddiası tamamen alakalı değildir. Tüm bu tür komut dosyaları, terminaldeki bir dizi başka yere zarar verebilir (örneğin, diğer insanların nesnelerini silmek, diğer insanların konumlarındaki öldürme duraklarını vb., zaten bir milyon kez oldu). Bu kadar açık bir şekilde domuz tezahürleri hakkında konuşmak anlamsızdır - kullanıcı disiplini, başka birinin kodunu (varsa) yeniden okumak veya bir demoda kontrol etmek dışında hiçbir şey tarafından engellenemezler. Şimdi sorun, doğru yazılmış kodun artık normal şekilde çalışamamasıdır.

Bu mekanizma doğru bir şekilde yapıldıysa, elbette kimse yayıncı/abone modelini iptal etmedi. Kesinlikle performansı etkilemez.

Neden: