Alım-satım fırsatlarını kaçırıyorsunuz:
- Ücretsiz alım-satım 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
Orada bir şeyin deposu (IMHO'nun kaynak kodu olarak adlandırılması zor ) ve dokümantasyon
Eleman çerçevelerinin rengini programlı olarak değiştirme ve bunları parametre değerleriyle ilişkilendirme özelliği eklendi. Bu, girilen değerlerin risk seviyesini hızlı bir şekilde anlamaya yardımcı olan bilgilendirici ve kullanışlı bir göstergedir. Pratik ve net olduğu ortaya çıktı. Ayrıca, belirlenen limitlerin aşılması durumunda uyarı pencereleri görünür.
Birkaç örnek:
Yarın örneklerle ve kodla üzerinden geçeceğiz.
Kademeli parametre sınırı koruması ve kullanıcı uyarılarının uygulanması konusuna devam etmeden önce, bundan hemen önce gelen başka bir konudan bahsetmeliyiz. Yani, parametre ön ayarı.
İyi bilinenle başlayacağım: çoğu MQL programında giriş kategorisinde değişkenler bulunur. Bunlar global seviyede beyan edilir ve tek bir ayar penceresinde görülebilir. Bu pencere programın başlangıcında görünür ve eğer böyle bir ihtiyaç ortaya çıkarsa kullanıcı "harici" değişkenlerin başlangıç değerlerini değiştirebilir. Ancak bundan önce, kullanıcı harici değişkenleri programın içinde başlatır. Mesele şu ki, program ön ayarları evrensel değildir ve bu nedenle her başlangıçta ayarlama imkanı gerektiren bir değişken kategorisi vardır. Ayrıca, programın yürütülmesi sırasında harici değişkenlere manuel olarak erişme girişiminin imkansız olduğu ve yeniden başlatma gerektirdiği de bilinmektedir. Grafiksel bir arayüz ile bu gereklilik ortadan kaldırılmıştır. Program ayarları çalışma zamanında açılabilir.
Bununla birlikte, başlangıçta program parametrelerine başlangıç değerlerini ayarlamak için hala aynı gereklilik vardır.
Eğer bir grafik arayüzümüz varsa , girdi tipindeki değişkenleri bildirmenin bir anlamı yoktur , çünkü artık standart ayarlar penceresine ihtiyacımız yoktur , ancak özü aynı kalır. Girdi değişkenleri yerine, kontrollerin parametrelerine başlangıç değerleri ayarlamalıyız.
Programın başlatılmasında , başlangıç değerlerini standart pencereye değil , kendi pencerelerimize ayarlayan bir işlev çağırmalıyız. Bir seçenek olarak, bu, arayüz oluşturma aşamasında, V_CURRENT değerleri veya ON/OFF durumları vb. ayarlandığında KIB-yapıcıda yapılabilir, ancak şimdi öğeleri programlı olarak başlatmak mümkündür. Artık elemanların yapıcıda ve programda başlatılmasını birleştirmek mümkündür.
Bu nedenle, bu işi yapmak için OnInit() 'ten çağrılan özel bir fonksiyona ihtiyacımız var.
Bu fonksiyon tam olarak ne yapacaktır:
Bu fonksiyon nasıl çağrılacak?
Ben buna Initialize() derdim, ancak herkes kendi varyantını bulabilir.
Önemli olan, bu işlevin herhangi bir arayüz Uzman Danışmanında olması gerektiğidir. Bir Uzman Danışmanın OnTick () işlevi veya bir göstergenin OnCalculate () işlevi ile karşılaştırılabilir. Bunu anlamak önemlidir.
İşlev hangi değeri döndürecek?
İşlev void türüne sahip olacaktır. Bir değer döndürmeye gerek yoktur. Çağrıldığında, gerekli pencereleri açacak, öğelerin parametrelerini başlatacak ve muhtemelen bazı özellikleri önceden ayarlayacaktır. Temelde hepsi bu kadar. Teorik olarak, içinde ilk parametre sınırlarını ayarlayabilirsiniz, ancak değer kontrolünün API dosyasından ve zamanlayıcıdan eleman olaylarında çağrılan ayrı bir işlevde uygulanacağını düşünüyorum. Muhtemelen bir sonraki sürümde kontrol çağrılarının bir çıktısını yazacağım.
*Şu anda arayüz Uzman Danışmanları kavramının yeni oluşmakta olduğunu ve önümüzde birçok keşif olduğunu dikkate almak önemlidir.
İşte mevcut demo projesi bağlamında bir arayüz Uzman Danışmanının başlatma işlevinin bir örneği:
1. İşlev çağrısı:
2. Fonksiyon uygulaması:
Şimdiye kadar, fonksiyonun yapısını aşağıdaki gibi görüyorum. Çok basit bir işlev. Pencereleri açar ve eleman parametrelerine gerekli değerleri gönderir. Elemanların başlatılmasını ve pencerelerin açılmasını yer yer değiştirmek mümkündür, çünkü pencereleri açmak, ek yeniden çizim yapmadan elemanların gerekli değerlerini hemen gösterecektir. Ancak, bunlar küçük şeylerdir.
O zaman ana konuya geçelim: parametrelerin adım adım korunmasının uygulanması.
14.Parametre sınırlarının adım korumasının gerçekleştirilmesi:
//------------------------------------------------------------------------------------------------------------
Ayarları önceden belirlenmiş sınırlar içinde kontrol etme mantığını yazmak ve bir uyarı sistemi oluşturmak:
//-----------------------------------------------------------------------------
Devam edelim:
1. Seçilen elemanların parametrelerinin ilk değerlerini ayarlayın ve gerekli pencereleri açın. Bunu yapmak içinInitialise() fonksiyonunu yazalım ve _OnInit() fonksiyonu içinde çağıralım.
Sonuç: Gerekli pencereler açılır ve hedef elemanlara ilk değerler atanır.
2. API dosyasını açın ve elemanların bağlantısınıyazın.Her eleman durumunda, çağrıları yazın ve değeri zincirdeki diğer hedef elemanlara geçirin :
3. Bağlantıyı test edin:
Sonuç: eleman değerleri amaçlandığı gibi bağlanmıştır.
4. Eleman grubumuzun parametrelerini kontrol etmek için bir fonksiyon yazın: void Risk_management_group_1().
Risk_management_group_1() fonksiyonunu _OnInit() fonksiyonundan çağırın:
Sonuç: amaçlandığı gibi çalışıyor, ancak giriş alanına bir değer girerken, uyarı penceresi göründüğünde girilen değeri sıfırlamıyor(iyileştirme gerektiriyor).
(*Ayrıca - çerçeve renginin ayarlanması güncellemede eklendi, ancak mevcut sürümde eksik).
Bir sonraki görev, "İptal" düğmesine basarak girilen parametreleri iptal etmeyi düşünmektir.
Bu çok zor bir görev, ancak zaten kısmen uyguladım. Önceki işlevselliği geri getirmeye çalışacağım.
Son dökümde, belirlenen parametre limitlerinin aşılması durumunda renkli risk göstergesinin nasıl uygulanacağını ve engelleme pencerelerinin nasıl açılacağını gösterdim. Ancak, beklemediğim iki sorun keşfedildi.
1. Risk yönetimi fonksiyonu, tehlikeli bir seviye geçildiğinde ilk uyarı penceresini açıyor, ancak imleci o anda elemanın üzerinde basılı tutarsanız, değer büyümeye devam ediyor ve bir sonraki koşullu seviyeye ulaşıyor. - Kritik.
2. Kritik değer geçildiğinde son uyarı penceresi açılır, ancak kullanıcı farenin sol tuşunu basılı tutmaya devam ederse değerin değişmesini durdurmaz.
3. Kullanıcı fare düğmesini bırakırsa ve uyarı pencerelerini kapatmak isterse, bunu yapamaz. Daha doğrusu, yapamaz. Bunun nedeni, iki engelleme penceresinin birbirini engellemeye başlamasıdır. Engelleme pencerelerinden biri açıkken kolayca kapatılabilir, ancak iki pencere aynı anda açık olduğunda, arayüzdeki başka hiçbir şey çalışamaz. Program hala çalışmasına rağmen bir sersemlik içine girer.
Aşağıdaki resim bunun nasıl olduğunu göstermektedir:
Daha sonra ayar pencerelerinin karşılıklı kilitlenme sorunlarını giderdim ve artık pencereler birbirine karışmıyor. Kilitleme işlevini birbirleriyle çakışmadan birlikte gerçekleştiriyorlar.
Şimdi, sol fare düğmesine basılsa ve öğe etkin olsa bile, uyarı penceresinin parametre değerindeki değişiklikleri otomatik olarak durdurması için bunu yapmam gerekiyor.