"MQL5'te Kendi Grafik Panellerinizi Oluşturun" makalesi için tartışma

 

Yeni makale MQL5'te Kendi Grafik Panellerinizi Oluşturun yayınlandı:

MQL5 programının kullanılabilirliği hem zengin fonksiyonu hem de ayrıntılı bir grafik kullanıcı arayüzü ile belirlenir. Görsel algı bazen hızlı ve istikrarlı çalışmadan daha önemlidir. Standart Kitaplık sınıfları temelinde kendi başınıza ekran panelleri oluşturmanız için adım adım bir kılavuzu aşağıda bulabilirsiniz.

Önce şartları tanımlayalım. Ekran paneli, çizim tamponu olmayan ayrı bir pencere özel ekranını tanımlamak için kullanacağımız bir terimdir. Bu tür bir panel, Terminale gömülü grafik nesneleri kullanarak gerekli bilgileri görüntüler. Bilgiler görüntülenebilir:

  • nümerik olarak,
  • metin olarak,
  • renk olarak,
  • vb.

Gereken her adıma ayrıntılı bir göz atacağız ve aşağıdaki gibi bir grafik panel oluşturacağız:



Yazar: MetaQuotes

 

Şu anda kütüphane grafikteki bir panel için özelleştirilmiştir.

Eğer 2 panel eklemeye çalışırsanız, olaylar yanlış yakalanıyor - elemanlar aynı Id'ye sahip ve üst Id kontrol edilmiyor.

Test etmek için, demo Controls.mq5'i aldım ve paneli çoğalttım - tüm olaylar, olmamaları gerektiği halde her iki panele de çoğaltıldı.

 
"Ekran panelini doldurma" öğesinde
CAppDialog::Create(chart,name,subwin,x1,y1,x2,y2))
yerine
ObjCAppDialog.Create(chart,name,subwin,x1,y1,x2,y2))
gibi bir şey kullanabilir miyiz?
 
Rorschach:
"Ekran panelini doldurma" öğesinde ? gibi bir şey kullanmak yerine ?

İyi günler, belki bana ne yapacağımı söyleyebilirsiniz.

Örneğiniz ekspert Kontrolleri.

Farklı bir döneme geçildiğinde uzman boşaltılıyor, OnDeinit() içinde ExtDialog.Destroy(reason); kaldırmayı denedim.

Diğer dönemlere geçerken diyalog penceresinin çalışmaya devam etmesi için ne yapmam gerektiğini söyleyebilir misiniz?

Документация по MQL5: Программы MQL5 / Выполнение программ
Документация по MQL5: Программы MQL5 / Выполнение программ
  • www.mql5.com
Программы MQL5 / Выполнение программ - Документация по MQL5
 
vdv2001:

İyi günler, belki bana ne yapacağımı söyleyebilirsiniz.

Örneğiniz bir Uzman Danışman Kontrolleridir.

Başka bir döneme geçerken Uzman Danışman boşaltılır, ExtDialog.Destroy(reason); OnDeinit() içinde kaldırmaya çalıştım.

Diğer dönemlere geçerken diyalog penceresinin çalışmaya devam etmesi için ne yapmam gerektiğini söyleyebilir misiniz?

Yorumunuz için çok teşekkür ederim. Hata düzeltildi. Bir sonraki derlemede güncelleyin.
 

IMHO, kütüphaneleri elle oluşturmanın, nerede ve nasıl kullanılacağını bilmenin veya bir şey yanlışsa düzeltmenin daha kolay olduğunu düşünüyorum.

Standart sınıfları kullanmadan bir panel yazma örneği: VirtualTradePad PositionsStyle

 

Bir sınıf oluşturmak için MQL5 Sih irbazını kullanmanın neden derlenmeyen bir kod ürettiği merak edilebilir:


Makalede belirtildiği gibi, bu kod satırını manuel olarak eklemeniz gerekir, bu, kodlayıcı olmayanlar için tasarlanmış bir Sihirbaz için biraz gariptir

#include <Controls\Dialog.mqh>

Ayrıca:

This article will demonstrate how easy it is to create your own display panels in a separate chart subwindow using the Standard Library classes.

Bence bu bir şaka, değil mi?

MQL5 Wizard: Creating Expert Advisors without Programming
  • 2011.01.11
  • MetaQuotes Software Corp.
  • www.mql5.com
Do you want to try out a trading strategy while wasting no time for programming? In MQL5 Wizard you can simply select the type of trading signals, add modules of trailing positions and money management - and your work is done! Create your own implementations of modules or order them via the Jobs service - and combine your new modules with existing ones.
 

