Kitle kaynaklı GUI. Açık beta testi.

Реter Konow  

Topluluğa ücretsiz kullanım için MQL programları için bir GUI kurucusu sunuyorum.

  • Geliştirmesini merkezileştirmek ve sürümleri dağıtırken karışıklığı ortadan kaldırmak için GUI yapıcısını kapalı bir .ex5 dosyası olarak veriyorum.
  • GUI motorunu açık bir .mqh dosyasıyla ekliyorum, AMA! - Bana danışmadan, kendi takdirinize bağlı olarak kodu değiştirmenizi önermiyorum, çünkü bu, hatalara ve işlevsellik kaybına yol açabilir.
  • Lütfen hataları ve eksiklikleri bildirin.

yapıcı katılım için.

Not: Proje kitle kaynaklıdır, yani onu birlikte uygulayacağız.

//------------------------------------------------ -------------------------------------------------- ---------------

TOPLANTI:

  • Uzman Danışman KIB.ex5 - GUI yapıcısı.
  • GUI_DRIVE.mqh dosyası, kullanıcı uygulamasındaki GUI motorudur. Dosya tarafından eklenmiştir.
  • KIB-source.mqh göstergesi - işaretleme kodunun kullanıcı proje dosyalarından yapıcıya aktarılması.

KURULUM TALİMATLARI:

Adım 1 - ambalajın açılması:

  • KIB.ex5 Expert Advisor'ı Experts klasörüne yerleştirin. (Alt klasörlere koymayın).
  • GUI_DRIVE.mqh dosyasını içerme klasörüne yerleştirin. (Alt klasörlere koymayın).
  • KIB-source.mqh göstergesini Göstergeler klasörüne yerleştirin. (Alt klasörlere koymayın).

Adım 2 - dosyaların yüklenmesi:

  • KIB.ex5 Expert Advisor'ı ücretsiz bir çizelgeye kurun.
  • Gösterge KIB-source.mqh'yi MetaEditor'da açın ve .ex5 dosyasını almak için derleyin.
  • Ortaya çıkan KIB-source.ex5 dosyasını, KIB.ex5 Expert Advisor'ın bulunduğu tabloya kurun.

