Ticaret fırsatlarını kaçırıyorsunuz:
- Ücretsiz ticaret uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Kayıt
Giriş yap
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Hesabınız yoksa, lütfen kaydolun
Farklı elemanlar içinON, OFF, LOCK_ON, LOCK_OFF, LOCK, UNLOCKdurumlarınıayarlayın
Bir düğmenin açık/kapalı durumu nasıl elde edilir?
Düğmenin açık/kapalı durumu nasıl elde edilir?
Sıradaki konu bu. Bugün bunu ele alacağız.
Bu GUI'nin öğelerinin çizildiğini eklemeliyim, bu nedenle standart durum alma yöntemi ObjectGetInteger(0, "button1", OBJPROP_STATE); çalışmayacaktır.
Ayrıca, düğmeler de dahil olmak üzere öğelerin olaylarının API dosyasına gönderildiğini hatırlatmama izin verin.
Dikkate alınması gereken konuların genel bir listesi:
1. Intellisense listesinde yönlendirme ve doğru pencerenin işlevini seçme.
2. Pencereleri programlı olarak açma ve kapatma.
3. Intellisense listesinde yönlendirme ve doğru pencerede doğru öğeyi seçme.
4. Bireysel eleman özelliklerinin listelerinde gezinme.
5. Bir öğenin ve pencere sarmalayıcı işlevinin adını ayrıştırma.
6. Seçilen bir elemanın parametre değerini kendi türündeki bir değişkene döndürme. Birkaç farklı elemanın üç tipini düşünün.
7. Farklı tipteki elemanların parametrelerinde değerlerin ayarlanması. Değerlerin bu elemanların arayüz pencerelerinde nasıl görüneceğini görelim.
8. Bir elemanın parametre değerlerini döndürmek, bu değeri değiştirmek ve başka bir elemana iletmek. Farklı tipte elemanlar ve değerler düşünün ve farklı tipteki elemanlar arasındaki iletimi farklı pencerelerde test edin.
9. Önceki değeri döndürme (_V_LAST). Son değerin ne zaman ve hangi durumlar için gerekli olduğu (mevcut değerle karıştırılmamalıdır).
10. Farklı eleman türleri için ON/OFF/LOCK_ON/LOCK_OFF/LOCK/UNLOCK durumlarının ayarını test edin.
11. Farklı türlerdeki öğelerin değer değişikliklerini birbirine bağlamayı ve senkronize etmeyi deneyelim: örneğin, düğmeler ve kaydırıcı ile giriş alanı. Bir elemanın (manuel veya yazılım) değeri değiştiğinde, ikinci elemandaki değerin de buna uygun olarak değiştiğini varsayalım.
12. Kaydırıcının ve düğmeli giriş alanının aralık sınırlarını sarmalayıcı işlevler aracılığıyla programlı olarak sıfırlamayı deneyelim. Bunu test edecek zamanım olmadı ama içimden bir ses çalışacağını söylüyor. Yine de bir bakalım.
13. Sarmalayıcı fonksiyonlar aracılığıyla eleman durumlarını döndürmeyi deneyelim. İşlevselliğe dahil edildi, ancak test etmek için zamanım olmadı. Göreceğiz bakalım... Sonuç bilinmiyor.
14. Metin ve eleman tabanları için renkleri alalım ve ayarlayalım. Bu renkleri bazı basit olaylar veya değer sınırları ile ilişkilendirmeyi deneyebiliriz.
15. Yeni API dosyası çıktısında nasıl gezineceğiniz ve okuyacağınız hakkında daha fazla bilgi vereceğim.
//------------------------------------------
Daha önce ele aldığımız konular sarı renkle vurgulanmıştır.
Bugün gözden geçireceğiz:
11. Farklı tipteki elemanların değişen değerlerinin senkronizasyonu (bağlanması): örneğin düğmeli ve kaydırıcılı giriş alanı. Böylece bir öğenin değeri değiştirildiğinde (manuel veya yazılım), ikinci öğedeki değer de buna göre değişecektir.
12. Kaydırıcının ve düğmeli giriş alanının aralık sınırlarını sarmalayıcı işlevler aracılığıyla programlı olarak sıfırlamayı deneyelim. Bunu test edecek zamanım olmadı ama içimden bir ses çalışacağını söylüyor. Yine de bir bakalım.
13. Sarmalayıcı fonksiyonlar aracılığıyla eleman durumlarını döndürmeyi deneyelim. İşlevselliğe dahil edildi, ancak test etmek için zamanım olmadı. Göreceğiz bakalım... Sonuç bilinmiyor.
11. Farklı tipteki elemanların parametrelerinin bağlanması.
Dikkatli bir kişi, çok pencereli bir GUI'de, farklı öğelerin genellikle parametre değerleri, özellikleri ve durumları ile bağlantılı olduğunu fark etmiştir. Örneğin:
//-------------------------------------------------------------------------------------------------------------------------
//-------------------------------------------------------------------------------------------------------------------------
Bir yerlerde görünmez bir element bağlantısı olduğunu düşünürsünüz. Ve gerçekten de var. Ancak bu sadece dışarıdan bakan bir gözlemci için görünmezdir. Bir geliştirici için oldukça açıktır ve bugün bunu ayrıntılı olarak ele alacağız.
1. Elemanların bağlantısının iki yönü vardır:
Bağlantıların teknik olarak gerçekleştirilmesi, bir grafik motorunun varlığı nedeniyle basitleştirilmiştir.
Açıklamama izin verin:
Geleneksel bir Uzman Danışman'da, her parametrekullanıcı tarafından icat edilir, adlandırılır, saklanır ve işlenir . Bu, atlanamayacak rutin bir çalışmadır. Bununla birlikte, bir grafik motor kullanılması durumunda, kurucuda oluşturulan öğeler, depolama konumu ve işleme / geri dönüş işlevi ile birlikte parametreyi otomatik olarak alır. Buna ek olarak, kullanıcı tip, aralık, geçmiş değer vb. gibi özelliklerini de alır. Bu, işçiliği büyük ölçüde basitleştirir. Teorik olarak, GUI öğelerinin hazır parametrelerini diğer kullanıcı parametreleri olarak kullanmak ve bunları doğrudan ticaret mantığına bağlamak mümkündür. Örneğin, lot, takip eden stop, kar alma ve diğerleri, kendi değişkenlerinden değil, değerlerinden sorumlu ayar alanlarından.
Bazı genel sonuçlar:
1. Bir programda grafiksel bir kontrolün varlığı = hazır bir program parametresinin varlığı + özellikleri + değeri döndürme/ayarlama işlevi.
2. Arayüz programının pencerelerine ne kadar çok kontrol yerleĢtirilirse, alım satım mantığına ve alım satım bilgilerinin giriĢ/çıkıĢına o kadar çok parametre dahil olur.
3. Daha fazla ayar ve pencere - daha yüksek kontrol vepiyasa veri çıktısının daha geniş bant genişliği (otomasyona halel getirmeksizin).
4. Piyasa verisi çıktısının kontrolü ne kadar yüksek ve bant genişliği ne kadar geniş olursa, yatırımcının farkındalığı da o kadar iyi olur.
5. Farkındalığın otomasyon ve kontrol ile çarpımı = tüccar fırsatlarının ölçeklendirilmesi.
Otomasyonun genellikle manuel kontrole karşı olduğunu da eklemeliyim. Grafik arayüze sahip olmanın manuel ticaret anlamına geldiğini söylerler. Ancak durum öyle değildir. Yazılım arayüzü otomasyonu dışlamaz ancak genişletir, ona bir "gradyan" ekler - üç seçenek açar: manuel kontrol, yarı otomatik ticaret ve otonom mod.
Bir tüccarın yapması gereken tek şey bir seçenek seçmektir.
Tanrım, bu amaç için bir pencere oluşturmak kolaydır.
//---------------------------------------------------------------------------------------------------
2. Kontrollerin bağlayıcı parametrelerinin teknik uygulamasına geçelim.
Bazı pratik örnekleri ele alalım:
1. Tanıdık bir ayarlar penceresi açalım:
2. API dosyasını açın ve On_Gui_Event() fonksiyonu içinde açılan pencerenin öğelerini bulun:
Hatırlatma: Tüm kontrol olayları On_Gui_Event() fonksiyonuna gelir;
Bu bağlamda, parametre bağlantılarının bir kısmını bu fonksiyonun içine, bir kısmını da gövdesinin dışına yazacağız.
1. "Değeri döndür" butonlu alan (S_EDIT) ile "Değeri yuvarla" sürgüsü (H_SLIDER) arasında bir bağlantı kuralım:
Sonuç: alandaki değeri düğmelerle değiştiriyoruz ve kaydırıcı kendi kendine hareket ediyor.
(*Önemli - kaydırıcı sadece kendi aralığı içinde hareket edebilir (bu durumda, 0'dan 100'e). Aralığın aşılması durumunda değer değişmez, ancak günlükte bir hata görüntülenir).
//----------------------------------------------------------------------------------------------------------------
3. Rol değişimi yapalım. Kaydırıcı, giriş alanındaki değeri kontrol edecektir:
Sonuç: Kaydırıcı tutamacını hareket ettirirken, düğmeli alan eşzamanlı olarak değeri değiştirir.
//----------------------------------------------------------------------------------------------------------------
4. Slider ve butonlu alanın birbirleri tarafından karşılıklı kontrolünü yazalım:
Sonuç: Slider ve input alanları aynı anda birbirini kontrol eder.
//---------------------------------------------------------------------------------------------------
Yarın bu temanın ikinci bölümünü diğer unsurlarla birlikte yayınlayacağım.
Bu şey harika! Zaman buldukça bu konuyu daha detaylı incelemeyi planlıyorum. Çalışmamın mt4 GUI'nin sınırlarını zorladığını sanıyordum ama sizin çalışmanız bir sonraki seviye.
Bu harika bir materyal! Zamanım olduğunda bu konuyu daha ayrıntılı olarak incelemeyi planlıyorum. Çalışmamın mt4 GUI'nin sınırlarını zorladığını düşünüyordum, ancak çalışmanız bir sonraki seviye.
Nazik sözleriniz için çok teşekkür ederim!
11. Farklı tipteki elemanların bağlama parametreleri.
Konunun devamı.
Bölüm 2.
//--------------------------------------------------------------------------------------------------------------------------------
Gösterilen bağlama yöntemini diğer öğelere uygulayıp uygulayamayacağımızı görelim. Örneğin, onay kutularına.
1. En üstteki onay kutusunu kilitleyelim ve altındaki onay kutusunun kilidini açalım:
Bunu yapmak için:
1. API dosyasında"Set an option" onay kutusunu bulalım.
2."Başka bir seçenek belirle" onay kutusu için kilitlenmesi/kilidinin açılması gereken bir fonksiyon çağrısı yazın.
Sonuç: onay kutusu amaçlandığı gibi kilitlenir ve açılır:
//--------------------------------------------------------------------------------------------------------------------------------
2. Şimdi, onay kutusunun kilitlenmesini ve altındaki iki onay kutusunun kilidinin açılmasını sağlayalım:
Sonuç: onay kutusu altındaki iki onay kutusunu kilitler ve kilidini açar:
Dinamiklerde bu şekilde gerçekleşir:
//--------------------------------------------------------------------------------------------------------------------------------
3. Şimdi aşağıdaki şemada gösterilen sorunu çözelim: onay kutuları karşılarındaki açılır listeleri kilitlemeli ve kilidini açmalıdır .
Bunu yapmak için:
Sonuç: onay kutuları açılır listeleri kilitler ve kendilerini ana onay kutusuyla kilitler:
//--------------------------------------------------------------------------------------------------------------------------------
4. Bir sonraki göreve geçelim: açılır listeler, kullanıcı tarafından seçilen değeri başka bir pencerenin bir alanına çevirmelidir.
Bunu yapmak için:
*Sonuç: her iki açılır liste de değerlerini karşı penceredeki giriş alanlarına başarıyla gönderir:
//--------------------------------------------------------------------------------------------------------------------------------
5. Aşağıdaki görev bu şemada gösterilmiştir: Adlarını karşılarındaki giriş alanlarına göndermek için değiştirilen radyo düğmelerine ihtiyacınız vardır.
Bunu yapmak için:
*Önemlinot: radyo düğmeleri geçişlidir çünkü KIB kodunda onlara SWITCH operatörü uygulanmıştır. Bu nedenle, hepsi için ortak bir parametreye sahiptirler ve API dosyasında aynı durumdadırlar.
Sonuç: Düğmelerin değiştirilmesi giriş alanındaki metnin değişmesine neden olur. *Bu seçenekle ilgili küçük bir teknik sorun var. Bir sonraki sürümde düzeltilecektir.
İkinci bölüm tamamlandı.
Üçüncü bölümde tablo ile çalışacağız.
Parametre bağlama konusunun son kısmı.
Eleman parametrelerinin değerlerini tablo hücrelerine aktaralım.
Şema:
Çözüm:
Sonuç: değerler seçilen tablo hücrelerine güvenli bir şekilde yerleştirilir.
Yukarıdaki örneklerden de görebileceğiniz gibi, basit ve kullanışlı bir çözüm geliştirdik. Umarım insanlar bunu faydalı bulur.
Bu, eleman parametrelerini bağlama konusunu sonlandırıyor.
Aşağıdaki konular ele alınmayı beklemektedir:
12. Kaydırıcı ve düğme alanının değer sınırlarının programlı olarak alınması/ayarlanması(_V_MIN, _V_MAX, _V_STEP, _DIGITS).
13. Elemanların durumunu sorgulama(_GET_STATE).
14. Metin ve çerçeve renklerini aralıklı değer sınırlarına bağlama.
15. API dosyasında yönlendirme.
Bir tema ekleme:
16. Mesaj ve uyarı pencerelerinin görünümünün program mantığının gerçekleştirilmesi.