"Kodlayıcı olmayanlar için tasarlanmış bir Sihirbaz için bu biraz garip."

Bu sihirbazın kodlayıcı olmayanlar için olduğunu düşünmüyorum.

Bu size (acemi programcı) bir şeyler yaratmak için gerekli ilk adımları attırabilir.

MQL5 çerçevesi çok fazla potansiyel sunuyor ve bunların bir kısmı sihirbaz yaratımlarıyla keşfedilebilir

ancak bu örnek gibi daha karmaşık bir şey elde etmek için her zaman programlamanın temellerine ihtiyacınız olacağını düşünüyorum.

Ancak, bir temel sınıftan türetiyorsanız bariz şeyleri dahil etmenin gerekli olması gerektiğine katılıyorum...

 
ugo58:

" Kodlayıcı olmayanlar için tasarlanmış bir Sihirbaz için bu biraz garip."

Bu sihirbazın kodlayıcı olmayanlar için olduğunu düşünmüyorum.

Bu size (acemi programcı) bir şeyler yaratmak için gerekli ilk adımları attırabilir.

MQL5 çerçevesi çok fazla potansiyel sunuyor ve bunların bir kısmı sihirbaz yaratımlarıyla keşfedilebilir

ancak bu örnek gibi daha karmaşık bir şey elde etmek için her zaman programlamanın temellerine ihtiyacınız olacağını düşünüyorum.

Ancak, bir temel sınıftan türetiyorsanız, bariz şeyleri dahil etmenin gerekli olması gerektiğine katılıyorum ...

Muhtemelen haklısınız, ancak MQL5 Wizard 'ın öncelikle kodlayıcı olmayanlar için tasarlandığını sanıyordum. Her neyse, sorun burada bir hata gibi, çünkü Sihirbaz tarafından oluşturulan kodu derlemek için manuel olarak kod eklemeniz gerekiyor.

MQL5 Wizard: Creating Expert Advisors without Programming
  • 2011.01.11
  • MetaQuotes Software Corp.
  • www.mql5.com
Do you want to try out a trading strategy while wasting no time for programming? In MQL5 Wizard you can simply select the type of trading signals, add modules of trailing positions and money management - and your work is done! Create your own implementations of modules or order them via the Jobs service - and combine your new modules with existing ones.
 

Kullanıcı GUI'leri (paneller) kütüphanesinde bence oldukça başarılı olmayan olay modelinin kopyalandığını fark ettim:

void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
{
    ...
}

İlk olarak, tüm olaylar int, long, double ve string'e karşılık gelen bir dizi değişkene sahip değildir. Bir yerde olayı tanımlayan daha fazla değişken olabilir, bir yerde daha az, bir yerde önerilen temel tiplerle örtüşmezler. Aslında, int -> bool, string -> int, double -> int, vb. gibi sürekli dönüşümler görüyoruz. Ve eğer prosedürel programlama açısından pratikte yapabileceğiniz hiçbir şey yoksa (çünkü her varsayımsal durum için 1 000 000 aşırı yüklenmiş fonksiyon yaratmayacaksınız), o zaman OOP çerçevesinde her şey çok daha kolay ve daha zarif yapılabilir.

Ancak OnEvent'in temel sorunu, bu olay işleyicinin grafikten alınan olayları ele almak için tasarlanmış olmasıdır, oysa olay yeni bir pozisyon açmak veya kotasyonları değiştirmek gibi herhangi bir şey olabilir. Genel olarak, OnEvent(...) bir şekilde evrensel bir olay işleyicisi gibi görünmüyor, IMHO. Belki de geliştiriciler bir şekilde mevcut CWnd temelinde kendi olaylarını ele almayı başardılar, ancak benim için standart panel kütüphanesini kullanmak hala sorunlu.

Как использовать торговые классы Стандартной библиотеки при написании советника
Как использовать торговые классы Стандартной библиотеки при написании советника
  • 2010.11.10
  • Samuel
  • www.mql5.com
В статье рассказывается о том, как использовать основной функционал торговых классов Стандартной библиотеки при написании советников, в которых применяется открытие, закрытие и модификация позиции, проверка свободной маржи перед размещением торговых ордеров, размещение и удаление отложенных ордеров. Показано, как использовать торговые классы для получения свойств ордеров и сделок.
 

Teşekkürler, inceledim, faydalı! Birkaç dakika: panellerin VS'deki gibi form yapıcıda birleştirilebilmesi için bir tür yapıcı oluşturma planları var mı? çünkü her şeyi elle saymak pek uygun değil, belki de profesyonelliğin bir işaretidir, ancak uzun zaman alıyor)).

makrolarla açıkça aşırıya kaçmışlar ...