Adım 3 - işe hazırlık:

  • Yeni GUI projeniz için içerme klasörünün içinde bir "Projelerim" klasörü oluşturun.
  • İşaretleme yazmak için bir Window_1.mqh dosyası oluşturun. Bu dosyayı açın.
  • Bu dosyanın bağlantısını "source" dizi başlatma içinde KIB-source.mqh dosyasının alt kısmında belirtin (#include <MyProjects\Window_1.mqh>).

Adım 4 - Başlarken:

  • En basit kodu yazın:

 //----------------------------------------------------------------------------------
NEW_WINDOW,  W_NAME, " Hello World! " ,  W_ICON, "::Images\\16x16\\Folder.bmp" ,  W_TYPE, SETTINGS, ALWAYS_ON_TOP,
//----------------------------------------------------------------------------------
GROUP, "Кнопка" ,

__,BUTTON, "Hello World!" ,

END_GROUP,
//--------------------------
i, AT, _X2X, "MF" , 10 , _Y2Y, "MF" , 10 ,
//----------------------------------------------------------------------------------
END_WINDOW,

  • KIB-source.mqh dosyasını derleyin. Grafikte düğmeli bir pencere görünmelidir.

Adım 5 - özel bir GUI tasarlama:

  • Ek bir dalda, istediğiniz GUI'yi oluşturmanıza yardımcı olmak için öğreticiler ve kod örnekleri sağlanacaktır.

Adım 6 - Özel GUI'yi Kaydetme:

  • Grafiğe çift tıklayarak yapıcının bağlam menüsünü çağırın.
  • Son "Projeyi kaydet ve API dosyasını yazdır" öğesini seçin.
  • "Files" klasörüne iki dosya kaydedilecektir: "CORES.mqh" ve "Internal_API.mqh".
  • Bu dosyaları "Files" klasöründen Projelerim klasörüne manuel olarak aktarın.
  • Proje kaydedilir.

Adım 7 - Özel GUI'yi Uzman Danışmana Bağlama:

 //+------------------------------------------------------------------+
//|                                                   GUI Expert.mq5 |
//|                                                      Peter Konow |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Peter Konow"
//--------------------------------------------------------------------
#include<GUI_DRIVE.mqh>
#include<MyProject_1\CORES.mqh>
#include<MyProject_1\Internal_API.mqh> 
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit ()
  {
   //--- create timer
   EventSetMillisecondTimer ( 25 );
   //-------------------------
   D_OnInit();
   //-------------------------
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {
//--- destroy timer
   EventKillTimer ();
   //-------------------------
   D_OnDeinit();
   //-------------------------
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick ()
  {
//---
   
  }
//+------------------------------------------------------------------+
//| Timer function                                                   |
//+------------------------------------------------------------------+
void OnTimer ()
  {
   //ВАШ КОД-----------------
   //ВАШ КОД-----------------
   //ВАШ КОД-----------------
   //ВАШ КОД-----------------
   //ВАШ КОД-----------------
   //УСТАНОВИТЬ ВЫЗОВ В САМОМ НИЗУ, ПОД ПОЛЬЗ.КОДОМ.------------------
   //---------------------------
   RMSG( 1 );
   //---------------------------
  }
//+------------------------------------------------------------------+
//| ChartEvent function                                              |
//+------------------------------------------------------------------+
void OnChartEvent ( const int id,
                   const long &lparam,
                   const double &dparam,
                   const string &sparam)
  {
   //УСТАНОВИТЬ ВЫЗОВ НА САМОМ ВЕРХУ, НАД ПОЛЬЗ.КОДОМ.---------------
   //----------------------------------------------------------------
   D_OnChartEvent(id,lparam,dparam,sparam);
   //----------------------------------------------------------------
  }
//+------------------------------------------------------------------+


Adım 8 - kontrollerden olay alma:

  • Olaylar "Internal_API.mqh" dosyası içindeki fonksiyona gelir.

 //========================================================================================================= 
void On_Gui_Event( int Element, string value , double Magic = 0 )
{
 string action = value , selected_option = value ; //DON'T CHANGE THIS LINE
//------------------------------------
 switch (Element)
   {
//=====================================================================================================================
//WINDOW:   Checkboxes | element: CHECKBOX  | name: Checkbox 1  |  Location: Window's Main Frame
//=====================================================================================================================
case CHECKBOX3___Checkbox_1:
               //------------------------------------------------------------------------------------------------------
               //What to do when checkbox checked or unchecked?
               //------------------------------------------------------------------------------------------------------
               switch (( int )action)
               {
                 case checked :     break ;
  
                 case unchecked :     break ;
               }
               //------------------------------------------------------------------------------------------------------
               //Your comment:
               //------------------------------------------------------------------------------------------------------
               break ;
  
...

  • Durumlarında kullanıcı işlevselliğinin gerekli tepkilerini yazın.


not. Yapıcının tümleşik kaynaklara sahip derlenmiş bir sürümü blogda bulunmaktadır: https://www.mql5.com/ru/blogs/post/733356

Bu sürümde sadece açık kaynak var, çünkü kaynaklar farklı klasörlerde (sesler ve resimlerle iç içe alt klasörler) ve çok fazla açıklama ile her şeyi buraya aktarmanın bir anlamı yok.

Документация по MQL5: Операции с массивами / ArrayInitialize
Документация по MQL5: Операции с массивами / ArrayInitialize
  • www.mql5.com
Функция ArrayResize() позволяет задать для массива размер с некоторым запасом для его будущего увеличения без физического перераспределения памяти. Это сделано для улучшения быстродействия, так как операции по распределению памяти...
Dosyalar:
KIB-source.mq5  132 kb
GUI_DRIVE.mqh  2013 kb
KIB.zip  1470 kb
Реter Konow  
Vladimir Karputov :

Kapalı kod -> Pazar.

Açık kaynak -> Forum.

İyi. Yapıcının açık kaynak kodunu göndereceğim. Ama saçını taramak için birkaç güne ihtiyacım var. beklemeye hazır mısın?

Vladimir Karputov  
Реter Konow :

İyi. Yapıcının açık kaynak kodunu göndereceğim. Ama saçını taramak için birkaç güne ihtiyacım var. beklemeye hazır mısın?

Konunuz hiçbir yere gitmiyor.

Aleksei Beliakov  
Dmitriy Skub :
"Sho? Yine mi?!))
Henüz taranmadı, bekle
Реter Konow  
Vladimir Karputov :

Bu arada, bir Proje oluşturmaya çalışın:


İyi. Sadece açıklayacağım. Yapıcının veya motorun kendisinin kodu 20.000'den fazla kod satırıdır. Bu başlıkta, insanlara tasarımcının kodlarını anlamadan, biçimlendirme dilinde nasıl GUI oluşturulacağını öğretmek istedim. Bu nedenle, kullanıcıların rahatlığı için yapıcı kodunu tek bir dosyada düzenlemek istiyorum.

Vladimir Karputov  
Реter Konow :

İyi. Sadece açıklayacağım. Yapıcının veya motorun kendisinin kodu 20.000'den fazla kod satırıdır. Bu başlıkta, insanlara tasarımcının kodlarını anlamadan, biçimlendirme dilinde nasıl GUI oluşturulacağını öğretmek istedim. Bu nedenle, kullanıcıların rahatlığı için yapıcı kodunu tek bir dosyada düzenlemek istiyorum.

Hayır. Böylece her Market satıcısı, "En iyi danışmanımı test et" gibi kendi şubesini başlatacak.

Реter Konow  
Vladimir Karputov :

Hayır. Böylece her Market satıcısı, "En iyi danışmanımı test et" gibi kendi şubesini başlatacak.

TAMAM. Fark yok. olduğu gibi yayınlayacağım.

Igor Makanu  
Реter Konow :

Not: Proje kitle kaynaklıdır, yani onu birlikte uygulayacağız.

ve bu projede en azından kitle kaynağı nedir veya ne olacak?

bence, birleşecek ve üretime "kodu bitirecek" değil (kod ücretsiz olsa bile) testçiler arıyorsunuz.

Neden: