Grafik modunda MQL için bir GUI oluşturma. - sayfa 13

 
Алексей Барбашин :

Maxim ve bu çözüm neden daha iyi? Sonuçta, bayrağın durumunu sorgulamak için MQL'de periyodik olarak kontrol etmek de gereklidir. Nerede kazmadığınız ortaya çıkıyor, verileri toplama zamanının geldiğini anlamak için bir şeyin durumundaki değişikliği sürekli izlemeniz gerekiyor. Ve bu parça, dll'nin kendisinde saklanabilir ve orada kontrol edilebilir, ben de öyle yapıyorum. Örneğinizde, bayrağın durumunu döndürmek için örtük bir dll çağrısı var .

Bir bayrağı kontrol etmek çok hızlı bir işlemdir. Bu genellikle en hızlısıdır :-)

ve yukarıdaki örnekte örtük çağrı yoktur:

InitDLL girdi olarak int *flags aldı, onu kendi içinde bir yere kaydetti, bir şeyi sayan bir iş parçacığı oluşturdu ve tamamlandıktan sonra atomic_inc (bayraklar) yapıyor.

EA'nın yalnızca bayrakları[0] kontrol etmesi gerekir.

 
Sadece kontrol etmek için. Bu kilit nokta. Ancak araca "görevin" tamamlandığını bildirmeyi öneriyorum. Yani, kontrol etmek için sürekli kaynak harcamanıza gerek kalmaması için. Bir uyarı geldi - veri alındı.
 
Maxim Kuznetsov :

Bir bayrağı kontrol etmek çok hızlı bir işlemdir. Bu genellikle en hızlısıdır :-)

ve yukarıdaki örnekte örtük çağrı yoktur:

InitDLL girdi olarak int *flags aldı, onu kendi içinde bir yere kaydetti, bir şeyi sayan bir iş parçacığı oluşturdu ve tamamlandıktan sonra atomic_inc (bayraklar) yapıyor.

EA'nın yalnızca bayrakları[0] kontrol etmesi gerekir.

Sadece burada, bayrağın basit bir kontrolü yeterli değildir, çünkü iş parçacıkları arası senkronizasyon gereklidir, atomik veya muteksin alınması gereken engeller elbette her CPU için geçerli değildir.


Alexey Barbashin :
Sadece kontrol etmek için. Bu kilit nokta. Ancak araca "görevin" tamamlandığını bildirmeyi öneriyorum. Yani, kontrol etmek için sürekli kaynak harcamanıza gerek kalmaması için. Bir uyarı geldi - veri alındı.
Mutex'ler nasıl uygulanır? Bildiğim kadarıyla bayrakları kontrol edip ayarlayarak. Her durumda, akışta bir yerde bir bayrağı kontrol etmeniz gerekecek.
 
Maxim Kuznetsov :

Bir bayrağı kontrol etmek çok hızlı bir işlemdir. Bu genellikle en hızlısıdır :-)

ve yukarıdaki örnekte örtük çağrı yoktur:

InitDLL girdi olarak int *flags aldı, onu kendi içinde bir yere kaydetti, bir şeyi sayan bir iş parçacığı oluşturdu ve tamamlandıktan sonra atomic_inc (bayraklar) yapıyor.

EA'nın yalnızca bayrakları[0] kontrol etmesi gerekir.

Max, geri aramayla durum açık. elimizdekileri kullanacağız ve geliştiricilerin ters etkileşim olasılığını eklemesini bekleyeceğiz.

GUI sorununa geri dönmek istiyorum. Neye çekildiği önemli değil. Örneğin ben Sharp'ta, sen Tcl'de yapıyorsun.

Form kendi başına var olduğu sürece hiçbir zorluk yoktur. Ama gerçekten formların kendi başlarına uçmalarını değil, ilgili tablolara bağlı olmalarını istiyorum.

Oluşturulan formun ebeveyni ayarlanırken istenilen grafiğe yerleştirilir. Ancak burada pencereyi çizelgeyle "birleştirme" sorunu ortaya çıkıyor ve çizelge basitçe "yapıştırılmış" formu çiziyor.

Hala MT geliştiricilerinin kapsamı dışında kaldığından, bu sorunu şimdilik çözmeye çalışmanızı öneriyorum.

GUI'lerinizi grafiklere bağlamayı denediniz mi?

 
pavlick_ :

Sadece burada, bayrağın basit bir kontrolü yeterli değildir, çünkü iş parçacıkları arası senkronizasyon gereklidir, atomik veya muteksin alınması gereken engeller elbette her CPU için geçerli değildir.


Mutex'ler nasıl uygulanır? Bildiğim kadarıyla bayrakları kontrol edip ayarlayarak. Her durumda, akışta bir yerde bir bayrağı kontrol etmeniz gerekecek.

Oldukça doğru. Ancak, örneğin OnChartEvent ile çalıştığından, bunun zaten en düşük uygulama düzeyinde olmasına izin verin. Yani, şimdi açıkça programlıyoruz (kontroller), ancak tüm bunları Renat'ın söylediği (sunulan seçenekler) uygulama seviyesine aktarabiliriz.

 
Maxim Kuznetsov :

Doldurdum :-) Veriyorum - MS'ye atabilirsin

066cd265-e2fe-468e-9492-4228e9759e38
8e1040ba-dc3e-4e2a-9208-e3ea8da9ad05
03dcd7cd-4b9b-4ff7-bff0-e0839a0f9d8b
d69f2c8c-de51-4557-8188-4ebb870da7da
a79a8cc6-f785-4268-bc4e-2deda0f1ecd0
f4f59f52-1da8-4f74-a71e-9aec1992674d
85608797-6015-456d-af64-ad7890120372
9289991a-e287-47fb-b595-6d719c1b7dbd
63d3b953-3229-4045-a82a-fc9e7795bb01
c75c4e0f-8320-42df-943c-9aada54b60eb

bir şey olursa, benimle iletişime geç - belki daha fazlasını bulurum

Teşekkürler, geçti, bir dolar kazandım!

 
Alexey Volchanskiy :

Teşekkürler, geçti, bir dolar kazandım!

bu yüzden bir saç kazıyıcıdan çok daha karlı! bir kuruş için perakende rehberi vermeye hazır, onları 1 / on dolara toptan satıyorsunuz. Kâr yalnızca aktarım hızıyla sınırlıdır :-) saniyede kaç kilobayt kılavuz
 
Maxim Kuznetsov :
bu yüzden bir saç kazıyıcıdan çok daha karlı! bir kuruş için perakende rehberi vermeye hazır, onları 1 / on dolara toptan satıyorsunuz. Kâr yalnızca aktarım hızıyla sınırlıdır :-) saniyede kaç kilobayt kılavuz

Cazip, lanet olsun. Kullanılmış GUID pazarını bu şekilde fethediyoruz! Ve tekelci olacağız, bitcoin'de olduğu gibi yapay heyecan yaratacağız ve zenginleşeceğiz!

 
Алексей Барбашин :

Max, geri aramayla durum açık. elimizdekileri kullanacağız ve geliştiricilerin ters etkileşim olasılığını eklemesini bekleyeceğiz.

GUI sorununa geri dönmek istiyorum. Neye çekildiği önemli değil. Örneğin ben Sharp'ta, sen Tcl'de yapıyorsun.

Form kendi başına var olduğu sürece hiçbir zorluk yoktur. Ama gerçekten formların kendi başlarına uçmalarını değil, ilgili çizelgelere bağlı olmalarını istiyorum.

Oluşturulan formun ebeveyni ayarlanırken gerekli grafiğe yerleştirilir . Ancak burada pencereyi çizelgeyle "birleştirme" sorunu ortaya çıkıyor ve çizelge basitçe "yapıştırılmış" formu çiziyor.

Hala MT geliştiricilerinin kapsamı dışında kaldığından, bu sorunu şimdilik çözmeye çalışmanızı öneriyorum.

GUI'lerinizi grafiklere bağlamayı denediniz mi?

Dürüst olmak gerekirse, formları çizelgelere bağlamam gerekmiyordu.

Ben sadece kendim için açıkça ayırıyorum - doğrudan grafikle ilgili operasyonel grafikler var (her türlü satır, imza, yazı vb.), bu doğal olarak MT aracılığıyla yapılır.

ve bir yönetim GUI'si var - ayarlar, raporlar, istatistikler. Ve oldukça büyükler ve bunları tablonun içine doldurmak kullanıcıya karşı bir suçtur :-)

Üst öğeyi değiştirmeden bir grafiğin üstüne bir form yerleştirebilirsiniz. sadece aptalca üste yerleştirin ;-) elbette, pencere yöneticisinden formu almanız ve grafik geometrisindeki ve odaktaki değişikliği izlemeniz gerekecek.
Bu "manuel gün batımı" :-) Ama MetaTrader'ın içine girmiyorsunuz ve pencerelerine yeni çocuklar ve kancalar koymuyorsunuz, yani terbiyeli davranıyorsunuz

ve bir DLL'den çağrılan herhangi bir GUI'nin en tatsız özelliği vardır - onu çağıran danışmanlar / göstergeler en ufak bir hapşırmadan periyodik olarak yeniden başlar. Matın formlarının ve şelalelerinin yeniden keşfine yol açan şey..
Belki de uzun zamandır duyurulan "hizmetler" (veya her ne denirse) böyle bir dezavantajdan yoksun olacaktır.

update/ formu yerleştirmek için - RectLabel'i grafikte görüntüleyin ve grafik olayındaki koordinatlardaki değişikliği izleyin. Değiştirirken - formunuzu kesinlikle en üste yerleştirin :-) Sekmeleri değiştirirken formunuzu zamanında gizlemek için pencereyi en aza indirerek bir tef ile biraz dans etmeniz gerekecektir.
 
Alexey Volchanskiy :

Hiçbir şey açıklamadı. Açıkça cevaplayın plz - MT'den * nasıl Sharpe üzerindeki panelden veri alıyorsunuz?

Bir zamanlayıcı anketi ile Bellek Eşleme yoluyla geri bildirim yaptım. Panel yalnızca farklı ayarları ve yavaş hesaplamaların sonuçlarını iletti

Harici bir aracım var, terminalden GUI geri bildirimine ihtiyacım yok.